homeassistant 2025.7.0b5__py3-none-any.whl → 2025.7.0b6__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (385) hide show
  1. homeassistant/components/accuweather/translations/it.json +31 -6
  2. homeassistant/components/accuweather/translations/nl.json +4 -2
  3. homeassistant/components/ai_task/translations/nl.json +11 -1
  4. homeassistant/components/airgradient/translations/it.json +11 -1
  5. homeassistant/components/airzone/translations/it.json +1 -1
  6. homeassistant/components/airzone_cloud/translations/it.json +7 -0
  7. homeassistant/components/alexa_devices/translations/id.json +14 -0
  8. homeassistant/components/alexa_devices/translations/it.json +53 -0
  9. homeassistant/components/alexa_devices/translations/nl.json +23 -0
  10. homeassistant/components/altruist/translations/id.json +7 -0
  11. homeassistant/components/altruist/translations/it.json +51 -0
  12. homeassistant/components/anthropic/__init__.py +30 -0
  13. homeassistant/components/anthropic/config_flow.py +1 -0
  14. homeassistant/components/anthropic/translations/nl.json +1 -0
  15. homeassistant/components/aprilaire/translations/it.json +14 -14
  16. homeassistant/components/aquacell/translations/it.json +6 -1
  17. homeassistant/components/aranet/translations/it.json +9 -0
  18. homeassistant/components/assist_satellite/translations/es.json +1 -1
  19. homeassistant/components/assist_satellite/translations/it.json +30 -0
  20. homeassistant/components/automation/translations/it.json +2 -2
  21. homeassistant/components/baf/translations/it.json +11 -0
  22. homeassistant/components/balboa/translations/it.json +5 -1
  23. homeassistant/components/binary_sensor/translations/es.json +3 -3
  24. homeassistant/components/binary_sensor/translations/it.json +13 -6
  25. homeassistant/components/blue_current/translations/it.json +16 -0
  26. homeassistant/components/bmw_connected_drive/translations/it.json +7 -0
  27. homeassistant/components/bmw_connected_drive/translations/nl.json +57 -1
  28. homeassistant/components/calendar/translations/it.json +2 -2
  29. homeassistant/components/cambridge_audio/translations/it.json +2 -2
  30. homeassistant/components/camera/translations/it.json +2 -2
  31. homeassistant/components/climate/translations/it.json +20 -9
  32. homeassistant/components/comelit/translations/it.json +13 -0
  33. homeassistant/components/cover/translations/it.json +3 -1
  34. homeassistant/components/demo/translations/it.json +6 -3
  35. homeassistant/components/drop_connect/sensor.py +1 -1
  36. homeassistant/components/drop_connect/translations/it.json +12 -0
  37. homeassistant/components/drop_connect/translations/nl.json +5 -0
  38. homeassistant/components/dsmr/translations/it.json +5 -1
  39. homeassistant/components/dsmr_reader/translations/it.json +5 -1
  40. homeassistant/components/ecoforest/translations/it.json +2 -2
  41. homeassistant/components/ecovacs/translations/it.json +14 -0
  42. homeassistant/components/ecovacs/translations/nl.json +4 -0
  43. homeassistant/components/enphase_envoy/translations/bg.json +0 -1
  44. homeassistant/components/enphase_envoy/translations/cs.json +0 -1
  45. homeassistant/components/enphase_envoy/translations/el.json +0 -1
  46. homeassistant/components/enphase_envoy/translations/et.json +0 -1
  47. homeassistant/components/enphase_envoy/translations/hu.json +0 -1
  48. homeassistant/components/enphase_envoy/translations/it.json +3 -0
  49. homeassistant/components/enphase_envoy/translations/ja.json +0 -1
  50. homeassistant/components/enphase_envoy/translations/lt.json +0 -1
  51. homeassistant/components/enphase_envoy/translations/pt-BR.json +0 -1
  52. homeassistant/components/enphase_envoy/translations/pt.json +0 -1
  53. homeassistant/components/enphase_envoy/translations/ru.json +0 -1
  54. homeassistant/components/enphase_envoy/translations/sv.json +0 -1
  55. homeassistant/components/enphase_envoy/translations/tr.json +0 -1
  56. homeassistant/components/esphome/entity.py +1 -1
  57. homeassistant/components/esphome/sensor.py +3 -2
  58. homeassistant/components/ezviz/translations/nl.json +10 -0
  59. homeassistant/components/fan/translations/it.json +2 -2
  60. homeassistant/components/flipr/translations/it.json +8 -0
  61. homeassistant/components/fronius/translations/it.json +4 -0
  62. homeassistant/components/frontend/manifest.json +1 -1
  63. homeassistant/components/fyta/translations/it.json +8 -0
  64. homeassistant/components/google_generative_ai_conversation/__init__.py +46 -0
  65. homeassistant/components/google_generative_ai_conversation/config_flow.py +1 -0
  66. homeassistant/components/google_generative_ai_conversation/translations/nl.json +3 -0
  67. homeassistant/components/google_mail/translations/it.json +7 -1
  68. homeassistant/components/google_photos/translations/it.json +6 -0
  69. homeassistant/components/google_sheets/translations/it.json +6 -0
  70. homeassistant/components/google_tasks/translations/it.json +3 -0
  71. homeassistant/components/group/translations/it.json +2 -2
  72. homeassistant/components/hive/translations/it.json +4 -3
  73. homeassistant/components/home_connect/translations/it.json +125 -30
  74. homeassistant/components/homeassistant/translations/it.json +3 -0
  75. homeassistant/components/homeassistant/translations/nl.json +1 -0
  76. homeassistant/components/homeassistant_hardware/translations/es.json +1 -0
  77. homeassistant/components/homeassistant_hardware/translations/it.json +2 -1
  78. homeassistant/components/homeassistant_hardware/translations/nl.json +4 -0
  79. homeassistant/components/homeassistant_hardware/translations/sk.json +1 -0
  80. homeassistant/components/homeassistant_hardware/translations/zh-Hans.json +1 -0
  81. homeassistant/components/homeassistant_hardware/translations/zh-Hant.json +1 -0
  82. homeassistant/components/homeassistant_sky_connect/translations/es.json +2 -0
  83. homeassistant/components/homeassistant_sky_connect/translations/it.json +2 -0
  84. homeassistant/components/homeassistant_sky_connect/translations/nl.json +4 -0
  85. homeassistant/components/homeassistant_sky_connect/translations/sk.json +2 -0
  86. homeassistant/components/homeassistant_sky_connect/translations/zh-Hans.json +2 -0
  87. homeassistant/components/homeassistant_sky_connect/translations/zh-Hant.json +2 -0
  88. homeassistant/components/homeassistant_yellow/translations/es.json +1 -0
  89. homeassistant/components/homeassistant_yellow/translations/it.json +1 -0
  90. homeassistant/components/homeassistant_yellow/translations/nl.json +2 -0
  91. homeassistant/components/homeassistant_yellow/translations/sk.json +1 -0
  92. homeassistant/components/homeassistant_yellow/translations/zh-Hans.json +1 -0
  93. homeassistant/components/homeassistant_yellow/translations/zh-Hant.json +1 -0
  94. homeassistant/components/homee/translations/it.json +54 -1
  95. homeassistant/components/homekit_controller/translations/it.json +4 -2
  96. homeassistant/components/homewizard/translations/it.json +15 -0
  97. homeassistant/components/huawei_lte/translations/it.json +5 -1
  98. homeassistant/components/humidifier/translations/it.json +6 -3
  99. homeassistant/components/husqvarna_automower/const.py +12 -0
  100. homeassistant/components/husqvarna_automower/lawn_mower.py +15 -5
  101. homeassistant/components/husqvarna_automower/sensor.py +2 -16
  102. homeassistant/components/husqvarna_automower/translations/it.json +3 -1
  103. homeassistant/components/husqvarna_automower/translations/nl.json +122 -2
  104. homeassistant/components/husqvarna_automower_ble/translations/nl.json +12 -0
  105. homeassistant/components/immich/translations/id.json +6 -0
  106. homeassistant/components/incomfort/translations/it.json +2 -1
  107. homeassistant/components/input_boolean/translations/it.json +2 -2
  108. homeassistant/components/iotty/translations/it.json +6 -0
  109. homeassistant/components/ipp/translations/it.json +2 -1
  110. homeassistant/components/iron_os/translations/it.json +12 -6
  111. homeassistant/components/jvc_projector/translations/it.json +2 -1
  112. homeassistant/components/knx/translations/it.json +3 -1
  113. homeassistant/components/lamarzocco/translations/it.json +5 -0
  114. homeassistant/components/lametric/translations/it.json +11 -1
  115. homeassistant/components/lawn_mower/translations/it.json +1 -0
  116. homeassistant/components/lektrico/translations/it.json +5 -1
  117. homeassistant/components/lg_thinq/translations/bg.json +1 -5
  118. homeassistant/components/lg_thinq/translations/cs.json +1 -3
  119. homeassistant/components/lg_thinq/translations/et.json +1 -3
  120. homeassistant/components/lg_thinq/translations/hu.json +1 -3
  121. homeassistant/components/lg_thinq/translations/it.json +77 -21
  122. homeassistant/components/lg_thinq/translations/ja.json +1 -5
  123. homeassistant/components/lg_thinq/translations/ko.json +1 -5
  124. homeassistant/components/lg_thinq/translations/lt.json +1 -3
  125. homeassistant/components/lg_thinq/translations/nl.json +1 -3
  126. homeassistant/components/lg_thinq/translations/pt-BR.json +1 -5
  127. homeassistant/components/lg_thinq/translations/pt.json +1 -3
  128. homeassistant/components/lg_thinq/translations/ru.json +1 -3
  129. homeassistant/components/lg_thinq/translations/sk.json +1 -1
  130. homeassistant/components/lg_thinq/translations/sv.json +1 -3
  131. homeassistant/components/lg_thinq/translations/tr.json +1 -5
  132. homeassistant/components/light/translations/it.json +6 -3
  133. homeassistant/components/litterrobot/translations/cs.json +0 -1
  134. homeassistant/components/litterrobot/translations/en-GB.json +0 -1
  135. homeassistant/components/litterrobot/translations/et.json +0 -1
  136. homeassistant/components/litterrobot/translations/ga.json +0 -1
  137. homeassistant/components/litterrobot/translations/hu.json +0 -1
  138. homeassistant/components/litterrobot/translations/it.json +14 -3
  139. homeassistant/components/litterrobot/translations/lt.json +0 -1
  140. homeassistant/components/litterrobot/translations/nl.json +0 -1
  141. homeassistant/components/litterrobot/translations/pt-BR.json +0 -1
  142. homeassistant/components/litterrobot/translations/pt.json +0 -1
  143. homeassistant/components/litterrobot/translations/ru.json +0 -1
  144. homeassistant/components/litterrobot/translations/sensor.it.json +1 -1
  145. homeassistant/components/litterrobot/translations/sk.json +0 -1
  146. homeassistant/components/litterrobot/translations/sv.json +0 -1
  147. homeassistant/components/litterrobot/translations/tr.json +0 -1
  148. homeassistant/components/litterrobot/translations/zh-Hans.json +0 -1
  149. homeassistant/components/litterrobot/translations/zh-Hant.json +0 -1
  150. homeassistant/components/lutron_caseta/translations/it.json +2 -2
  151. homeassistant/components/lyric/translations/it.json +9 -0
  152. homeassistant/components/matter/translations/id.json +5 -0
  153. homeassistant/components/matter/translations/it.json +69 -5
  154. homeassistant/components/meater/translations/it.json +12 -1
  155. homeassistant/components/media_player/translations/it.json +6 -5
  156. homeassistant/components/meteo_france/weather.py +9 -3
  157. homeassistant/components/microbees/translations/it.json +6 -0
  158. homeassistant/components/miele/translations/it.json +9 -3
  159. homeassistant/components/monzo/translations/it.json +6 -0
  160. homeassistant/components/motionblinds_ble/translations/it.json +14 -1
  161. homeassistant/components/mqtt/config_flow.py +4 -5
  162. homeassistant/components/mqtt/translations/it.json +2 -1
  163. homeassistant/components/music_assistant/translations/it.json +7 -0
  164. homeassistant/components/myuplink/translations/it.json +6 -0
  165. homeassistant/components/nam/__init__.py +0 -9
  166. homeassistant/components/nam/config_flow.py +22 -43
  167. homeassistant/components/nam/manifest.json +1 -1
  168. homeassistant/components/nam/translations/it.json +57 -3
  169. homeassistant/components/nam/translations/nl.json +21 -1
  170. homeassistant/components/neato/translations/it.json +6 -0
  171. homeassistant/components/nest/translations/it.json +6 -0
  172. homeassistant/components/netatmo/translations/it.json +7 -0
  173. homeassistant/components/nextdns/translations/it.json +8 -0
  174. homeassistant/components/ntfy/translations/id.json +2 -1
  175. homeassistant/components/ntfy/translations/it.json +15 -1
  176. homeassistant/components/ntfy/translations/nl.json +2 -1
  177. homeassistant/components/nuki/translations/it.json +14 -0
  178. homeassistant/components/nut/translations/it.json +4 -3
  179. homeassistant/components/ohme/translations/it.json +6 -0
  180. homeassistant/components/ollama/__init__.py +30 -0
  181. homeassistant/components/ollama/config_flow.py +1 -0
  182. homeassistant/components/ollama/translations/nl.json +12 -1
  183. homeassistant/components/ondilo_ico/translations/it.json +6 -0
  184. homeassistant/components/onedrive/translations/it.json +15 -0
  185. homeassistant/components/openai_conversation/__init__.py +30 -0
  186. homeassistant/components/openai_conversation/config_flow.py +1 -0
  187. homeassistant/components/openai_conversation/translations/it.json +16 -0
  188. homeassistant/components/openai_conversation/translations/nl.json +2 -1
  189. homeassistant/components/opentherm_gw/translations/es.json +3 -0
  190. homeassistant/components/opentherm_gw/translations/it.json +5 -0
  191. homeassistant/components/opentherm_gw/translations/nl.json +5 -0
  192. homeassistant/components/opentherm_gw/translations/sk.json +3 -0
  193. homeassistant/components/opentherm_gw/translations/zh-Hans.json +3 -0
  194. homeassistant/components/opentherm_gw/translations/zh-Hant.json +3 -0
  195. homeassistant/components/openuv/translations/it.json +4 -1
  196. homeassistant/components/osoenergy/translations/it.json +14 -0
  197. homeassistant/components/overkiz/translations/ca.json +0 -5
  198. homeassistant/components/overkiz/translations/cs.json +0 -1
  199. homeassistant/components/overkiz/translations/el.json +0 -1
  200. homeassistant/components/overkiz/translations/et.json +0 -1
  201. homeassistant/components/overkiz/translations/fi.json +0 -5
  202. homeassistant/components/overkiz/translations/fr.json +0 -1
  203. homeassistant/components/overkiz/translations/hu.json +0 -1
  204. homeassistant/components/overkiz/translations/id.json +0 -1
  205. homeassistant/components/overkiz/translations/it.json +11 -2
  206. homeassistant/components/overkiz/translations/ja.json +0 -5
  207. homeassistant/components/overkiz/translations/ko.json +0 -5
  208. homeassistant/components/overkiz/translations/lt.json +0 -1
  209. homeassistant/components/overkiz/translations/lv.json +0 -5
  210. homeassistant/components/overkiz/translations/nb.json +0 -5
  211. homeassistant/components/overkiz/translations/nl.json +0 -1
  212. homeassistant/components/overkiz/translations/pl.json +0 -5
  213. homeassistant/components/overkiz/translations/pt-BR.json +0 -5
  214. homeassistant/components/overkiz/translations/pt.json +0 -1
  215. homeassistant/components/overkiz/translations/ro.json +0 -5
  216. homeassistant/components/overkiz/translations/ru.json +0 -1
  217. homeassistant/components/overkiz/translations/sv.json +0 -1
  218. homeassistant/components/overkiz/translations/tr.json +0 -5
  219. homeassistant/components/overkiz/translations/uk.json +0 -5
  220. homeassistant/components/overkiz/translations/zh-Hans.json +0 -1
  221. homeassistant/components/palazzetti/translations/it.json +4 -0
  222. homeassistant/components/paperless_ngx/translations/it.json +50 -0
  223. homeassistant/components/peblar/translations/it.json +3 -1
  224. homeassistant/components/playstation_network/manifest.json +15 -0
  225. homeassistant/components/playstation_network/translations/nl.json +29 -0
  226. homeassistant/components/plugwise/translations/it.json +12 -3
  227. homeassistant/components/point/translations/it.json +6 -0
  228. homeassistant/components/prusalink/translations/it.json +3 -1
  229. homeassistant/components/qbittorrent/translations/it.json +6 -0
  230. homeassistant/components/qbus/translations/nl.json +17 -0
  231. homeassistant/components/remote/translations/it.json +2 -2
  232. homeassistant/components/renault/translations/it.json +1 -0
  233. homeassistant/components/renson/translations/it.json +4 -4
  234. homeassistant/components/renson/translations/nl.json +85 -18
  235. homeassistant/components/reolink/translations/it.json +28 -13
  236. homeassistant/components/rfxtrx/translations/it.json +4 -1
  237. homeassistant/components/roborock/translations/it.json +11 -2
  238. homeassistant/components/romy/translations/it.json +13 -0
  239. homeassistant/components/russound_rio/translations/it.json +21 -0
  240. homeassistant/components/samsungtv/translations/nl.json +24 -1
  241. homeassistant/components/schedule/translations/it.json +2 -2
  242. homeassistant/components/schlage/translations/it.json +1 -0
  243. homeassistant/components/script/translations/it.json +2 -2
  244. homeassistant/components/sensibo/translations/it.json +43 -28
  245. homeassistant/components/sensor/translations/it.json +2 -2
  246. homeassistant/components/senz/translations/it.json +6 -0
  247. homeassistant/components/shelly/translations/it.json +5 -2
  248. homeassistant/components/siren/translations/it.json +2 -2
  249. homeassistant/components/sleepiq/translations/it.json +12 -0
  250. homeassistant/components/smappee/translations/it.json +6 -0
  251. homeassistant/components/smartthings/translations/it.json +40 -11
  252. homeassistant/components/snoo/translations/it.json +16 -0
  253. homeassistant/components/solaredge/translations/nl.json +42 -0
  254. homeassistant/components/spotify/translations/it.json +6 -0
  255. homeassistant/components/sun/translations/nl.json +6 -0
  256. homeassistant/components/switch/translations/it.json +6 -6
  257. homeassistant/components/switchbot/translations/es.json +1 -0
  258. homeassistant/components/switchbot/translations/it.json +10 -0
  259. homeassistant/components/switchbot/translations/nl.json +25 -1
  260. homeassistant/components/switchbot/translations/zh-Hans.json +1 -0
  261. homeassistant/components/tado/translations/it.json +11 -0
  262. homeassistant/components/telegram_bot/config_flow.py +4 -7
  263. homeassistant/components/telegram_bot/translations/it.json +28 -1
  264. homeassistant/components/telegram_bot/translations/nl.json +30 -0
  265. homeassistant/components/tesla_fleet/translations/ca.json +0 -3
  266. homeassistant/components/tesla_fleet/translations/cs.json +0 -3
  267. homeassistant/components/tesla_fleet/translations/el.json +0 -3
  268. homeassistant/components/tesla_fleet/translations/en-GB.json +0 -3
  269. homeassistant/components/tesla_fleet/translations/en.json +1 -1
  270. homeassistant/components/tesla_fleet/translations/es.json +1 -1
  271. homeassistant/components/tesla_fleet/translations/et.json +0 -3
  272. homeassistant/components/tesla_fleet/translations/fy.json +0 -3
  273. homeassistant/components/tesla_fleet/translations/hu.json +0 -3
  274. homeassistant/components/tesla_fleet/translations/it.json +78 -12
  275. homeassistant/components/tesla_fleet/translations/ja.json +0 -3
  276. homeassistant/components/tesla_fleet/translations/lt.json +0 -3
  277. homeassistant/components/tesla_fleet/translations/pt.json +0 -3
  278. homeassistant/components/tesla_fleet/translations/ru.json +0 -3
  279. homeassistant/components/tesla_fleet/translations/sk.json +1 -1
  280. homeassistant/components/tesla_fleet/translations/sv.json +0 -3
  281. homeassistant/components/tesla_fleet/translations/tr.json +0 -3
  282. homeassistant/components/tesla_fleet/translations/zh-Hans.json +0 -3
  283. homeassistant/components/tesla_fleet/translations/zh-Hant.json +0 -3
  284. homeassistant/components/tesla_wall_connector/translations/it.json +2 -1
  285. homeassistant/components/teslemetry/translations/it.json +149 -11
  286. homeassistant/components/teslemetry/translations/nl.json +6 -3
  287. homeassistant/components/tessie/translations/it.json +49 -11
  288. homeassistant/components/tilt_pi/translations/id.json +10 -0
  289. homeassistant/components/tilt_pi/translations/it.json +31 -0
  290. homeassistant/components/tolo/translations/it.json +2 -1
  291. homeassistant/components/tomorrowio/translations/it.json +22 -4
  292. homeassistant/components/toon/translations/it.json +6 -0
  293. homeassistant/components/tplink_omada/translations/it.json +1 -0
  294. homeassistant/components/traccar_server/translations/it.json +1 -0
  295. homeassistant/components/tuya/translations/it.json +17 -9
  296. homeassistant/components/tuya/translations/select.it.json +5 -5
  297. homeassistant/components/twinkly/translations/it.json +1 -1
  298. homeassistant/components/unifi/translations/nl.json +3 -1
  299. homeassistant/components/unifiprotect/translations/nl.json +284 -1
  300. homeassistant/components/vacuum/translations/it.json +3 -2
  301. homeassistant/components/vallox/translations/it.json +3 -1
  302. homeassistant/components/valve/translations/it.json +2 -1
  303. homeassistant/components/vegehub/translations/nl.json +3 -0
  304. homeassistant/components/venstar/translations/it.json +5 -0
  305. homeassistant/components/vesync/translations/it.json +19 -0
  306. homeassistant/components/vicare/translations/it.json +21 -2
  307. homeassistant/components/wallbox/translations/it.json +12 -0
  308. homeassistant/components/water_heater/translations/it.json +3 -3
  309. homeassistant/components/webdav/config_flow.py +7 -1
  310. homeassistant/components/webdav/strings.json +1 -3
  311. homeassistant/components/webdav/translations/cs.json +0 -3
  312. homeassistant/components/webdav/translations/de.json +1 -3
  313. homeassistant/components/webdav/translations/en-GB.json +0 -3
  314. homeassistant/components/webdav/translations/en.json +1 -3
  315. homeassistant/components/webdav/translations/es.json +1 -3
  316. homeassistant/components/webdav/translations/et.json +0 -3
  317. homeassistant/components/webdav/translations/fr.json +0 -3
  318. homeassistant/components/webdav/translations/ga.json +0 -3
  319. homeassistant/components/webdav/translations/hu.json +0 -3
  320. homeassistant/components/webdav/translations/it.json +1 -0
  321. homeassistant/components/webdav/translations/ja.json +0 -3
  322. homeassistant/components/webdav/translations/lt.json +0 -3
  323. homeassistant/components/webdav/translations/nl.json +0 -3
  324. homeassistant/components/webdav/translations/pt-BR.json +0 -3
  325. homeassistant/components/webdav/translations/pt.json +0 -3
  326. homeassistant/components/webdav/translations/ru.json +0 -3
  327. homeassistant/components/webdav/translations/sk.json +1 -3
  328. homeassistant/components/webdav/translations/sl.json +0 -5
  329. homeassistant/components/webdav/translations/sv.json +0 -3
  330. homeassistant/components/webdav/translations/tr.json +0 -3
  331. homeassistant/components/webdav/translations/zh-Hans.json +0 -3
  332. homeassistant/components/webdav/translations/zh-Hant.json +1 -3
  333. homeassistant/components/weheat/translations/it.json +6 -0
  334. homeassistant/components/whirlpool/translations/ca.json +0 -1
  335. homeassistant/components/whirlpool/translations/cs.json +0 -1
  336. homeassistant/components/whirlpool/translations/el.json +0 -1
  337. homeassistant/components/whirlpool/translations/et.json +0 -1
  338. homeassistant/components/whirlpool/translations/fi.json +0 -1
  339. homeassistant/components/whirlpool/translations/fr.json +0 -1
  340. homeassistant/components/whirlpool/translations/hu.json +0 -1
  341. homeassistant/components/whirlpool/translations/id.json +0 -1
  342. homeassistant/components/whirlpool/translations/it.json +1 -1
  343. homeassistant/components/whirlpool/translations/ja.json +0 -1
  344. homeassistant/components/whirlpool/translations/ko.json +0 -1
  345. homeassistant/components/whirlpool/translations/lt.json +0 -1
  346. homeassistant/components/whirlpool/translations/lv.json +0 -1
  347. homeassistant/components/whirlpool/translations/nb.json +0 -1
  348. homeassistant/components/whirlpool/translations/nl.json +0 -1
  349. homeassistant/components/whirlpool/translations/pl.json +0 -1
  350. homeassistant/components/whirlpool/translations/pt-BR.json +0 -1
  351. homeassistant/components/whirlpool/translations/pt.json +0 -1
  352. homeassistant/components/whirlpool/translations/ro.json +0 -1
  353. homeassistant/components/whirlpool/translations/ru.json +0 -1
  354. homeassistant/components/whirlpool/translations/sv.json +0 -1
  355. homeassistant/components/whirlpool/translations/tr.json +0 -1
  356. homeassistant/components/whirlpool/translations/uk.json +0 -1
  357. homeassistant/components/whirlpool/translations/zh-Hans.json +0 -1
  358. homeassistant/components/whirlpool/translations/zh-Hant.json +1 -1
  359. homeassistant/components/withings/translations/it.json +15 -1
  360. homeassistant/components/wled/translations/it.json +2 -2
  361. homeassistant/components/wolflink/translations/it.json +5 -0
  362. homeassistant/components/wyoming/translations/it.json +1 -1
  363. homeassistant/components/xbox/translations/it.json +6 -0
  364. homeassistant/components/xiaomi_miio/translations/it.json +11 -2
  365. homeassistant/components/yale/translations/it.json +6 -0
  366. homeassistant/components/yale_smart_alarm/translations/it.json +3 -1
  367. homeassistant/components/yamaha/translations/it.json +1 -1
  368. homeassistant/components/yamaha_musiccast/__init__.py +3 -2
  369. homeassistant/components/yamaha_musiccast/config_flow.py +5 -4
  370. homeassistant/components/yamaha_musiccast/translations/it.json +13 -3
  371. homeassistant/components/yeelight/translations/it.json +2 -1
  372. homeassistant/components/yolink/translations/it.json +16 -4
  373. homeassistant/components/zha/translations/it.json +18 -1
  374. homeassistant/components/zha/translations/nl.json +34 -0
  375. homeassistant/components/zwave_js/translations/nl.json +28 -1
  376. homeassistant/const.py +1 -1
  377. homeassistant/generated/dhcp.py +20 -0
  378. homeassistant/package_constraints.txt +1 -1
  379. {homeassistant-2025.7.0b5.dist-info → homeassistant-2025.7.0b6.dist-info}/METADATA +1 -1
  380. {homeassistant-2025.7.0b5.dist-info → homeassistant-2025.7.0b6.dist-info}/RECORD +385 -381
  381. {homeassistant-2025.7.0b5.dist-info → homeassistant-2025.7.0b6.dist-info}/WHEEL +0 -0
  382. {homeassistant-2025.7.0b5.dist-info → homeassistant-2025.7.0b6.dist-info}/entry_points.txt +0 -0
  383. {homeassistant-2025.7.0b5.dist-info → homeassistant-2025.7.0b6.dist-info}/licenses/LICENSE.md +0 -0
  384. {homeassistant-2025.7.0b5.dist-info → homeassistant-2025.7.0b6.dist-info}/licenses/homeassistant/backports/LICENSE.Python +0 -0
  385. {homeassistant-2025.7.0b5.dist-info → homeassistant-2025.7.0b6.dist-info}/top_level.txt +0 -0
@@ -15,7 +15,7 @@
15
15
  "dpf": "Errore di posizione di scarico",
16
16
  "ec": "Ciclo vuoto",
17
17
  "hpf": "Errore di posizione iniziale",
18
- "off": "Off",
18
+ "off": "Spento/a",
19
19
  "offline": "Non in linea",
20
20
  "otf": "Errore di sovracoppia",
21
21
  "p": "In pausa",
@@ -82,7 +82,6 @@
82
82
  "name": "Stav z\u00e1sobn\u00edka",
83
83
  "state": {
84
84
  "disabled": "Zak\u00e1zan\u00e9",
85
- "empty": "Pr\u00e1zdny",
86
85
  "enabled": "Povolen\u00e9",
87
86
  "motor_disconnected": "Motor odpojen\u00fd",
88
87
  "motor_fault_short": "Motor skratovan\u00fd",
@@ -82,7 +82,6 @@
82
82
  "name": "Hopper status",
83
83
  "state": {
84
84
  "disabled": "Inaktiverad",
85
- "empty": "Tom",
86
85
  "enabled": "Aktiverad",
87
86
  "motor_disconnected": "Motor fr\u00e5nkopplad",
88
87
  "motor_fault_short": "Motor kortsluten",
@@ -77,7 +77,6 @@
77
77
  "name": "Hazne durumu",
78
78
  "state": {
79
79
  "disabled": "Devre d\u0131\u015f\u0131",
80
- "empty": "Bo\u015f",
81
80
  "enabled": "Etkin",
82
81
  "motor_disconnected": "Motor ba\u011flant\u0131s\u0131 kesildi",
83
82
  "motor_fault_short": "Motor k\u0131sa devre yapt\u0131",
@@ -82,7 +82,6 @@
82
82
  "name": "\u6599\u6597\u72b6\u6001",
83
83
  "state": {
84
84
  "disabled": "\u5df2\u7981\u7528",
85
- "empty": "\u7a7a",
86
85
  "enabled": "\u5df2\u542f\u7528",
87
86
  "motor_disconnected": "\u7535\u673a\u65ad\u5f00",
88
87
  "motor_fault_short": "\u7535\u673a\u77ed\u8def",
@@ -82,7 +82,6 @@
82
82
  "name": "\u88dc\u7802\u5668\u72c0\u614b",
83
83
  "state": {
84
84
  "disabled": "\u5df2\u95dc\u9589",
85
- "empty": "\u8017\u76e1",
86
85
  "enabled": "\u5df2\u555f\u7528",
87
86
  "motor_disconnected": "\u99ac\u9054\u65b7\u7dda",
88
87
  "motor_fault_short": "\u99ac\u9054\u77ed\u8def",
@@ -51,8 +51,8 @@
51
51
  "lower_3": "Abbassa 3",
52
52
  "lower_4": "Abbassa 4",
53
53
  "lower_all": "Abbassa tutti",
54
- "off": "Off",
55
- "on": "On",
54
+ "off": "Spento/a",
55
+ "on": "Acceso/a",
56
56
  "open_1": "Apri 1",
57
57
  "open_2": "Apri 2",
58
58
  "open_3": "Apri 3",
@@ -1,4 +1,7 @@
1
1
  {
2
+ "application_credentials": {
3
+ "description": "Per poter accedere a Honeywell Lyric, l'integrazione richiede un ID client e un segreto. Per acquistarli, segui i seguenti passaggi.\n\n1. Vai alla [Dashboard delle app per sviluppatori Honeywell Lyric]({developer_dashboard_url}).\n1. Registrati per un account sviluppatore se non ne hai ancora uno. Questo \u00e8 un account separato dal tuo account Honeywell.\n1. Accedi con il tuo account sviluppatore Honeywell Lyric.\n1. Vai alla sezione **Le mie app**.\n1. Premere il pulsante **CREA NUOVA APP**.\n1. Assegna all'applicazione un nome a tua scelta.\n1. Imposta l'URL di richiamata su `{redirect_url}`.\n1. Salva le modifiche.\n1. Copia la **Chiave consumatore** e incollala qui come **ID cliente**, quindi copia il **Segreto consumatore** e incollalo qui come **Segreto cliente**."
4
+ },
2
5
  "config": {
3
6
  "abort": {
4
7
  "authorize_url_timeout": "Tempo scaduto nel generare l'URL di autorizzazione.",
@@ -15,6 +18,12 @@
15
18
  },
16
19
  "step": {
17
20
  "pick_implementation": {
21
+ "data": {
22
+ "implementation": "Credenziali dell'applicazione"
23
+ },
24
+ "data_description": {
25
+ "implementation": "Le credenziali che desideri utilizzare per l'autenticazione."
26
+ },
18
27
  "title": "Scegli il metodo di autenticazione"
19
28
  },
20
29
  "reauth_confirm": {
@@ -179,6 +179,11 @@
179
179
  "very_poor": "Sangat buruk"
180
180
  }
181
181
  },
182
+ "battery_charge_state": {
183
+ "state": {
184
+ "charging": "Mengisi daya"
185
+ }
186
+ },
182
187
  "contamination_state": {
183
188
  "state": {
184
189
  "low": "Rendah",
@@ -47,6 +47,12 @@
47
47
  },
48
48
  "entity": {
49
49
  "binary_sensor": {
50
+ "dishwasher_alarm_door": {
51
+ "name": "Allarme porta"
52
+ },
53
+ "dishwasher_alarm_inflow": {
54
+ "name": "Allarme di afflusso"
55
+ },
50
56
  "evse_charging_status": {
51
57
  "name": "Stato di carica"
52
58
  },
@@ -99,7 +105,17 @@
99
105
  },
100
106
  "fan": {
101
107
  "fan": {
102
- "name": "Ventilatore"
108
+ "name": "Ventilatore",
109
+ "state_attributes": {
110
+ "preset_mode": {
111
+ "state": {
112
+ "auto": "Automatico",
113
+ "high": "Alto/a",
114
+ "low": "Basso/a",
115
+ "medium": "Medio/a"
116
+ }
117
+ }
118
+ }
103
119
  }
104
120
  },
105
121
  "light": {
@@ -113,6 +129,19 @@
113
129
  }
114
130
  },
115
131
  "select": {
132
+ "door_lock_sound_volume": {
133
+ "state": {
134
+ "high": "Alto/a",
135
+ "low": "Basso/a",
136
+ "medium": "Medio/a"
137
+ }
138
+ },
139
+ "laundry_washer_number_of_rinses": {
140
+ "state": {
141
+ "normal": "Normale",
142
+ "off": "Spento/a"
143
+ }
144
+ },
116
145
  "pump_operation_mode": {
117
146
  "name": "modalit\u00e0",
118
147
  "state": {
@@ -124,14 +153,16 @@
124
153
  },
125
154
  "sensitivity_level": {
126
155
  "state": {
156
+ "high": "Alto/a",
157
+ "low": "Basso/a",
127
158
  "standard": "Iniziato"
128
159
  }
129
160
  },
130
161
  "startup_on_off": {
131
162
  "name": "Comportamento dell'accensione all'avvio",
132
163
  "state": {
133
- "off": "Off",
134
- "on": "On",
164
+ "off": "Spento/a",
165
+ "on": "Acceso/a",
135
166
  "previous": "Precedente",
136
167
  "toggle": "Commuta"
137
168
  }
@@ -152,9 +183,40 @@
152
183
  "very_poor": "Molto bassa"
153
184
  }
154
185
  },
186
+ "battery_charge_state": {
187
+ "name": "Stato di carica della batteria",
188
+ "state": {
189
+ "charging": "In carica",
190
+ "full_charge": "Carica completa",
191
+ "not_charging": "Non in carica"
192
+ }
193
+ },
194
+ "battery_time_remaining": {
195
+ "name": "Tempo rimanente"
196
+ },
197
+ "battery_time_to_full_charge": {
198
+ "name": "Tempo per la carica completa"
199
+ },
155
200
  "contamination_state": {
156
201
  "state": {
157
- "critical": "Critico"
202
+ "critical": "Critico",
203
+ "low": "Basso/a",
204
+ "normal": "Normale"
205
+ }
206
+ },
207
+ "esa_opt_out_state": {
208
+ "name": "Disattivazione dell'ottimizzazione energetica",
209
+ "state": {
210
+ "grid_opt_out": "Rete",
211
+ "local_opt_out": "Locale",
212
+ "no_opt_out": "Spento/a",
213
+ "opt_out": "Locale e rete"
214
+ }
215
+ },
216
+ "esa_state": {
217
+ "state": {
218
+ "fault": "Guasto/a",
219
+ "paused": "In pausa"
158
220
  }
159
221
  },
160
222
  "evse_charge_current": {
@@ -186,8 +248,10 @@
186
248
  "operational_state": {
187
249
  "state": {
188
250
  "charging": "In carica",
251
+ "error": "Errore",
189
252
  "paused": "In pausa",
190
- "running": "In esecuzione"
253
+ "running": "In esecuzione",
254
+ "stopped": "Fermato/a"
191
255
  }
192
256
  },
193
257
  "pump_control_mode": {
@@ -40,7 +40,18 @@
40
40
  "name": "Temperatura massima"
41
41
  },
42
42
  "cook_state": {
43
- "name": "Stato di cottura"
43
+ "name": "Stato di cottura",
44
+ "state": {
45
+ "configured": "Configurato",
46
+ "finished": "Finito",
47
+ "not_started": "Non avviato",
48
+ "overcooked": "Troppo cotto",
49
+ "ready_for_resting": "Pronto per riposare",
50
+ "resting": "A riposo",
51
+ "slightly_overdone": "Leggermente troppo cotto",
52
+ "slightly_underdone": "Leggermente al sangue",
53
+ "started": "Avviato"
54
+ }
44
55
  },
45
56
  "cook_target_temp": {
46
57
  "name": "Temperatura desiderata"
@@ -27,8 +27,8 @@
27
27
  "state": {
28
28
  "buffering": "Precaricamento",
29
29
  "idle": "Inattivo",
30
- "off": "Off",
31
- "on": "On",
30
+ "off": "Spento/a",
31
+ "on": "Acceso/a",
32
32
  "paused": "In pausa",
33
33
  "playing": "In esecuzione",
34
34
  "standby": "In attesa"
@@ -124,15 +124,15 @@
124
124
  "name": "Ripeti",
125
125
  "state": {
126
126
  "all": "Tutti",
127
- "off": "Off",
127
+ "off": "Spento/a",
128
128
  "one": "Uno"
129
129
  }
130
130
  },
131
131
  "shuffle": {
132
132
  "name": "Mescola",
133
133
  "state": {
134
- "false": "Off",
135
- "true": "On"
134
+ "false": "Spento/a",
135
+ "true": "Acceso/a"
136
136
  }
137
137
  },
138
138
  "sound_mode": {
@@ -174,6 +174,7 @@
174
174
  "repeat": {
175
175
  "options": {
176
176
  "all": "Ripeti tutto",
177
+ "off": "Spento/a",
177
178
  "one": "Ripeti una volta"
178
179
  }
179
180
  }
@@ -6,6 +6,8 @@ import time
6
6
  from meteofrance_api.model.forecast import Forecast as MeteoFranceForecast
7
7
 
8
8
  from homeassistant.components.weather import (
9
+ ATTR_CONDITION_CLEAR_NIGHT,
10
+ ATTR_CONDITION_SUNNY,
9
11
  ATTR_FORECAST_CONDITION,
10
12
  ATTR_FORECAST_HUMIDITY,
11
13
  ATTR_FORECAST_NATIVE_PRECIPITATION,
@@ -49,9 +51,13 @@ from .const import (
49
51
  _LOGGER = logging.getLogger(__name__)
50
52
 
51
53
 
52
- def format_condition(condition: str):
54
+ def format_condition(condition: str, force_day: bool = False) -> str:
53
55
  """Return condition from dict CONDITION_MAP."""
54
- return CONDITION_MAP.get(condition, condition)
56
+ mapped_condition = CONDITION_MAP.get(condition, condition)
57
+ if force_day and mapped_condition == ATTR_CONDITION_CLEAR_NIGHT:
58
+ # Meteo-France can return clear night condition instead of sunny for daily weather, so we map it to sunny
59
+ return ATTR_CONDITION_SUNNY
60
+ return mapped_condition
55
61
 
56
62
 
57
63
  async def async_setup_entry(
@@ -212,7 +218,7 @@ class MeteoFranceWeather(
212
218
  forecast["dt"]
213
219
  ).isoformat(),
214
220
  ATTR_FORECAST_CONDITION: format_condition(
215
- forecast["weather12H"]["desc"]
221
+ forecast["weather12H"]["desc"], force_day=True
216
222
  ),
217
223
  ATTR_FORECAST_HUMIDITY: forecast["humidity"]["max"],
218
224
  ATTR_FORECAST_NATIVE_TEMP: forecast["T"]["max"],
@@ -24,6 +24,12 @@
24
24
  },
25
25
  "step": {
26
26
  "pick_implementation": {
27
+ "data": {
28
+ "implementation": "Credenziali dell'applicazione"
29
+ },
30
+ "data_description": {
31
+ "implementation": "Le credenziali che desideri utilizzare per l'autenticazione."
32
+ },
27
33
  "title": "Scegli il metodo di autenticazione"
28
34
  }
29
35
  }
@@ -28,6 +28,12 @@
28
28
  "description": "Vuoi avviare la configurazione?"
29
29
  },
30
30
  "pick_implementation": {
31
+ "data": {
32
+ "implementation": "Credenziali dell'applicazione"
33
+ },
34
+ "data_description": {
35
+ "implementation": "Le credenziali che desideri utilizzare per l'autenticazione."
36
+ },
31
37
  "title": "Scegli il metodo di autenticazione"
32
38
  },
33
39
  "reauth_confirm": {
@@ -257,7 +263,7 @@
257
263
  "artichokes_small": "Carciofi, di piccole dimensioni",
258
264
  "atlantic_catfish_fillet_1_cm": "Cobite, filetto (1cm)",
259
265
  "atlantic_catfish_fillet_2_cm": "Cobite, filetto (2cm)",
260
- "auto": "Auto",
266
+ "auto": "Automatico",
261
267
  "auto_roast": "Arrostire",
262
268
  "automatic": "Automatic",
263
269
  "automatic_plus": "Automatic Plus",
@@ -996,8 +1002,8 @@
996
1002
  "idle": "Inattivo",
997
1003
  "in_use": "In funzione",
998
1004
  "not_connected": "Non connesso",
999
- "off": "Off",
1000
- "on": "On",
1005
+ "off": "Spento/a",
1006
+ "on": "Acceso/a",
1001
1007
  "pause": "Pausa",
1002
1008
  "program_ended": "Fine",
1003
1009
  "program_interrupted": "Programma interrotto",
@@ -16,6 +16,12 @@
16
16
  },
17
17
  "step": {
18
18
  "pick_implementation": {
19
+ "data": {
20
+ "implementation": "Credenziali dell'applicazione"
21
+ },
22
+ "data_description": {
23
+ "implementation": "Le credenziali che desideri utilizzare per l'autenticazione."
24
+ },
19
25
  "title": "Scegli il metodo di autenticazione"
20
26
  },
21
27
  "reauth_confirm": {
@@ -30,7 +30,20 @@
30
30
  },
31
31
  "select": {
32
32
  "speed": {
33
- "name": "Velocit\u00e0"
33
+ "name": "Velocit\u00e0",
34
+ "state": {
35
+ "1": "Basso/a",
36
+ "2": "Medio/a",
37
+ "3": "Alto/a"
38
+ }
39
+ }
40
+ },
41
+ "sensor": {
42
+ "connection": {
43
+ "state": {
44
+ "connected": "Connesso",
45
+ "disconnected": "Disconnesso"
46
+ }
34
47
  }
35
48
  }
36
49
  },
@@ -2771,11 +2771,10 @@ class MQTTSubentryFlowHandler(ConfigSubentryFlow):
2771
2771
  reconfig=True,
2772
2772
  )
2773
2773
  if user_input is not None:
2774
- new_device_data, errors = validate_user_input(
2775
- user_input, MQTT_DEVICE_PLATFORM_FIELDS
2776
- )
2777
- if "mqtt_settings" in user_input:
2778
- new_device_data["mqtt_settings"] = user_input["mqtt_settings"]
2774
+ new_device_data: dict[str, Any] = user_input.copy()
2775
+ _, errors = validate_user_input(user_input, MQTT_DEVICE_PLATFORM_FIELDS)
2776
+ if "advanced_settings" in new_device_data:
2777
+ new_device_data |= new_device_data.pop("advanced_settings")
2779
2778
  if not errors:
2780
2779
  self._subentry_data[CONF_DEVICE] = cast(MqttDeviceData, new_device_data)
2781
2780
  if self.source == SOURCE_RECONFIGURE:
@@ -358,8 +358,9 @@
358
358
  },
359
359
  "set_ca_cert": {
360
360
  "options": {
361
+ "auto": "Automatico",
361
362
  "custom": "Personalizzato",
362
- "off": "Off"
363
+ "off": "Spento/a"
363
364
  }
364
365
  }
365
366
  },
@@ -9,6 +9,13 @@
9
9
  "unknown": "Errore imprevisto"
10
10
  }
11
11
  },
12
+ "entity": {
13
+ "button": {
14
+ "favorite_now_playing": {
15
+ "name": "Brano preferito attuale"
16
+ }
17
+ }
18
+ },
12
19
  "selector": {
13
20
  "media_type": {
14
21
  "options": {
@@ -19,6 +19,12 @@
19
19
  },
20
20
  "step": {
21
21
  "pick_implementation": {
22
+ "data": {
23
+ "implementation": "Credenziali dell'applicazione"
24
+ },
25
+ "data_description": {
26
+ "implementation": "Le credenziali che desideri utilizzare per l'autenticazione."
27
+ },
22
28
  "title": "Scegli il metodo di autenticazione"
23
29
  },
24
30
  "reauth_confirm": {
@@ -44,15 +44,6 @@ async def async_setup_entry(hass: HomeAssistant, entry: NAMConfigEntry) -> bool:
44
44
  translation_key="device_communication_error",
45
45
  translation_placeholders={"device": entry.title},
46
46
  ) from err
47
-
48
- try:
49
- await nam.async_check_credentials()
50
- except (ApiError, ClientError) as err:
51
- raise ConfigEntryNotReady(
52
- translation_domain=DOMAIN,
53
- translation_key="device_communication_error",
54
- translation_placeholders={"device": entry.title},
55
- ) from err
56
47
  except AuthFailedError as err:
57
48
  raise ConfigEntryAuthFailed(
58
49
  translation_domain=DOMAIN,
@@ -3,7 +3,6 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  from collections.abc import Mapping
6
- from dataclasses import dataclass
7
6
  import logging
8
7
  from typing import Any
9
8
 
@@ -26,15 +25,6 @@ from homeassistant.helpers.service_info.zeroconf import ZeroconfServiceInfo
26
25
 
27
26
  from .const import DOMAIN
28
27
 
29
-
30
- @dataclass
31
- class NamConfig:
32
- """NAM device configuration class."""
33
-
34
- mac_address: str
35
- auth_enabled: bool
36
-
37
-
38
28
  _LOGGER = logging.getLogger(__name__)
39
29
 
40
30
  AUTH_SCHEMA = vol.Schema(
@@ -42,29 +32,14 @@ AUTH_SCHEMA = vol.Schema(
42
32
  )
43
33
 
44
34
 
45
- async def async_get_config(hass: HomeAssistant, host: str) -> NamConfig:
46
- """Get device MAC address and auth_enabled property."""
47
- websession = async_get_clientsession(hass)
48
-
49
- options = ConnectionOptions(host)
50
- nam = await NettigoAirMonitor.create(websession, options)
51
-
52
- mac = await nam.async_get_mac_address()
53
-
54
- return NamConfig(mac, nam.auth_enabled)
55
-
56
-
57
- async def async_check_credentials(
35
+ async def async_get_nam(
58
36
  hass: HomeAssistant, host: str, data: dict[str, Any]
59
- ) -> None:
60
- """Check if credentials are valid."""
37
+ ) -> NettigoAirMonitor:
38
+ """Get NAM client."""
61
39
  websession = async_get_clientsession(hass)
62
-
63
40
  options = ConnectionOptions(host, data.get(CONF_USERNAME), data.get(CONF_PASSWORD))
64
41
 
65
- nam = await NettigoAirMonitor.create(websession, options)
66
-
67
- await nam.async_check_credentials()
42
+ return await NettigoAirMonitor.create(websession, options)
68
43
 
69
44
 
70
45
  class NAMFlowHandler(ConfigFlow, domain=DOMAIN):
@@ -72,8 +47,8 @@ class NAMFlowHandler(ConfigFlow, domain=DOMAIN):
72
47
 
73
48
  VERSION = 1
74
49
 
75
- _config: NamConfig
76
50
  host: str
51
+ auth_enabled: bool = False
77
52
 
78
53
  async def async_step_user(
79
54
  self, user_input: dict[str, Any] | None = None
@@ -85,21 +60,20 @@ class NAMFlowHandler(ConfigFlow, domain=DOMAIN):
85
60
  self.host = user_input[CONF_HOST]
86
61
 
87
62
  try:
88
- config = await async_get_config(self.hass, self.host)
63
+ nam = await async_get_nam(self.hass, self.host, {})
89
64
  except (ApiError, ClientConnectorError, TimeoutError):
90
65
  errors["base"] = "cannot_connect"
91
66
  except CannotGetMacError:
92
67
  return self.async_abort(reason="device_unsupported")
68
+ except AuthFailedError:
69
+ return await self.async_step_credentials()
93
70
  except Exception:
94
71
  _LOGGER.exception("Unexpected exception")
95
72
  errors["base"] = "unknown"
96
73
  else:
97
- await self.async_set_unique_id(format_mac(config.mac_address))
74
+ await self.async_set_unique_id(format_mac(nam.mac))
98
75
  self._abort_if_unique_id_configured({CONF_HOST: self.host})
99
76
 
100
- if config.auth_enabled is True:
101
- return await self.async_step_credentials()
102
-
103
77
  return self.async_create_entry(
104
78
  title=self.host,
105
79
  data=user_input,
@@ -119,7 +93,7 @@ class NAMFlowHandler(ConfigFlow, domain=DOMAIN):
119
93
 
120
94
  if user_input is not None:
121
95
  try:
122
- await async_check_credentials(self.hass, self.host, user_input)
96
+ nam = await async_get_nam(self.hass, self.host, user_input)
123
97
  except AuthFailedError:
124
98
  errors["base"] = "invalid_auth"
125
99
  except (ApiError, ClientConnectorError, TimeoutError):
@@ -128,6 +102,9 @@ class NAMFlowHandler(ConfigFlow, domain=DOMAIN):
128
102
  _LOGGER.exception("Unexpected exception")
129
103
  errors["base"] = "unknown"
130
104
  else:
105
+ await self.async_set_unique_id(format_mac(nam.mac))
106
+ self._abort_if_unique_id_configured({CONF_HOST: self.host})
107
+
131
108
  return self.async_create_entry(
132
109
  title=self.host,
133
110
  data={**user_input, CONF_HOST: self.host},
@@ -148,14 +125,16 @@ class NAMFlowHandler(ConfigFlow, domain=DOMAIN):
148
125
  self._async_abort_entries_match({CONF_HOST: self.host})
149
126
 
150
127
  try:
151
- self._config = await async_get_config(self.hass, self.host)
128
+ nam = await async_get_nam(self.hass, self.host, {})
152
129
  except (ApiError, ClientConnectorError, TimeoutError):
153
130
  return self.async_abort(reason="cannot_connect")
154
131
  except CannotGetMacError:
155
132
  return self.async_abort(reason="device_unsupported")
133
+ except AuthFailedError:
134
+ self.auth_enabled = True
135
+ return await self.async_step_confirm_discovery()
156
136
 
157
- await self.async_set_unique_id(format_mac(self._config.mac_address))
158
- self._abort_if_unique_id_configured({CONF_HOST: self.host})
137
+ await self.async_set_unique_id(format_mac(nam.mac))
159
138
 
160
139
  return await self.async_step_confirm_discovery()
161
140
 
@@ -171,7 +150,7 @@ class NAMFlowHandler(ConfigFlow, domain=DOMAIN):
171
150
  data={CONF_HOST: self.host},
172
151
  )
173
152
 
174
- if self._config.auth_enabled is True:
153
+ if self.auth_enabled is True:
175
154
  return await self.async_step_credentials()
176
155
 
177
156
  self._set_confirm_only()
@@ -198,7 +177,7 @@ class NAMFlowHandler(ConfigFlow, domain=DOMAIN):
198
177
 
199
178
  if user_input is not None:
200
179
  try:
201
- await async_check_credentials(self.hass, self.host, user_input)
180
+ await async_get_nam(self.hass, self.host, user_input)
202
181
  except (
203
182
  ApiError,
204
183
  AuthFailedError,
@@ -228,11 +207,11 @@ class NAMFlowHandler(ConfigFlow, domain=DOMAIN):
228
207
 
229
208
  if user_input is not None:
230
209
  try:
231
- config = await async_get_config(self.hass, user_input[CONF_HOST])
210
+ nam = await async_get_nam(self.hass, user_input[CONF_HOST], {})
232
211
  except (ApiError, ClientConnectorError, TimeoutError):
233
212
  errors["base"] = "cannot_connect"
234
213
  else:
235
- await self.async_set_unique_id(format_mac(config.mac_address))
214
+ await self.async_set_unique_id(format_mac(nam.mac))
236
215
  self._abort_if_unique_id_mismatch(reason="another_device")
237
216
 
238
217
  return self.async_update_reload_and_abort(
@@ -7,7 +7,7 @@
7
7
  "integration_type": "device",
8
8
  "iot_class": "local_polling",
9
9
  "loggers": ["nettigo_air_monitor"],
10
- "requirements": ["nettigo-air-monitor==4.1.0"],
10
+ "requirements": ["nettigo-air-monitor==5.0.0"],
11
11
  "zeroconf": [
12
12
  {
13
13
  "type": "_http._tcp.local.",