homeassistant 2025.9.0b0__py3-none-any.whl → 2025.9.0b2__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 (674) hide show
  1. homeassistant/components/accuweather/translations/sensor.sr-Latn.json +9 -0
  2. homeassistant/components/accuweather/translations/sensor.sr.json +9 -0
  3. homeassistant/components/accuweather/translations/sr-Latn.json +101 -0
  4. homeassistant/components/accuweather/translations/sr.json +101 -0
  5. homeassistant/components/ai_task/services.yaml +0 -1
  6. homeassistant/components/ai_task/translations/cs.json +25 -3
  7. homeassistant/components/ai_task/translations/el.json +22 -0
  8. homeassistant/components/ai_task/translations/fr.json +22 -0
  9. homeassistant/components/ai_task/translations/lt.json +22 -0
  10. homeassistant/components/ai_task/translations/pt.json +22 -0
  11. homeassistant/components/ai_task/translations/ru.json +22 -0
  12. homeassistant/components/ai_task/translations/sk.json +1 -1
  13. homeassistant/components/airgradient/translations/pt.json +1 -0
  14. homeassistant/components/airgradient/translations/ru.json +1 -0
  15. homeassistant/components/airos/manifest.json +1 -1
  16. homeassistant/components/airos/translations/lt.json +23 -1
  17. homeassistant/components/aladdin_connect/manifest.json +1 -1
  18. homeassistant/components/aladdin_connect/translations/ca.json +28 -0
  19. homeassistant/components/aladdin_connect/translations/cs.json +30 -1
  20. homeassistant/components/aladdin_connect/translations/el.json +30 -1
  21. homeassistant/components/aladdin_connect/translations/et.json +30 -1
  22. homeassistant/components/aladdin_connect/translations/fr.json +10 -0
  23. homeassistant/components/aladdin_connect/translations/ga.json +30 -1
  24. homeassistant/components/aladdin_connect/translations/lt.json +30 -1
  25. homeassistant/components/aladdin_connect/translations/nl.json +28 -0
  26. homeassistant/components/aladdin_connect/translations/pt.json +30 -1
  27. homeassistant/components/aladdin_connect/translations/ru.json +30 -1
  28. homeassistant/components/aladdin_connect/translations/sk.json +30 -1
  29. homeassistant/components/aladdin_connect/translations/zh-Hans.json +30 -1
  30. homeassistant/components/aladdin_connect/translations/zh-Hant.json +30 -1
  31. homeassistant/components/alarm_control_panel/translations/cs.json +3 -3
  32. homeassistant/components/alexa_devices/__init__.py +1 -1
  33. homeassistant/components/alexa_devices/const.py +9 -9
  34. homeassistant/components/alexa_devices/manifest.json +1 -1
  35. homeassistant/components/alexa_devices/sensor.py +3 -0
  36. homeassistant/components/alexa_devices/services.py +3 -8
  37. homeassistant/components/alexa_devices/services.yaml +41 -476
  38. homeassistant/components/alexa_devices/strings.json +42 -469
  39. homeassistant/components/alexa_devices/translations/bg.json +0 -8
  40. homeassistant/components/alexa_devices/translations/cs.json +0 -477
  41. homeassistant/components/alexa_devices/translations/de.json +42 -469
  42. homeassistant/components/alexa_devices/translations/en-GB.json +1 -475
  43. homeassistant/components/alexa_devices/translations/en.json +42 -469
  44. homeassistant/components/alexa_devices/translations/es.json +0 -307
  45. homeassistant/components/alexa_devices/translations/et.json +42 -469
  46. homeassistant/components/alexa_devices/translations/fr.json +0 -9
  47. homeassistant/components/alexa_devices/translations/ga.json +0 -477
  48. homeassistant/components/alexa_devices/translations/lt.json +27 -293
  49. homeassistant/components/alexa_devices/translations/nl.json +0 -15
  50. homeassistant/components/alexa_devices/translations/pt.json +11 -477
  51. homeassistant/components/alexa_devices/translations/sk.json +0 -477
  52. homeassistant/components/alexa_devices/translations/sv.json +0 -8
  53. homeassistant/components/alexa_devices/translations/zh-Hans.json +0 -387
  54. homeassistant/components/alexa_devices/translations/zh-Hant.json +42 -469
  55. homeassistant/components/anthemav/translations/lt.json +2 -1
  56. homeassistant/components/asuswrt/bridge.py +18 -2
  57. homeassistant/components/asuswrt/manifest.json +1 -1
  58. homeassistant/components/august/translations/lt.json +26 -1
  59. homeassistant/components/august/translations/pt.json +26 -1
  60. homeassistant/components/backup/manager.py +2 -1
  61. homeassistant/components/backup/translations/de.json +1 -1
  62. homeassistant/components/bayesian/strings.json +1 -1
  63. homeassistant/components/bayesian/translations/cs.json +1 -1
  64. homeassistant/components/bayesian/translations/de.json +17 -17
  65. homeassistant/components/bayesian/translations/el.json +102 -0
  66. homeassistant/components/bayesian/translations/en-GB.json +1 -1
  67. homeassistant/components/bayesian/translations/en.json +3 -3
  68. homeassistant/components/bayesian/translations/et.json +1 -1
  69. homeassistant/components/bayesian/translations/fr.json +41 -0
  70. homeassistant/components/bayesian/translations/ga.json +48 -6
  71. homeassistant/components/bayesian/translations/lt.json +218 -0
  72. homeassistant/components/bayesian/translations/pl.json +7 -0
  73. homeassistant/components/bayesian/translations/pt.json +257 -0
  74. homeassistant/components/bayesian/translations/ru.json +257 -0
  75. homeassistant/components/bayesian/translations/sk.json +5 -5
  76. homeassistant/components/bayesian/translations/sv.json +11 -0
  77. homeassistant/components/bayesian/translations/zh-Hans.json +1 -1
  78. homeassistant/components/bayesian/translations/zh-Hant.json +1 -1
  79. homeassistant/components/bluetooth/__init__.py +1 -1
  80. homeassistant/components/bluetooth/manifest.json +3 -3
  81. homeassistant/components/braviatv/entity.py +10 -4
  82. homeassistant/components/bring/translations/sk.json +1 -1
  83. homeassistant/components/buienradar/translations/sr-Latn.json +128 -0
  84. homeassistant/components/buienradar/translations/sr.json +128 -0
  85. homeassistant/components/button/translations/ru.json +1 -1
  86. homeassistant/components/camera/translations/ru.json +2 -2
  87. homeassistant/components/conversation/manifest.json +1 -1
  88. homeassistant/components/cover/translations/mk.json +13 -5
  89. homeassistant/components/cover/translations/pl.json +1 -1
  90. homeassistant/components/deconz/translations/ga.json +19 -1
  91. homeassistant/components/device_tracker/translations/ga.json +9 -0
  92. homeassistant/components/devolo_home_control/translations/lt.json +3 -0
  93. homeassistant/components/devolo_home_network/translations/lt.json +3 -1
  94. homeassistant/components/devolo_home_network/translations/ru.json +3 -0
  95. homeassistant/components/dominos/translations/ru.json +2 -0
  96. homeassistant/components/downloader/translations/sk.json +1 -1
  97. homeassistant/components/dsmr/translations/ga.json +8 -0
  98. homeassistant/components/dsmr_reader/translations/ga.json +34 -0
  99. homeassistant/components/dwd_weather_warnings/translations/sk.json +1 -1
  100. homeassistant/components/ecobee/translations/ga.json +20 -1
  101. homeassistant/components/ecovacs/manifest.json +1 -1
  102. homeassistant/components/efergy/translations/ga.json +6 -0
  103. homeassistant/components/elkm1/translations/ga.json +6 -1
  104. homeassistant/components/emoncms/translations/lt.json +8 -0
  105. homeassistant/components/enphase_envoy/translations/lt.json +6 -0
  106. homeassistant/components/environment_canada/translations/sr-Latn.json +9 -0
  107. homeassistant/components/environment_canada/translations/sr.json +9 -0
  108. homeassistant/components/eq3btsmart/manifest.json +1 -1
  109. homeassistant/components/esphome/manifest.json +2 -2
  110. homeassistant/components/esphome/translations/ga.json +29 -4
  111. homeassistant/components/esphome/translations/sk.json +1 -1
  112. homeassistant/components/fan/translations/ga.json +25 -1
  113. homeassistant/components/filesize/translations/ga.json +12 -0
  114. homeassistant/components/fireservicerota/translations/ga.json +3 -1
  115. homeassistant/components/flo/translations/ga.json +16 -0
  116. homeassistant/components/flume/translations/ga.json +1 -0
  117. homeassistant/components/flux_led/translations/ga.json +78 -1
  118. homeassistant/components/flux_led/translations/sk.json +1 -1
  119. homeassistant/components/foscam/translations/ga.json +13 -0
  120. homeassistant/components/foscam/translations/lt.json +3 -0
  121. homeassistant/components/fritz/translations/ga.json +49 -6
  122. homeassistant/components/fritz/translations/ru.json +3 -0
  123. homeassistant/components/fritzbox/translations/ca.json +1 -3
  124. homeassistant/components/fritzbox/translations/cs.json +2 -2
  125. homeassistant/components/fritzbox/translations/de.json +3 -3
  126. homeassistant/components/fritzbox/translations/el.json +2 -2
  127. homeassistant/components/fritzbox/translations/en-GB.json +2 -2
  128. homeassistant/components/fritzbox/translations/en.json +2 -2
  129. homeassistant/components/fritzbox/translations/es-419.json +0 -6
  130. homeassistant/components/fritzbox/translations/es.json +1 -3
  131. homeassistant/components/fritzbox/translations/et.json +2 -2
  132. homeassistant/components/fritzbox/translations/fi.json +1 -3
  133. homeassistant/components/fritzbox/translations/fr.json +1 -3
  134. homeassistant/components/fritzbox/translations/ga.json +0 -1
  135. homeassistant/components/fritzbox/translations/hu.json +1 -3
  136. homeassistant/components/fritzbox/translations/id.json +1 -3
  137. homeassistant/components/fritzbox/translations/it.json +1 -3
  138. homeassistant/components/fritzbox/translations/ja.json +1 -3
  139. homeassistant/components/fritzbox/translations/ko.json +1 -3
  140. homeassistant/components/fritzbox/translations/lb.json +2 -4
  141. homeassistant/components/fritzbox/translations/lt.json +1 -3
  142. homeassistant/components/fritzbox/translations/nb.json +1 -3
  143. homeassistant/components/fritzbox/translations/nl.json +1 -3
  144. homeassistant/components/fritzbox/translations/pl.json +1 -3
  145. homeassistant/components/fritzbox/translations/pt-BR.json +1 -3
  146. homeassistant/components/fritzbox/translations/pt.json +2 -2
  147. homeassistant/components/fritzbox/translations/ro.json +1 -3
  148. homeassistant/components/fritzbox/translations/ru.json +2 -2
  149. homeassistant/components/fritzbox/translations/sk.json +2 -2
  150. homeassistant/components/fritzbox/translations/sl.json +1 -3
  151. homeassistant/components/fritzbox/translations/sv.json +1 -3
  152. homeassistant/components/fritzbox/translations/tr.json +1 -3
  153. homeassistant/components/fritzbox/translations/uk.json +1 -3
  154. homeassistant/components/fritzbox/translations/vi.json +2 -4
  155. homeassistant/components/fritzbox/translations/zh-Hans.json +2 -2
  156. homeassistant/components/fritzbox/translations/zh-Hant.json +2 -2
  157. homeassistant/components/fritzbox_callmonitor/translations/ca.json +0 -1
  158. homeassistant/components/fritzbox_callmonitor/translations/cs.json +2 -2
  159. homeassistant/components/fritzbox_callmonitor/translations/de.json +3 -3
  160. homeassistant/components/fritzbox_callmonitor/translations/el.json +2 -2
  161. homeassistant/components/fritzbox_callmonitor/translations/en-GB.json +2 -2
  162. homeassistant/components/fritzbox_callmonitor/translations/en.json +2 -2
  163. homeassistant/components/fritzbox_callmonitor/translations/es-419.json +0 -3
  164. homeassistant/components/fritzbox_callmonitor/translations/es.json +0 -1
  165. homeassistant/components/fritzbox_callmonitor/translations/et.json +2 -2
  166. homeassistant/components/fritzbox_callmonitor/translations/fi.json +0 -1
  167. homeassistant/components/fritzbox_callmonitor/translations/fr.json +0 -1
  168. homeassistant/components/fritzbox_callmonitor/translations/ga.json +16 -0
  169. homeassistant/components/fritzbox_callmonitor/translations/hu.json +0 -1
  170. homeassistant/components/fritzbox_callmonitor/translations/id.json +0 -1
  171. homeassistant/components/fritzbox_callmonitor/translations/it.json +0 -1
  172. homeassistant/components/fritzbox_callmonitor/translations/ja.json +0 -1
  173. homeassistant/components/fritzbox_callmonitor/translations/ko.json +0 -1
  174. homeassistant/components/fritzbox_callmonitor/translations/lt.json +0 -1
  175. homeassistant/components/fritzbox_callmonitor/translations/nb.json +0 -1
  176. homeassistant/components/fritzbox_callmonitor/translations/nl.json +0 -1
  177. homeassistant/components/fritzbox_callmonitor/translations/pl.json +0 -1
  178. homeassistant/components/fritzbox_callmonitor/translations/pt-BR.json +0 -1
  179. homeassistant/components/fritzbox_callmonitor/translations/pt.json +2 -2
  180. homeassistant/components/fritzbox_callmonitor/translations/ro.json +0 -1
  181. homeassistant/components/fritzbox_callmonitor/translations/ru.json +0 -1
  182. homeassistant/components/fritzbox_callmonitor/translations/sk.json +2 -2
  183. homeassistant/components/fritzbox_callmonitor/translations/sv.json +0 -1
  184. homeassistant/components/fritzbox_callmonitor/translations/tr.json +0 -1
  185. homeassistant/components/fritzbox_callmonitor/translations/uk.json +0 -1
  186. homeassistant/components/fritzbox_callmonitor/translations/zh-Hans.json +2 -2
  187. homeassistant/components/fritzbox_callmonitor/translations/zh-Hant.json +2 -2
  188. homeassistant/components/fronius/translations/ga.json +69 -0
  189. homeassistant/components/frontend/manifest.json +1 -1
  190. homeassistant/components/fully_kiosk/translations/fr.json +5 -0
  191. homeassistant/components/fully_kiosk/translations/ga.json +26 -0
  192. homeassistant/components/fully_kiosk/translations/lt.json +3 -0
  193. homeassistant/components/fully_kiosk/translations/pt.json +3 -0
  194. homeassistant/components/fyta/translations/fr.json +3 -0
  195. homeassistant/components/fyta/translations/ga.json +1 -0
  196. homeassistant/components/fyta/translations/lt.json +64 -2
  197. homeassistant/components/fyta/translations/pt.json +64 -2
  198. homeassistant/components/generic/translations/ga.json +36 -0
  199. homeassistant/components/geofency/translations/ga.json +18 -0
  200. homeassistant/components/geonetnz_quakes/translations/ga.json +4 -0
  201. homeassistant/components/gios/translations/ga.json +2 -0
  202. homeassistant/components/github/translations/ga.json +23 -0
  203. homeassistant/components/glances/translations/ga.json +10 -0
  204. homeassistant/components/goalzero/translations/ga.json +3 -0
  205. homeassistant/components/goalzero/translations/lt.json +3 -0
  206. homeassistant/components/goodwe/translations/ga.json +16 -0
  207. homeassistant/components/google/translations/ga.json +7 -0
  208. homeassistant/components/google_assistant_sdk/translations/sk.json +1 -1
  209. homeassistant/components/google_generative_ai_conversation/translations/cs.json +3 -3
  210. homeassistant/components/google_generative_ai_conversation/translations/lt.json +5 -0
  211. homeassistant/components/google_generative_ai_conversation/translations/sk.json +1 -1
  212. homeassistant/components/google_mail/translations/ga.json +24 -2
  213. homeassistant/components/google_mail/translations/sk.json +1 -1
  214. homeassistant/components/google_photos/translations/sk.json +1 -1
  215. homeassistant/components/google_sheets/translations/ga.json +6 -0
  216. homeassistant/components/google_sheets/translations/sk.json +1 -1
  217. homeassistant/components/google_tasks/translations/sk.json +1 -1
  218. homeassistant/components/govee_ble/translations/ga.json +18 -0
  219. homeassistant/components/govee_light_local/__init__.py +16 -3
  220. homeassistant/components/govee_light_local/config_flow.py +28 -10
  221. homeassistant/components/govee_light_local/coordinator.py +39 -24
  222. homeassistant/components/gpslogger/translations/ga.json +1 -0
  223. homeassistant/components/group/translations/ga.json +31 -2
  224. homeassistant/components/growatt_server/translations/ga.json +127 -0
  225. homeassistant/components/habitica/translations/cs.json +3 -3
  226. homeassistant/components/habitica/translations/ga.json +7 -2
  227. homeassistant/components/harmony/translations/ga.json +32 -2
  228. homeassistant/components/hassio/translations/ga.json +51 -1
  229. homeassistant/components/hassio/translations/lt.json +4 -0
  230. homeassistant/components/hassio/translations/sk.json +1 -1
  231. homeassistant/components/here_travel_time/translations/ga.json +11 -0
  232. homeassistant/components/here_travel_time/translations/lt.json +2 -1
  233. homeassistant/components/hisense_aehw4a1/translations/ga.json +13 -0
  234. homeassistant/components/history_stats/translations/ga.json +6 -0
  235. homeassistant/components/history_stats/translations/sk.json +3 -3
  236. homeassistant/components/hive/translations/ga.json +7 -0
  237. homeassistant/components/home_connect/translations/ga.json +5 -1
  238. homeassistant/components/home_connect/translations/lt.json +21 -11
  239. homeassistant/components/home_connect/translations/ru.json +9 -6
  240. homeassistant/components/home_connect/translations/sk.json +1 -1
  241. homeassistant/components/homeassistant_yellow/translations/ga.json +61 -2
  242. homeassistant/components/homekit_controller/translations/ga.json +25 -0
  243. homeassistant/components/homekit_controller/translations/select.mk.json +7 -0
  244. homeassistant/components/homematic/translations/ga.json +26 -1
  245. homeassistant/components/honeywell/translations/ga.json +10 -0
  246. homeassistant/components/huawei_lte/translations/ga.json +16 -1
  247. homeassistant/components/hue/translations/ga.json +19 -0
  248. homeassistant/components/humidifier/translations/ga.json +31 -0
  249. homeassistant/components/husqvarna_automower/manifest.json +1 -1
  250. homeassistant/components/husqvarna_automower/translations/ca.json +3 -0
  251. homeassistant/components/husqvarna_automower/translations/mk.json +5 -0
  252. homeassistant/components/husqvarna_automower_ble/translations/ca.json +35 -0
  253. homeassistant/components/husqvarna_automower_ble/translations/cs.json +35 -1
  254. homeassistant/components/husqvarna_automower_ble/translations/el.json +4 -0
  255. homeassistant/components/husqvarna_automower_ble/translations/ga.json +35 -1
  256. homeassistant/components/husqvarna_automower_ble/translations/lt.json +35 -1
  257. homeassistant/components/husqvarna_automower_ble/translations/pt.json +35 -1
  258. homeassistant/components/hvv_departures/translations/ga.json +2 -1
  259. homeassistant/components/hydrawise/translations/lt.json +4 -1
  260. homeassistant/components/hyperion/translations/sk.json +1 -1
  261. homeassistant/components/iaqualink/__init__.py +10 -0
  262. homeassistant/components/iaqualink/entity.py +1 -0
  263. homeassistant/components/icloud/translations/ga.json +60 -1
  264. homeassistant/components/ifttt/translations/ga.json +2 -0
  265. homeassistant/components/imap/translations/ga.json +3 -1
  266. homeassistant/components/imeon_inverter/const.py +1 -0
  267. homeassistant/components/imeon_inverter/strings.json +1 -0
  268. homeassistant/components/imeon_inverter/translations/en.json +1 -0
  269. homeassistant/components/imeon_inverter/translations/lt.json +67 -0
  270. homeassistant/components/imeon_inverter/translations/pt.json +79 -0
  271. homeassistant/components/imeon_inverter/translations/ru.json +21 -0
  272. homeassistant/components/inkbird/translations/ga.json +5 -0
  273. homeassistant/components/input_boolean/translations/ga.json +20 -1
  274. homeassistant/components/input_button/translations/ga.json +16 -1
  275. homeassistant/components/input_datetime/translations/ga.json +37 -1
  276. homeassistant/components/input_number/translations/ga.json +23 -1
  277. homeassistant/components/insteon/translations/ga.json +6 -1
  278. homeassistant/components/insteon/translations/lt.json +1 -0
  279. homeassistant/components/insteon/translations/ru.json +1 -0
  280. homeassistant/components/integration/translations/ga.json +22 -2
  281. homeassistant/components/intellifire/translations/ga.json +15 -1
  282. homeassistant/components/ios/translations/ga.json +19 -0
  283. homeassistant/components/iotawatt/translations/ga.json +15 -0
  284. homeassistant/components/iperf3/translations/ga.json +2 -1
  285. homeassistant/components/ipma/translations/ga.json +2 -0
  286. homeassistant/components/iqvia/translations/ga.json +7 -0
  287. homeassistant/components/izone/translations/ga.json +7 -1
  288. homeassistant/components/jellyfin/translations/ga.json +13 -0
  289. homeassistant/components/justnimbus/translations/ga.json +16 -0
  290. homeassistant/components/jvc_projector/translations/ga.json +1 -0
  291. homeassistant/components/kaleidescape/translations/ga.json +3 -0
  292. homeassistant/components/keba/translations/lt.json +1 -0
  293. homeassistant/components/keba/translations/ru.json +1 -0
  294. homeassistant/components/kitchen_sink/translations/ga.json +3 -0
  295. homeassistant/components/kmtronic/translations/ga.json +22 -0
  296. homeassistant/components/knx/translations/ga.json +100 -2
  297. homeassistant/components/knx/translations/lt.json +270 -0
  298. homeassistant/components/knx/translations/pt.json +270 -0
  299. homeassistant/components/konnected/translations/ga.json +3 -1
  300. homeassistant/components/kostal_plenticore/translations/ga.json +7 -0
  301. homeassistant/components/kraken/translations/ga.json +20 -0
  302. homeassistant/components/kulersky/translations/ga.json +3 -0
  303. homeassistant/components/lacrosse_view/translations/ga.json +25 -0
  304. homeassistant/components/lametric/translations/ga.json +1 -0
  305. homeassistant/components/lametric/translations/lt.json +1 -0
  306. homeassistant/components/landisgyr_heat_meter/translations/ga.json +15 -0
  307. homeassistant/components/launch_library/translations/lt.json +7 -0
  308. homeassistant/components/laundrify/translations/lt.json +2 -1
  309. homeassistant/components/lawn_mower/translations/ga.json +6 -0
  310. homeassistant/components/lcn/translations/ga.json +52 -3
  311. homeassistant/components/lcn/translations/lt.json +2 -0
  312. homeassistant/components/lcn/translations/ru.json +1 -0
  313. homeassistant/components/leaone/translations/ru.json +2 -1
  314. homeassistant/components/lg_thinq/translations/el.json +3 -0
  315. homeassistant/components/lg_thinq/translations/ga.json +5 -0
  316. homeassistant/components/lg_thinq/translations/lt.json +7 -0
  317. homeassistant/components/lg_thinq/translations/pt.json +4 -0
  318. homeassistant/components/lg_thinq/translations/ru.json +5 -0
  319. homeassistant/components/lidarr/translations/ga.json +16 -0
  320. homeassistant/components/lifx/translations/ga.json +1 -0
  321. homeassistant/components/light/translations/ga.json +132 -1
  322. homeassistant/components/litterrobot/translations/ga.json +6 -0
  323. homeassistant/components/litterrobot/translations/sensor.ga.json +14 -1
  324. homeassistant/components/livisi/translations/ga.json +18 -0
  325. homeassistant/components/local_calendar/translations/ga.json +5 -2
  326. homeassistant/components/local_ip/translations/ga.json +9 -0
  327. homeassistant/components/lock/translations/pl.json +1 -0
  328. homeassistant/components/logbook/translations/ko.json +2 -1
  329. homeassistant/components/lookin/translations/ga.json +1 -0
  330. homeassistant/components/lutron_caseta/translations/ga.json +34 -1
  331. homeassistant/components/lyric/translations/sk.json +1 -1
  332. homeassistant/components/mastodon/__init__.py +13 -2
  333. homeassistant/components/mastodon/config_flow.py +7 -2
  334. homeassistant/components/mastodon/diagnostics.py +8 -3
  335. homeassistant/components/matter/translations/ga.json +22 -0
  336. homeassistant/components/matter/translations/lt.json +45 -0
  337. homeassistant/components/matter/translations/pt.json +27 -0
  338. homeassistant/components/matter/translations/sr-Latn.json +15 -0
  339. homeassistant/components/matter/translations/sr.json +15 -0
  340. homeassistant/components/meater/translations/ga.json +9 -0
  341. homeassistant/components/media_extractor/translations/ga.json +14 -0
  342. homeassistant/components/media_player/services.yaml +1 -3
  343. homeassistant/components/media_player/translations/cs.json +5 -0
  344. homeassistant/components/media_player/translations/el.json +5 -0
  345. homeassistant/components/media_player/translations/fr.json +3 -0
  346. homeassistant/components/media_player/translations/ga.json +35 -0
  347. homeassistant/components/media_player/translations/lt.json +6 -1
  348. homeassistant/components/media_player/translations/pt.json +5 -0
  349. homeassistant/components/media_player/translations/ru.json +5 -0
  350. homeassistant/components/media_player/translations/sk.json +1 -0
  351. homeassistant/components/media_player/translations/zh-Hans.json +1 -0
  352. homeassistant/components/media_player/translations/zh-Hant.json +1 -0
  353. homeassistant/components/met/translations/ga.json +34 -0
  354. homeassistant/components/met_eireann/translations/ga.json +15 -0
  355. homeassistant/components/meteo_france/const.py +1 -1
  356. homeassistant/components/metoffice/translations/sk.json +1 -1
  357. homeassistant/components/metoffice/translations/sr-Latn.json +1 -0
  358. homeassistant/components/metoffice/translations/sr.json +1 -0
  359. homeassistant/components/miele/translations/ga.json +2 -1
  360. homeassistant/components/miele/translations/lt.json +36 -0
  361. homeassistant/components/miele/translations/pt.json +12 -0
  362. homeassistant/components/miele/translations/sk.json +8 -8
  363. homeassistant/components/mill/translations/ga.json +35 -0
  364. homeassistant/components/minecraft_server/translations/ga.json +12 -0
  365. homeassistant/components/minio/translations/ga.json +30 -0
  366. homeassistant/components/mjpeg/translations/lt.json +1 -0
  367. homeassistant/components/modbus/entity.py +4 -1
  368. homeassistant/components/modbus/translations/lt.json +2 -0
  369. homeassistant/components/modbus/translations/ru.json +2 -0
  370. homeassistant/components/modbus/translations/sk.json +1 -1
  371. homeassistant/components/modern_forms/translations/ga.json +20 -0
  372. homeassistant/components/moehlenhoff_alpha2/translations/ga.json +7 -0
  373. homeassistant/components/moon/translations/ga.json +10 -3
  374. homeassistant/components/moon/translations/sensor.ga.json +14 -0
  375. homeassistant/components/mopeka/translations/ga.json +12 -2
  376. homeassistant/components/motion_blinds/translations/ga.json +3 -0
  377. homeassistant/components/mqtt/translations/ca.json +11 -0
  378. homeassistant/components/mqtt/translations/cs.json +52 -0
  379. homeassistant/components/mqtt/translations/el.json +19 -0
  380. homeassistant/components/mqtt/translations/fr.json +11 -0
  381. homeassistant/components/mqtt/translations/ga.json +84 -4
  382. homeassistant/components/mqtt/translations/lt.json +66 -1
  383. homeassistant/components/mqtt/translations/nl.json +68 -0
  384. homeassistant/components/mqtt/translations/pt.json +81 -0
  385. homeassistant/components/mqtt/translations/ru.json +15 -0
  386. homeassistant/components/mqtt/translations/sk.json +8 -8
  387. homeassistant/components/mqtt/translations/zh-Hans.json +1 -0
  388. homeassistant/components/mysensors/translations/ga.json +17 -0
  389. homeassistant/components/mystrom/translations/ga.json +2 -1
  390. homeassistant/components/nam/translations/ga.json +26 -0
  391. homeassistant/components/nest/translations/ga.json +44 -3
  392. homeassistant/components/nest/translations/lt.json +3 -0
  393. homeassistant/components/nest/translations/sk.json +2 -2
  394. homeassistant/components/netatmo/translations/ga.json +5 -1
  395. homeassistant/components/netatmo/translations/sr-Latn.json +16 -0
  396. homeassistant/components/netatmo/translations/sr.json +16 -0
  397. homeassistant/components/nexia/manifest.json +1 -1
  398. homeassistant/components/nexia/translations/ga.json +8 -0
  399. homeassistant/components/nextcloud/translations/ga.json +14 -0
  400. homeassistant/components/nextcloud/translations/mk.json +13 -0
  401. homeassistant/components/nextdns/translations/ga.json +107 -0
  402. homeassistant/components/nextdns/translations/lt.json +3 -0
  403. homeassistant/components/nextdns/translations/sr.json +11 -0
  404. homeassistant/components/nfandroidtv/translations/ga.json +13 -1
  405. homeassistant/components/nibe_heatpump/translations/ga.json +5 -0
  406. homeassistant/components/nightscout/translations/ga.json +10 -0
  407. homeassistant/components/niko_home_control/translations/el.json +10 -1
  408. homeassistant/components/niko_home_control/translations/ga.json +10 -1
  409. homeassistant/components/niko_home_control/translations/lt.json +10 -1
  410. homeassistant/components/niko_home_control/translations/pt.json +10 -1
  411. homeassistant/components/nina/translations/ga.json +38 -2
  412. homeassistant/components/nissan_leaf/translations/ga.json +7 -0
  413. homeassistant/components/nobo_hub/translations/ga.json +29 -0
  414. homeassistant/components/notify/translations/ga.json +7 -1
  415. homeassistant/components/notion/translations/ga.json +49 -0
  416. homeassistant/components/nuheat/translations/ga.json +21 -0
  417. homeassistant/components/number/translations/ga.json +15 -1
  418. homeassistant/components/nut/translations/ga.json +131 -1
  419. homeassistant/components/nws/translations/ga.json +11 -0
  420. homeassistant/components/nws/translations/sr-Latn.json +9 -0
  421. homeassistant/components/nws/translations/sr.json +9 -0
  422. homeassistant/components/nx584/translations/ga.json +13 -1
  423. homeassistant/components/nzbget/translations/ga.json +23 -0
  424. homeassistant/components/nzbget/translations/lt.json +6 -0
  425. homeassistant/components/nzbget/translations/ru.json +6 -0
  426. homeassistant/components/obihai/translations/ga.json +19 -1
  427. homeassistant/components/octoprint/translations/ga.json +3 -0
  428. homeassistant/components/ollama/translations/cs.json +3 -3
  429. homeassistant/components/ollama/translations/lt.json +10 -0
  430. homeassistant/components/oncue/translations/ru.json +8 -1
  431. homeassistant/components/ondilo_ico/translations/ga.json +7 -1
  432. homeassistant/components/onewire/translations/ga.json +57 -1
  433. homeassistant/components/onewire/translations/lt.json +3 -0
  434. homeassistant/components/onvif/binary_sensor.py +1 -1
  435. homeassistant/components/onvif/sensor.py +1 -1
  436. homeassistant/components/onvif/translations/ga.json +42 -1
  437. homeassistant/components/open_meteo/translations/ga.json +15 -0
  438. homeassistant/components/open_router/translations/cs.json +2 -2
  439. homeassistant/components/open_router/translations/lt.json +7 -1
  440. homeassistant/components/openai_conversation/translations/cs.json +3 -3
  441. homeassistant/components/openai_conversation/translations/ga.json +12 -0
  442. homeassistant/components/openai_conversation/translations/lt.json +5 -0
  443. homeassistant/components/openhome/translations/ga.json +7 -0
  444. homeassistant/components/opentherm_gw/translations/ga.json +100 -2
  445. homeassistant/components/openuv/translations/ga.json +33 -0
  446. homeassistant/components/openweathermap/translations/ga.json +32 -0
  447. homeassistant/components/openweathermap/translations/sr-Latn.json +16 -0
  448. homeassistant/components/openweathermap/translations/sr.json +16 -0
  449. homeassistant/components/opower/manifest.json +1 -1
  450. homeassistant/components/opower/translations/ga.json +11 -2
  451. homeassistant/components/opower/translations/lt.json +7 -1
  452. homeassistant/components/opower/translations/sk.json +1 -1
  453. homeassistant/components/overkiz/translations/ga.json +71 -3
  454. homeassistant/components/overkiz/translations/select.ga.json +1 -0
  455. homeassistant/components/overkiz/translations/sensor.ga.json +29 -1
  456. homeassistant/components/ovo_energy/translations/ga.json +14 -1
  457. homeassistant/components/p1_monitor/translations/ga.json +22 -0
  458. homeassistant/components/panasonic_viera/translations/ga.json +30 -0
  459. homeassistant/components/peco/translations/ga.json +2 -0
  460. homeassistant/components/pegel_online/translations/ga.json +18 -0
  461. homeassistant/components/person/translations/ga.json +15 -0
  462. homeassistant/components/pi_hole/translations/ga.json +29 -0
  463. homeassistant/components/picnic/translations/ga.json +41 -0
  464. homeassistant/components/plaato/translations/ga.json +13 -0
  465. homeassistant/components/plant/translations/ga.json +12 -0
  466. homeassistant/components/playstation_network/__init__.py +4 -1
  467. homeassistant/components/playstation_network/config_flow.py +4 -13
  468. homeassistant/components/playstation_network/coordinator.py +55 -8
  469. homeassistant/components/playstation_network/helpers.py +4 -1
  470. homeassistant/components/playstation_network/notify.py +52 -27
  471. homeassistant/components/playstation_network/strings.json +11 -5
  472. homeassistant/components/playstation_network/translations/bg.json +0 -5
  473. homeassistant/components/playstation_network/translations/ca.json +7 -0
  474. homeassistant/components/playstation_network/translations/cs.json +11 -5
  475. homeassistant/components/playstation_network/translations/de.json +11 -5
  476. homeassistant/components/playstation_network/translations/el.json +54 -0
  477. homeassistant/components/playstation_network/translations/en-GB.json +11 -5
  478. homeassistant/components/playstation_network/translations/en.json +11 -5
  479. homeassistant/components/playstation_network/translations/es.json +1 -13
  480. homeassistant/components/playstation_network/translations/et.json +11 -5
  481. homeassistant/components/playstation_network/translations/fr.json +1 -1
  482. homeassistant/components/playstation_network/translations/ga.json +6 -17
  483. homeassistant/components/playstation_network/translations/it.json +1 -1
  484. homeassistant/components/playstation_network/translations/lt.json +17 -5
  485. homeassistant/components/playstation_network/translations/pt.json +11 -5
  486. homeassistant/components/playstation_network/translations/sk.json +11 -5
  487. homeassistant/components/playstation_network/translations/zh-Hans.json +11 -5
  488. homeassistant/components/playstation_network/translations/zh-Hant.json +11 -5
  489. homeassistant/components/plex/translations/ga.json +40 -0
  490. homeassistant/components/plugwise/translations/ga.json +105 -0
  491. homeassistant/components/plugwise/translations/select.ga.json +17 -0
  492. homeassistant/components/plum_lightpad/translations/ga.json +18 -0
  493. homeassistant/components/point/translations/ga.json +4 -0
  494. homeassistant/components/pooldose/translations/ca.json +56 -0
  495. homeassistant/components/pooldose/translations/el.json +48 -0
  496. homeassistant/components/pooldose/translations/ga.json +32 -0
  497. homeassistant/components/pooldose/translations/lt.json +102 -0
  498. homeassistant/components/pooldose/translations/nl.json +7 -2
  499. homeassistant/components/pooldose/translations/pt.json +102 -0
  500. homeassistant/components/poolsense/translations/ga.json +16 -0
  501. homeassistant/components/powerwall/translations/ga.json +35 -0
  502. homeassistant/components/profiler/translations/cs.json +2 -2
  503. homeassistant/components/profiler/translations/ga.json +11 -0
  504. homeassistant/components/progettihwsw/translations/ga.json +24 -1
  505. homeassistant/components/prosegur/translations/ga.json +39 -0
  506. homeassistant/components/prusalink/translations/sensor.ga.json +7 -0
  507. homeassistant/components/ps4/translations/ga.json +40 -0
  508. homeassistant/components/pure_energie/translations/ga.json +39 -0
  509. homeassistant/components/purpleair/manifest.json +1 -1
  510. homeassistant/components/purpleair/translations/ga.json +42 -0
  511. homeassistant/components/pushbullet/translations/ga.json +44 -0
  512. homeassistant/components/pushover/translations/ga.json +28 -0
  513. homeassistant/components/pvoutput/translations/ga.json +46 -0
  514. homeassistant/components/pvpc_hourly_pricing/translations/ga.json +1 -0
  515. homeassistant/components/qbus/translations/lt.json +8 -0
  516. homeassistant/components/radarr/translations/ga.json +40 -0
  517. homeassistant/components/radio_browser/translations/ga.json +9 -0
  518. homeassistant/components/radiotherm/translations/ga.json +23 -0
  519. homeassistant/components/rainbird/translations/ga.json +18 -2
  520. homeassistant/components/rainbird/translations/lt.json +4 -0
  521. homeassistant/components/rainbird/translations/ru.json +4 -0
  522. homeassistant/components/rainmachine/translations/ga.json +99 -4
  523. homeassistant/components/rainmachine/translations/sr-Latn.json +55 -0
  524. homeassistant/components/rainmachine/translations/sr.json +55 -0
  525. homeassistant/components/random/translations/ga.json +1 -0
  526. homeassistant/components/random/translations/lt.json +1 -0
  527. homeassistant/components/rapt_ble/translations/ga.json +21 -0
  528. homeassistant/components/rdw/translations/ga.json +36 -0
  529. homeassistant/components/recollect_waste/translations/ga.json +38 -0
  530. homeassistant/components/recorder/translations/cs.json +2 -2
  531. homeassistant/components/recorder/translations/ga.json +11 -0
  532. homeassistant/components/remember_the_milk/translations/cs.json +7 -7
  533. homeassistant/components/renault/translations/ga.json +76 -0
  534. homeassistant/components/reolink/manifest.json +1 -1
  535. homeassistant/components/reolink/number.py +3 -4
  536. homeassistant/components/reolink/select.py +0 -1
  537. homeassistant/components/reolink/translations/cs.json +14 -14
  538. homeassistant/components/reolink/translations/fr.json +3 -0
  539. homeassistant/components/reolink/translations/ga.json +47 -5
  540. homeassistant/components/reolink/translations/lt.json +9 -0
  541. homeassistant/components/reolink/translations/pt.json +9 -0
  542. homeassistant/components/rfxtrx/translations/ga.json +30 -0
  543. homeassistant/components/roborock/translations/sk.json +9 -9
  544. homeassistant/components/samsungtv/translations/lt.json +1 -0
  545. homeassistant/components/sensibo/translations/ga.json +4 -2
  546. homeassistant/components/sensibo/translations/lt.json +22 -0
  547. homeassistant/components/sensibo/translations/sensor.ga.json +7 -0
  548. homeassistant/components/sensor/translations/ga.json +3 -0
  549. homeassistant/components/sensor/translations/sk.json +1 -1
  550. homeassistant/components/shopping_list/translations/sr-Latn.json +11 -0
  551. homeassistant/components/shopping_list/translations/sr.json +11 -0
  552. homeassistant/components/sleep_as_android/translations/de.json +1 -1
  553. homeassistant/components/sleepiq/translations/lt.json +1 -0
  554. homeassistant/components/smartthings/translations/ru.json +9 -0
  555. homeassistant/components/snapcast/translations/sk.json +2 -2
  556. homeassistant/components/sonos/translations/lt.json +15 -0
  557. homeassistant/components/sonos/translations/pt.json +15 -0
  558. homeassistant/components/sun/translations/sk.json +1 -1
  559. homeassistant/components/switchbot_cloud/translations/lt.json +16 -0
  560. homeassistant/components/switchbot_cloud/translations/pt.json +16 -0
  561. homeassistant/components/tado/translations/sr-Latn.json +9 -0
  562. homeassistant/components/tado/translations/sr.json +9 -0
  563. homeassistant/components/tautulli/translations/sk.json +1 -1
  564. homeassistant/components/tellduslive/translations/ru.json +4 -0
  565. homeassistant/components/template/translations/el.json +50 -0
  566. homeassistant/components/template/translations/ga.json +1 -0
  567. homeassistant/components/template/translations/lt.json +196 -13
  568. homeassistant/components/template/translations/pl.json +140 -7
  569. homeassistant/components/template/translations/pt.json +149 -0
  570. homeassistant/components/template/translations/ru.json +8 -0
  571. homeassistant/components/template/translations/sk.json +6 -6
  572. homeassistant/components/template/translations/sv.json +31 -8
  573. homeassistant/components/tesla_fleet/__init__.py +0 -1
  574. homeassistant/components/teslemetry/translations/lt.json +4 -0
  575. homeassistant/components/teslemetry/translations/mk.json +5 -0
  576. homeassistant/components/togrill/translations/fr.json +4 -0
  577. homeassistant/components/togrill/translations/lt.json +49 -0
  578. homeassistant/components/togrill/translations/pt.json +49 -0
  579. homeassistant/components/tomorrowio/translations/lt.json +5 -1
  580. homeassistant/components/tplink/translations/lt.json +6 -2
  581. homeassistant/components/trafikverket_weatherstation/translations/sr-Latn.json +29 -0
  582. homeassistant/components/trafikverket_weatherstation/translations/sr.json +29 -0
  583. homeassistant/components/triggercmd/__init__.py +6 -2
  584. homeassistant/components/triggercmd/config_flow.py +3 -1
  585. homeassistant/components/triggercmd/manifest.json +1 -1
  586. homeassistant/components/triggercmd/switch.py +1 -0
  587. homeassistant/components/tts/translations/cs.json +1 -1
  588. homeassistant/components/tuya/translations/ga.json +8 -0
  589. homeassistant/components/tuya/translations/lt.json +1 -0
  590. homeassistant/components/tuya/translations/pl.json +1 -1
  591. homeassistant/components/tuya/translations/select.ga.json +4 -0
  592. homeassistant/components/unifiprotect/translations/ga.json +8 -0
  593. homeassistant/components/unifiprotect/translations/lt.json +6 -1
  594. homeassistant/components/vallox/translations/lt.json +5 -0
  595. homeassistant/components/velux/translations/cs.json +7 -0
  596. homeassistant/components/velux/translations/lt.json +7 -0
  597. homeassistant/components/velux/translations/nl.json +7 -0
  598. homeassistant/components/velux/translations/pt.json +7 -0
  599. homeassistant/components/volvo/translations/lt.json +173 -1
  600. homeassistant/components/volvo/translations/pt.json +137 -0
  601. homeassistant/components/volvo/translations/sk.json +1 -1
  602. homeassistant/components/wallbox/translations/sk.json +1 -1
  603. homeassistant/components/waze_travel_time/translations/lt.json +2 -0
  604. homeassistant/components/weather/translations/ga.json +3 -0
  605. homeassistant/components/weather/translations/sr-Latn.json +24 -7
  606. homeassistant/components/weather/translations/sr.json +81 -0
  607. homeassistant/components/weatherflow_cloud/translations/sr-Latn.json +18 -0
  608. homeassistant/components/weatherflow_cloud/translations/sr.json +18 -0
  609. homeassistant/components/webostv/translations/lt.json +11 -4
  610. homeassistant/components/webostv/translations/ru.json +9 -2
  611. homeassistant/components/websocket_api/http.py +13 -2
  612. homeassistant/components/withings/translations/sk.json +1 -1
  613. homeassistant/components/xiaomi_miio/translations/lt.json +3 -0
  614. homeassistant/components/yalexs_ble/__init__.py +37 -7
  615. homeassistant/components/yalexs_ble/config_cache.py +31 -0
  616. homeassistant/components/yalexs_ble/config_flow.py +80 -35
  617. homeassistant/components/yalexs_ble/strings.json +10 -5
  618. homeassistant/components/yalexs_ble/translations/bg.json +1 -7
  619. homeassistant/components/yalexs_ble/translations/ca.json +2 -12
  620. homeassistant/components/yalexs_ble/translations/cs.json +2 -12
  621. homeassistant/components/yalexs_ble/translations/de.json +10 -5
  622. homeassistant/components/yalexs_ble/translations/el.json +2 -12
  623. homeassistant/components/yalexs_ble/translations/en-GB.json +9 -4
  624. homeassistant/components/yalexs_ble/translations/en.json +10 -5
  625. homeassistant/components/yalexs_ble/translations/es.json +2 -12
  626. homeassistant/components/yalexs_ble/translations/et.json +2 -12
  627. homeassistant/components/yalexs_ble/translations/fi.json +2 -12
  628. homeassistant/components/yalexs_ble/translations/fr.json +1 -2
  629. homeassistant/components/yalexs_ble/translations/hu.json +2 -12
  630. homeassistant/components/yalexs_ble/translations/id.json +2 -12
  631. homeassistant/components/yalexs_ble/translations/it.json +2 -12
  632. homeassistant/components/yalexs_ble/translations/ja.json +2 -12
  633. homeassistant/components/yalexs_ble/translations/ko.json +2 -12
  634. homeassistant/components/yalexs_ble/translations/lt.json +2 -12
  635. homeassistant/components/yalexs_ble/translations/lv.json +1 -7
  636. homeassistant/components/yalexs_ble/translations/nb.json +2 -12
  637. homeassistant/components/yalexs_ble/translations/nl.json +2 -12
  638. homeassistant/components/yalexs_ble/translations/pl.json +2 -12
  639. homeassistant/components/yalexs_ble/translations/pt-BR.json +2 -12
  640. homeassistant/components/yalexs_ble/translations/pt.json +2 -12
  641. homeassistant/components/yalexs_ble/translations/ro.json +2 -12
  642. homeassistant/components/yalexs_ble/translations/ru.json +2 -12
  643. homeassistant/components/yalexs_ble/translations/sk.json +2 -12
  644. homeassistant/components/yalexs_ble/translations/sv.json +2 -12
  645. homeassistant/components/yalexs_ble/translations/tr.json +2 -12
  646. homeassistant/components/yalexs_ble/translations/uk.json +2 -12
  647. homeassistant/components/yalexs_ble/translations/vi.json +0 -9
  648. homeassistant/components/yalexs_ble/translations/zh-Hans.json +2 -12
  649. homeassistant/components/yalexs_ble/translations/zh-Hant.json +10 -5
  650. homeassistant/components/yolink/translations/lt.json +13 -0
  651. homeassistant/components/yolink/translations/pt.json +13 -0
  652. homeassistant/components/zha/translations/fr.json +48 -0
  653. homeassistant/components/zha/translations/lt.json +69 -0
  654. homeassistant/components/zha/translations/pl.json +3 -0
  655. homeassistant/components/zha/translations/pt.json +69 -0
  656. homeassistant/components/zha/translations/sk.json +3 -3
  657. homeassistant/components/zwave_js/binary_sensor.py +14 -6
  658. homeassistant/components/zwave_js/translations/lt.json +10 -0
  659. homeassistant/components/zwave_js/translations/pt.json +10 -0
  660. homeassistant/components/zwave_js/translations/ru.json +3 -1
  661. homeassistant/components/zwave_js/translations/sk.json +2 -2
  662. homeassistant/components/zwave_me/translations/sk.json +1 -1
  663. homeassistant/const.py +1 -1
  664. homeassistant/generated/integrations.json +6 -0
  665. homeassistant/helpers/device_registry.py +37 -14
  666. homeassistant/helpers/entity_registry.py +68 -29
  667. homeassistant/package_constraints.txt +9 -5
  668. {homeassistant-2025.9.0b0.dist-info → homeassistant-2025.9.0b2.dist-info}/METADATA +1 -1
  669. {homeassistant-2025.9.0b0.dist-info → homeassistant-2025.9.0b2.dist-info}/RECORD +674 -602
  670. {homeassistant-2025.9.0b0.dist-info → homeassistant-2025.9.0b2.dist-info}/WHEEL +0 -0
  671. {homeassistant-2025.9.0b0.dist-info → homeassistant-2025.9.0b2.dist-info}/entry_points.txt +0 -0
  672. {homeassistant-2025.9.0b0.dist-info → homeassistant-2025.9.0b2.dist-info}/licenses/LICENSE.md +0 -0
  673. {homeassistant-2025.9.0b0.dist-info → homeassistant-2025.9.0b2.dist-info}/licenses/homeassistant/backports/LICENSE.Python +0 -0
  674. {homeassistant-2025.9.0b0.dist-info → homeassistant-2025.9.0b2.dist-info}/top_level.txt +0 -0
@@ -52,13 +52,14 @@
52
52
  "s2_unauthenticated_key": "\u041a\u043b\u044e\u0447 \u0431\u0435\u0437 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 S2",
53
53
  "usb_path": "\u041f\u0443\u0442\u044c \u043a USB-\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443"
54
54
  },
55
- "description": "\u0415\u0441\u043b\u0438 \u044d\u0442\u0438 \u043f\u043e\u043b\u044f \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0443\u0441\u0442\u044b\u043c\u0438, \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u043a\u043b\u044e\u0447\u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438.",
55
+ "description": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0430\u0434\u0430\u043f\u0442\u0435\u0440 Z-Wave",
56
56
  "title": "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f Z-Wave"
57
57
  },
58
58
  "configure_addon_user": {
59
59
  "data": {
60
60
  "usb_path": "\u041f\u0443\u0442\u044c \u043a USB-\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443"
61
61
  },
62
+ "description": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0430\u0434\u0430\u043f\u0442\u0435\u0440 Z-Wave",
62
63
  "title": "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f Z-Wave"
63
64
  },
64
65
  "configure_security_keys": {
@@ -263,6 +264,7 @@
263
264
  },
264
265
  "step": {
265
266
  "init": {
267
+ "description": "\u0424\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 {device_name} \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0441\u044f.\n\nZ-Wave \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u043e\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u044f \u0435\u0433\u043e. \u041e\u0434\u043d\u0430\u043a\u043e \u0447\u0430\u0441\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u0430 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438. \u0427\u0430\u0441\u0442\u044c \u044d\u0442\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e\u0446\u0435\u043d\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437, \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u043f\u0440\u043e\u0441\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430.\n\n\u041a\u043e\u0433\u0434\u0430 \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f, \u044d\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0435\u0439, \u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u0437\u0430\u043d\u043e\u0432\u043e, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432\u0441\u0442\u0443\u043f\u0438\u043b\u0438 \u0432 \u0441\u0438\u043b\u0443.\n\n\u042d\u0442\u043e \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0435\u0439, \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0440\u0443\u0448\u0435\u043d\u0430 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u043e\u043f\u0440\u043e\u0441\u0430, \u043d\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0441\u0432\u043e\u0435\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043f\u043e\u0441\u043b\u0435 \u0435\u0433\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f.\n\n\u0415\u0441\u043b\u0438 \u0432\u044b \u0440\u0435\u0448\u0438\u0442\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u044b\u0439 \u043e\u043f\u0440\u043e\u0441, \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u0432 \u0444\u043e\u043d\u043e\u0432\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435.",
266
268
  "menu_options": {
267
269
  "confirm": "\u041f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u043e\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e",
268
270
  "ignore": "\u0418\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430"
@@ -144,7 +144,7 @@
144
144
  "title": "Migr\u00e1cia alebo zmena konfigur\u00e1cie"
145
145
  },
146
146
  "restore_failed": {
147
- "description": "Va\u0161u sie\u0165 Z-Wave nebolo mo\u017en\u00e9 obnovi\u0165 na nov\u00fd adapt\u00e9r. \n\nTo znamen\u00e1, \u017ee va\u0161e zariadenia Z-Wave nie s\u00fa pripojen\u00e9 k aplik\u00e1cii Home Assistant. \n\nZ\u00e1loha je ulo\u017een\u00e1 na \"{file_path}\" \n\n'<'a href=\"{file_url}\" download=\"{file_name}\"'>'Stiahnu\u0165 s\u00fabor z\u00e1lohy'<'/a'>'",
147
+ "description": "Va\u0161u sie\u0165 Z-Wave nebolo mo\u017en\u00e9 obnovi\u0165 na nov\u00fd adapt\u00e9r. \nTo znamen\u00e1, \u017ee va\u0161e zariadenia Z-Wave nie s\u00fa pripojen\u00e9 k aplik\u00e1cii Home Assistant. \n\nZ\u00e1loha je ulo\u017een\u00e1 na \u201d{file_path}\u201d \n\n'<'a href=\"{file_url}\" download=\"{file_name}\"'>'Stiahnu\u0165 s\u00fabor z\u00e1lohy'<'/a'>'",
148
148
  "submit": "Sk\u00faste to znova",
149
149
  "title": "Obnovenie ne\u00faspe\u0161n\u00e9"
150
150
  },
@@ -311,7 +311,7 @@
311
311
  "fix_flow": {
312
312
  "step": {
313
313
  "confirm": {
314
- "description": "K polo\u017eke konfigur\u00e1cie {config_entry_title} bol pripojen\u00fd adapt\u00e9r Z-Wave modelu {controller_model}. Tento adapt\u00e9r m\u00e1 in\u00e9 ID ({new_unique_id}) ako predt\u00fdm pripojen\u00fd adapt\u00e9r ({old_unique_id}). \n\nD\u00f4vody pre in\u00e9 ID adapt\u00e9ra m\u00f4\u017eu by\u0165: \n\n1. Adapt\u00e9r bol resetovan\u00fd do tov\u00e1rensk\u00e9ho nastavenia pomocou aplik\u00e1cie tretej strany. \n2. Z\u00e1loha nevolatilnej pam\u00e4te adapt\u00e9ra bola obnoven\u00e1 do adapt\u00e9ra pomocou aplik\u00e1cie tretej strany. \n3. K tejto konfigura\u010dnej polo\u017eke bol pripojen\u00fd in\u00fd adapt\u00e9r. \n\nAk bol pripojen\u00fd in\u00fd adapt\u00e9r, mali by ste namiesto toho nastavi\u0165 nov\u00fa konfigura\u010dn\u00fa polo\u017eku pre nov\u00fd adapt\u00e9r. \n\nAk ste si ist\u00ed, \u017ee aktu\u00e1lny adapt\u00e9r je spr\u00e1vny adapt\u00e9r, potvr\u010fte stla\u010den\u00edm tla\u010didla Submit. Konfigura\u010dn\u00e1 polo\u017eka si bude pam\u00e4ta\u0165 ID nov\u00e9ho adapt\u00e9ra.",
314
+ "description": "K polo\u017eke konfigur\u00e1cie {config_entry_title} bol pripojen\u00fd adapt\u00e9r Z-Wave modelu {controller_model}. Tento adapt\u00e9r m\u00e1 in\u00e9 ID ({new_unique_id}) ako predt\u00fdm pripojen\u00fd adapt\u00e9r ({old_unique_id}). \n\nD\u00f4vody pre in\u00e9 ID adapt\u00e9ra m\u00f4\u017eu by\u0165: \n\n1. Adapt\u00e9r bol resetovan\u00fd do tov\u00e1rensk\u00e9ho nastavenia pomocou aplik\u00e1cie tretej strany. \n2. Z\u00e1loha nevolatilnej pam\u00e4te adapt\u00e9ra bola obnoven\u00e1 do adapt\u00e9ra pomocou aplik\u00e1cie tretej strany. \n3. K tejto konfigura\u010dnej polo\u017eke bol pripojen\u00fd in\u00fd adapt\u00e9r. \n\nAk bol pripojen\u00fd in\u00fd adapt\u00e9r, mali by ste namiesto toho nastavi\u0165 nov\u00fa konfigura\u010dn\u00fa polo\u017eku pre nov\u00fd adapt\u00e9r. \n\nAk ste si ist\u00ed, \u017ee aktu\u00e1lny adapt\u00e9r je spr\u00e1vny adapt\u00e9r, potvr\u010fte stla\u010den\u00edm tla\u010didla Odosla\u0165. Konfigura\u010dn\u00e1 polo\u017eka si bude pam\u00e4ta\u0165 ID nov\u00e9ho adapt\u00e9ra.",
315
315
  "title": "Bol zisten\u00fd nezn\u00e1my adapt\u00e9r"
316
316
  }
317
317
  }
@@ -13,7 +13,7 @@
13
13
  "token": "API token",
14
14
  "url": "URL"
15
15
  },
16
- "description": "Zadajte IP adresu s portom a pr\u00edstupov\u00fd token servera Z-Way. Token z\u00edskate v pou\u017e\u00edvate\u013eskom rozhran\u00ed Z-Way Smart Home UI > Menu > Nastavenia > Pou\u017e\u00edvatelia > Spr\u00e1vca > API token. \n\nPr\u00edklad pripojenia k Z-Way spusten\u00e9ho ako doplnok: URL: {add_on_url}\nToken: {local_token}\n\nPr\u00edklad pripojenia k Z-Way v lok\u00e1lnej sieti: URL: {local_url}\nToken: Z-Way: {local_token}\n\nPr\u00edklad pripojenia k Z-Way prostredn\u00edctvom vzdialen\u00e9ho pr\u00edstupu find.z-wave.me: URL: {find_url}\nToken: {find_token}\n\nPr\u00edklad pripojenia k Z-Way pomocou statickej verejnej IP adresy: URL: {remote_url}\nToken: {local_token}\n\nPri prip\u00e1jan\u00ed cez find.z-wave.me mus\u00edte pou\u017ei\u0165 token s glob\u00e1lnym rozsahom (prihl\u00e1ste sa do Z-Way cez find.z-wave.me)."
16
+ "description": "Zadajte IP adresu s portom a pr\u00edstupov\u00fd token servera Z-Way. Token z\u00edskate v pou\u017e\u00edvate\u013eskom rozhran\u00ed Z-Way Smart Home UI > Menu > Nastavenia > Pou\u017e\u00edvatelia > Spr\u00e1vca > API token. \n\nPr\u00edklad pripojenia k Z-Way spusten\u00e9ho ako doplnok: \nURL: {add_on_url}\nToken: {local_token}\n\nPr\u00edklad pripojenia k Z-Way v lok\u00e1lnej sieti: \nURL: {local_url}\nToken: Z-Way: {local_token}\n\nPr\u00edklad pripojenia k Z-Way prostredn\u00edctvom vzdialen\u00e9ho pr\u00edstupu find.z-wave.me: URL: {find_url}\nToken: {find_token}\n\nPr\u00edklad pripojenia k Z-Way pomocou statickej verejnej IP adresy: \nURL: {remote_url}\nToken: {local_token}\n\nPri prip\u00e1jan\u00ed cez find.z-wave.me mus\u00edte pou\u017ei\u0165 token s glob\u00e1lnym rozsahom (prihl\u00e1ste sa do Z-Way cez find.z-wave.me)."
17
17
  }
18
18
  }
19
19
  }
homeassistant/const.py CHANGED
@@ -25,7 +25,7 @@ if TYPE_CHECKING:
25
25
  APPLICATION_NAME: Final = "HomeAssistant"
26
26
  MAJOR_VERSION: Final = 2025
27
27
  MINOR_VERSION: Final = 9
28
- PATCH_VERSION: Final = "0b0"
28
+ PATCH_VERSION: Final = "0b2"
29
29
  __short_version__: Final = f"{MAJOR_VERSION}.{MINOR_VERSION}"
30
30
  __version__: Final = f"{__short_version__}.{PATCH_VERSION}"
31
31
  REQUIRED_PYTHON_VER: Final[tuple[int, int, int]] = (3, 13, 2)
@@ -187,6 +187,12 @@
187
187
  }
188
188
  }
189
189
  },
190
+ "aladdin_connect": {
191
+ "name": "Aladdin Connect",
192
+ "integration_type": "hub",
193
+ "config_flow": true,
194
+ "iot_class": "cloud_polling"
195
+ },
190
196
  "alarmdecoder": {
191
197
  "name": "AlarmDecoder",
192
198
  "integration_type": "device",
@@ -9,7 +9,7 @@ from enum import StrEnum
9
9
  from functools import lru_cache
10
10
  import logging
11
11
  import time
12
- from typing import TYPE_CHECKING, Any, Literal, TypedDict
12
+ from typing import TYPE_CHECKING, Any, Final, Literal, TypedDict
13
13
 
14
14
  import attr
15
15
  from yarl import URL
@@ -68,6 +68,8 @@ CONNECTION_ZIGBEE = "zigbee"
68
68
 
69
69
  ORPHANED_DEVICE_KEEP_SECONDS = 86400 * 30
70
70
 
71
+ UNDEFINED_STR: Final = "UNDEFINED"
72
+
71
73
  # Can be removed when suggested_area is removed from DeviceEntry
72
74
  RUNTIME_ONLY_ATTRS = {"suggested_area"}
73
75
 
@@ -465,7 +467,7 @@ class DeletedDeviceEntry:
465
467
  validator=_normalize_connections_validator
466
468
  )
467
469
  created_at: datetime = attr.ib()
468
- disabled_by: DeviceEntryDisabler | None = attr.ib()
470
+ disabled_by: DeviceEntryDisabler | UndefinedType | None = attr.ib()
469
471
  id: str = attr.ib()
470
472
  identifiers: set[tuple[str, str]] = attr.ib()
471
473
  labels: set[str] = attr.ib()
@@ -480,15 +482,19 @@ class DeletedDeviceEntry:
480
482
  config_subentry_id: str | None,
481
483
  connections: set[tuple[str, str]],
482
484
  identifiers: set[tuple[str, str]],
485
+ disabled_by: DeviceEntryDisabler | UndefinedType | None,
483
486
  ) -> DeviceEntry:
484
487
  """Create DeviceEntry from DeletedDeviceEntry."""
485
488
  # Adjust disabled_by based on config entry state
486
- disabled_by = self.disabled_by
487
- if config_entry.disabled_by:
488
- if disabled_by is None:
489
- disabled_by = DeviceEntryDisabler.CONFIG_ENTRY
490
- elif disabled_by == DeviceEntryDisabler.CONFIG_ENTRY:
491
- disabled_by = None
489
+ if self.disabled_by is not UNDEFINED:
490
+ disabled_by = self.disabled_by
491
+ if config_entry.disabled_by:
492
+ if disabled_by is None:
493
+ disabled_by = DeviceEntryDisabler.CONFIG_ENTRY
494
+ elif disabled_by == DeviceEntryDisabler.CONFIG_ENTRY:
495
+ disabled_by = None
496
+ else:
497
+ disabled_by = disabled_by if disabled_by is not UNDEFINED else None
492
498
  return DeviceEntry(
493
499
  area_id=self.area_id,
494
500
  # type ignores: likely https://github.com/python/mypy/issues/8625
@@ -520,7 +526,9 @@ class DeletedDeviceEntry:
520
526
  },
521
527
  "connections": list(self.connections),
522
528
  "created_at": self.created_at,
523
- "disabled_by": self.disabled_by,
529
+ "disabled_by": self.disabled_by
530
+ if self.disabled_by is not UNDEFINED
531
+ else UNDEFINED_STR,
524
532
  "identifiers": list(self.identifiers),
525
533
  "id": self.id,
526
534
  "labels": list(self.labels),
@@ -608,7 +616,7 @@ class DeviceRegistryStore(storage.Store[dict[str, list[dict[str, Any]]]]):
608
616
  # Introduced in 2025.6
609
617
  for device in old_data["deleted_devices"]:
610
618
  device["area_id"] = None
611
- device["disabled_by"] = None
619
+ device["disabled_by"] = UNDEFINED_STR
612
620
  device["labels"] = []
613
621
  device["name_by_user"] = None
614
622
  if old_minor_version < 11:
@@ -934,7 +942,10 @@ class DeviceRegistry(BaseRegistry[dict[str, list[dict[str, Any]]]]):
934
942
  config_subentry_id if config_subentry_id is not UNDEFINED else None,
935
943
  connections,
936
944
  identifiers,
945
+ disabled_by,
937
946
  )
947
+ disabled_by = UNDEFINED
948
+
938
949
  self.devices[device.id] = device
939
950
  # If creating a new device, default to the config entry name
940
951
  if device_info_type == "primary" and (not name or name is UNDEFINED):
@@ -1442,7 +1453,21 @@ class DeviceRegistry(BaseRegistry[dict[str, list[dict[str, Any]]]]):
1442
1453
  sw_version=device["sw_version"],
1443
1454
  via_device_id=device["via_device_id"],
1444
1455
  )
1456
+
1445
1457
  # Introduced in 0.111
1458
+ def get_optional_enum[_EnumT: StrEnum](
1459
+ cls: type[_EnumT], value: str | None
1460
+ ) -> _EnumT | UndefinedType | None:
1461
+ """Convert string to the passed enum, UNDEFINED or None."""
1462
+ if value is None:
1463
+ return None
1464
+ if value == UNDEFINED_STR:
1465
+ return UNDEFINED
1466
+ try:
1467
+ return cls(value)
1468
+ except ValueError:
1469
+ return None
1470
+
1446
1471
  for device in data["deleted_devices"]:
1447
1472
  deleted_devices[device["id"]] = DeletedDeviceEntry(
1448
1473
  area_id=device["area_id"],
@@ -1455,10 +1480,8 @@ class DeviceRegistry(BaseRegistry[dict[str, list[dict[str, Any]]]]):
1455
1480
  },
1456
1481
  connections={tuple(conn) for conn in device["connections"]},
1457
1482
  created_at=datetime.fromisoformat(device["created_at"]),
1458
- disabled_by=(
1459
- DeviceEntryDisabler(device["disabled_by"])
1460
- if device["disabled_by"]
1461
- else None
1483
+ disabled_by=get_optional_enum(
1484
+ DeviceEntryDisabler, device["disabled_by"]
1462
1485
  ),
1463
1486
  identifiers={tuple(iden) for iden in device["identifiers"]},
1464
1487
  id=device["id"],
@@ -16,7 +16,7 @@ from datetime import datetime, timedelta
16
16
  from enum import StrEnum
17
17
  import logging
18
18
  import time
19
- from typing import TYPE_CHECKING, Any, Literal, NotRequired, TypedDict
19
+ from typing import TYPE_CHECKING, Any, Final, Literal, NotRequired, TypedDict
20
20
 
21
21
  import attr
22
22
  import voluptuous as vol
@@ -85,6 +85,8 @@ STORAGE_KEY = "core.entity_registry"
85
85
  CLEANUP_INTERVAL = 3600 * 24
86
86
  ORPHANED_ENTITY_KEEP_SECONDS = 3600 * 24 * 30
87
87
 
88
+ UNDEFINED_STR: Final = "UNDEFINED"
89
+
88
90
  ENTITY_CATEGORY_VALUE_TO_INDEX: dict[EntityCategory | None, int] = {
89
91
  val: idx for idx, val in enumerate(EntityCategory)
90
92
  }
@@ -164,6 +166,17 @@ def _protect_entity_options(
164
166
  return ReadOnlyDict({key: ReadOnlyDict(val) for key, val in data.items()})
165
167
 
166
168
 
169
+ def _protect_optional_entity_options(
170
+ data: EntityOptionsType | UndefinedType | None,
171
+ ) -> ReadOnlyEntityOptionsType | UndefinedType:
172
+ """Protect entity options from being modified."""
173
+ if data is UNDEFINED:
174
+ return UNDEFINED
175
+ if data is None:
176
+ return ReadOnlyDict({})
177
+ return ReadOnlyDict({key: ReadOnlyDict(val) for key, val in data.items()})
178
+
179
+
167
180
  @attr.s(frozen=True, kw_only=True, slots=True)
168
181
  class RegistryEntry:
169
182
  """Entity Registry Entry."""
@@ -414,15 +427,17 @@ class DeletedRegistryEntry:
414
427
  config_subentry_id: str | None = attr.ib()
415
428
  created_at: datetime = attr.ib()
416
429
  device_class: str | None = attr.ib()
417
- disabled_by: RegistryEntryDisabler | None = attr.ib()
430
+ disabled_by: RegistryEntryDisabler | UndefinedType | None = attr.ib()
418
431
  domain: str = attr.ib(init=False, repr=False)
419
- hidden_by: RegistryEntryHider | None = attr.ib()
432
+ hidden_by: RegistryEntryHider | UndefinedType | None = attr.ib()
420
433
  icon: str | None = attr.ib()
421
434
  id: str = attr.ib()
422
435
  labels: set[str] = attr.ib()
423
436
  modified_at: datetime = attr.ib()
424
437
  name: str | None = attr.ib()
425
- options: ReadOnlyEntityOptionsType = attr.ib(converter=_protect_entity_options)
438
+ options: ReadOnlyEntityOptionsType | UndefinedType = attr.ib(
439
+ converter=_protect_optional_entity_options
440
+ )
426
441
  orphaned_timestamp: float | None = attr.ib()
427
442
 
428
443
  _cache: dict[str, Any] = attr.ib(factory=dict, eq=False, init=False)
@@ -445,15 +460,21 @@ class DeletedRegistryEntry:
445
460
  "config_subentry_id": self.config_subentry_id,
446
461
  "created_at": self.created_at,
447
462
  "device_class": self.device_class,
448
- "disabled_by": self.disabled_by,
463
+ "disabled_by": self.disabled_by
464
+ if self.disabled_by is not UNDEFINED
465
+ else UNDEFINED_STR,
449
466
  "entity_id": self.entity_id,
450
- "hidden_by": self.hidden_by,
467
+ "hidden_by": self.hidden_by
468
+ if self.hidden_by is not UNDEFINED
469
+ else UNDEFINED_STR,
451
470
  "icon": self.icon,
452
471
  "id": self.id,
453
472
  "labels": list(self.labels),
454
473
  "modified_at": self.modified_at,
455
474
  "name": self.name,
456
- "options": self.options,
475
+ "options": self.options
476
+ if self.options is not UNDEFINED
477
+ else UNDEFINED_STR,
457
478
  "orphaned_timestamp": self.orphaned_timestamp,
458
479
  "platform": self.platform,
459
480
  "unique_id": self.unique_id,
@@ -584,12 +605,12 @@ class EntityRegistryStore(storage.Store[dict[str, list[dict[str, Any]]]]):
584
605
  entity["area_id"] = None
585
606
  entity["categories"] = {}
586
607
  entity["device_class"] = None
587
- entity["disabled_by"] = None
588
- entity["hidden_by"] = None
608
+ entity["disabled_by"] = UNDEFINED_STR
609
+ entity["hidden_by"] = UNDEFINED_STR
589
610
  entity["icon"] = None
590
611
  entity["labels"] = []
591
612
  entity["name"] = None
592
- entity["options"] = {}
613
+ entity["options"] = UNDEFINED_STR
593
614
 
594
615
  if old_major_version > 1:
595
616
  raise NotImplementedError
@@ -958,25 +979,30 @@ class EntityRegistry(BaseRegistry):
958
979
  categories = deleted_entity.categories
959
980
  created_at = deleted_entity.created_at
960
981
  device_class = deleted_entity.device_class
961
- disabled_by = deleted_entity.disabled_by
962
- # Adjust disabled_by based on config entry state
963
- if config_entry and config_entry is not UNDEFINED:
964
- if config_entry.disabled_by:
965
- if disabled_by is None:
966
- disabled_by = RegistryEntryDisabler.CONFIG_ENTRY
982
+ if deleted_entity.disabled_by is not UNDEFINED:
983
+ disabled_by = deleted_entity.disabled_by
984
+ # Adjust disabled_by based on config entry state
985
+ if config_entry and config_entry is not UNDEFINED:
986
+ if config_entry.disabled_by:
987
+ if disabled_by is None:
988
+ disabled_by = RegistryEntryDisabler.CONFIG_ENTRY
989
+ elif disabled_by == RegistryEntryDisabler.CONFIG_ENTRY:
990
+ disabled_by = None
967
991
  elif disabled_by == RegistryEntryDisabler.CONFIG_ENTRY:
968
992
  disabled_by = None
969
- elif disabled_by == RegistryEntryDisabler.CONFIG_ENTRY:
970
- disabled_by = None
971
993
  # Restore entity_id if it's available
972
994
  if self._entity_id_available(deleted_entity.entity_id):
973
995
  entity_id = deleted_entity.entity_id
974
996
  entity_registry_id = deleted_entity.id
975
- hidden_by = deleted_entity.hidden_by
997
+ if deleted_entity.hidden_by is not UNDEFINED:
998
+ hidden_by = deleted_entity.hidden_by
976
999
  icon = deleted_entity.icon
977
1000
  labels = deleted_entity.labels
978
1001
  name = deleted_entity.name
979
- options = deleted_entity.options
1002
+ if deleted_entity.options is not UNDEFINED:
1003
+ options = deleted_entity.options
1004
+ else:
1005
+ options = get_initial_options() if get_initial_options else None
980
1006
  else:
981
1007
  aliases = set()
982
1008
  area_id = None
@@ -1529,6 +1555,20 @@ class EntityRegistry(BaseRegistry):
1529
1555
  previous_unique_id=entity["previous_unique_id"],
1530
1556
  unit_of_measurement=entity["unit_of_measurement"],
1531
1557
  )
1558
+
1559
+ def get_optional_enum[_EnumT: StrEnum](
1560
+ cls: type[_EnumT], value: str | None
1561
+ ) -> _EnumT | UndefinedType | None:
1562
+ """Convert string to the passed enum, UNDEFINED or None."""
1563
+ if value is None:
1564
+ return None
1565
+ if value == UNDEFINED_STR:
1566
+ return UNDEFINED
1567
+ try:
1568
+ return cls(value)
1569
+ except ValueError:
1570
+ return None
1571
+
1532
1572
  for entity in data["deleted_entities"]:
1533
1573
  try:
1534
1574
  domain = split_entity_id(entity["entity_id"])[0]
@@ -1546,6 +1586,7 @@ class EntityRegistry(BaseRegistry):
1546
1586
  entity["platform"],
1547
1587
  entity["unique_id"],
1548
1588
  )
1589
+
1549
1590
  deleted_entities[key] = DeletedRegistryEntry(
1550
1591
  aliases=set(entity["aliases"]),
1551
1592
  area_id=entity["area_id"],
@@ -1554,23 +1595,21 @@ class EntityRegistry(BaseRegistry):
1554
1595
  config_subentry_id=entity["config_subentry_id"],
1555
1596
  created_at=datetime.fromisoformat(entity["created_at"]),
1556
1597
  device_class=entity["device_class"],
1557
- disabled_by=(
1558
- RegistryEntryDisabler(entity["disabled_by"])
1559
- if entity["disabled_by"]
1560
- else None
1598
+ disabled_by=get_optional_enum(
1599
+ RegistryEntryDisabler, entity["disabled_by"]
1561
1600
  ),
1562
1601
  entity_id=entity["entity_id"],
1563
- hidden_by=(
1564
- RegistryEntryHider(entity["hidden_by"])
1565
- if entity["hidden_by"]
1566
- else None
1602
+ hidden_by=get_optional_enum(
1603
+ RegistryEntryHider, entity["hidden_by"]
1567
1604
  ),
1568
1605
  icon=entity["icon"],
1569
1606
  id=entity["id"],
1570
1607
  labels=set(entity["labels"]),
1571
1608
  modified_at=datetime.fromisoformat(entity["modified_at"]),
1572
1609
  name=entity["name"],
1573
- options=entity["options"],
1610
+ options=entity["options"]
1611
+ if entity["options"] is not UNDEFINED_STR
1612
+ else UNDEFINED,
1574
1613
  orphaned_timestamp=entity["orphaned_timestamp"],
1575
1614
  platform=entity["platform"],
1576
1615
  unique_id=entity["unique_id"],
@@ -20,9 +20,9 @@ audioop-lts==0.2.1
20
20
  av==13.1.0
21
21
  awesomeversion==25.5.0
22
22
  bcrypt==4.3.0
23
- bleak-retry-connector==4.4.1
23
+ bleak-retry-connector==4.4.3
24
24
  bleak==1.0.1
25
- bluetooth-adapters==2.0.0
25
+ bluetooth-adapters==2.1.0
26
26
  bluetooth-auto-recovery==1.5.2
27
27
  bluetooth-data-tools==1.28.2
28
28
  cached-ipaddress==0.10.0
@@ -34,12 +34,12 @@ dbus-fast==2.44.3
34
34
  fnv-hash-fast==1.5.0
35
35
  go2rtc-client==0.2.1
36
36
  ha-ffmpeg==3.2.2
37
- habluetooth==5.1.0
37
+ habluetooth==5.3.0
38
38
  hass-nabucasa==1.0.0
39
39
  hassil==3.2.0
40
40
  home-assistant-bluetooth==1.13.1
41
- home-assistant-frontend==20250827.0
42
- home-assistant-intents==2025.8.27
41
+ home-assistant-frontend==20250829.0
42
+ home-assistant-intents==2025.8.29
43
43
  httpx==0.28.1
44
44
  ifaddr==0.2.0
45
45
  Jinja2==3.1.6
@@ -223,3 +223,7 @@ pymodbus==3.11.1
223
223
 
224
224
  # Some packages don't support gql 4.0.0 yet
225
225
  gql<4.0.0
226
+
227
+ # pytest-rerunfailures 16.0 breaks pytest, pin 15.1 until resolved
228
+ # https://github.com/pytest-dev/pytest-rerunfailures/issues/302
229
+ pytest-rerunfailures==15.1
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: homeassistant
3
- Version: 2025.9.0b0
3
+ Version: 2025.9.0b2
4
4
  Summary: Open-source home automation platform running on Python 3.
5
5
  Author-email: The Home Assistant Authors <hello@home-assistant.io>
6
6
  License-Expression: Apache-2.0