homeassistant 2025.12.0__py3-none-any.whl → 2025.12.0b1__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 (985) hide show
  1. homeassistant/auth/permissions/events.py +0 -2
  2. homeassistant/components/acaia/translations/pl.json +1 -23
  3. homeassistant/components/accuweather/translations/tr.json +0 -19
  4. homeassistant/components/ai_task/translations/tr.json +0 -17
  5. homeassistant/components/airly/translations/sr-Latn.json +0 -7
  6. homeassistant/components/airnow/translations/sr-Latn.json +0 -3
  7. homeassistant/components/airobot/translations/bg.json +2 -1
  8. homeassistant/components/airobot/translations/cs.json +1 -1
  9. homeassistant/components/airobot/translations/de.json +1 -1
  10. homeassistant/components/airobot/translations/el.json +1 -4
  11. homeassistant/components/airobot/translations/en-GB.json +1 -1
  12. homeassistant/components/airobot/translations/en.json +1 -1
  13. homeassistant/components/airobot/translations/et.json +1 -1
  14. homeassistant/components/airobot/translations/lt.json +1 -1
  15. homeassistant/components/airobot/translations/nl.json +2 -1
  16. homeassistant/components/airobot/translations/pt.json +5 -1
  17. homeassistant/components/airobot/translations/sk.json +1 -1
  18. homeassistant/components/airobot/translations/sv.json +2 -1
  19. homeassistant/components/airobot/translations/tr.json +5 -1
  20. homeassistant/components/airobot/translations/zh-Hans.json +1 -1
  21. homeassistant/components/airobot/translations/zh-Hant.json +1 -1
  22. homeassistant/components/airq/translations/sr-Latn.json +0 -7
  23. homeassistant/components/airthings/translations/tr.json +1 -2
  24. homeassistant/components/airthings_ble/translations/sr-Latn.json +0 -7
  25. homeassistant/components/airthings_ble/translations/tr.json +0 -7
  26. homeassistant/components/airvisual/translations/sr-Latn.json +0 -14
  27. homeassistant/components/airzone/translations/tr.json +0 -9
  28. homeassistant/components/aladdin_connect/translations/tr.json +1 -7
  29. homeassistant/components/alarm_control_panel/strings.json +21 -14
  30. homeassistant/components/alarm_control_panel/translations/cs.json +19 -12
  31. homeassistant/components/alarm_control_panel/translations/de.json +14 -7
  32. homeassistant/components/alarm_control_panel/translations/en-GB.json +1 -86
  33. homeassistant/components/alarm_control_panel/translations/en.json +21 -14
  34. homeassistant/components/alarm_control_panel/translations/es.json +1 -86
  35. homeassistant/components/alarm_control_panel/translations/et.json +1 -86
  36. homeassistant/components/alarm_control_panel/translations/ga.json +1 -72
  37. homeassistant/components/alarm_control_panel/translations/lt.json +21 -14
  38. homeassistant/components/alarm_control_panel/translations/pt.json +31 -14
  39. homeassistant/components/alarm_control_panel/translations/sk.json +21 -14
  40. homeassistant/components/alarm_control_panel/translations/sr-Latn.json +1 -5
  41. homeassistant/components/alarm_control_panel/translations/tr.json +1 -72
  42. homeassistant/components/alarm_control_panel/translations/zh-Hans.json +6 -1
  43. homeassistant/components/alarm_control_panel/translations/zh-Hant.json +21 -14
  44. homeassistant/components/alexa_devices/translations/it.json +1 -24
  45. homeassistant/components/alexa_devices/translations/tr.json +0 -52
  46. homeassistant/components/androidtv_remote/translations/mk.json +0 -7
  47. homeassistant/components/anglian_water/__init__.py +2 -6
  48. homeassistant/components/anglian_water/entity.py +1 -5
  49. homeassistant/components/anglian_water/sensor.py +2 -1
  50. homeassistant/components/anglian_water/strings.json +1 -1
  51. homeassistant/components/anglian_water/translations/de.json +1 -1
  52. homeassistant/components/anglian_water/translations/en.json +1 -1
  53. homeassistant/components/anglian_water/translations/et.json +1 -45
  54. homeassistant/components/anglian_water/translations/pt.json +2 -1
  55. homeassistant/components/anglian_water/translations/sk.json +1 -1
  56. homeassistant/components/anglian_water/translations/zh-Hans.json +2 -32
  57. homeassistant/components/anthropic/__init__.py +9 -2
  58. homeassistant/components/aosmith/translations/tr.json +0 -11
  59. homeassistant/components/apcupsd/translations/es.json +0 -14
  60. homeassistant/components/apcupsd/translations/sr-Latn.json +0 -3
  61. homeassistant/components/apple_tv/manifest.json +0 -1
  62. homeassistant/components/assist_pipeline/pipeline.py +57 -58
  63. homeassistant/components/assist_satellite/manifest.json +1 -1
  64. homeassistant/components/assist_satellite/strings.json +12 -8
  65. homeassistant/components/assist_satellite/translations/cs.json +12 -8
  66. homeassistant/components/assist_satellite/translations/de.json +12 -8
  67. homeassistant/components/assist_satellite/translations/en-GB.json +1 -54
  68. homeassistant/components/assist_satellite/translations/en.json +12 -8
  69. homeassistant/components/assist_satellite/translations/es.json +1 -54
  70. homeassistant/components/assist_satellite/translations/et.json +1 -54
  71. homeassistant/components/assist_satellite/translations/ga.json +1 -46
  72. homeassistant/components/assist_satellite/translations/lt.json +12 -8
  73. homeassistant/components/assist_satellite/translations/pt.json +16 -4
  74. homeassistant/components/assist_satellite/translations/sk.json +12 -8
  75. homeassistant/components/assist_satellite/translations/tr.json +1 -46
  76. homeassistant/components/assist_satellite/translations/zh-Hans.json +0 -5
  77. homeassistant/components/assist_satellite/translations/zh-Hant.json +12 -8
  78. homeassistant/components/august/translations/tr.json +1 -23
  79. homeassistant/components/automation/__init__.py +0 -1
  80. homeassistant/components/automation/manifest.json +0 -2
  81. homeassistant/components/automation/strings.json +4 -4
  82. homeassistant/components/automation/translations/cs.json +4 -4
  83. homeassistant/components/automation/translations/de.json +4 -4
  84. homeassistant/components/automation/translations/en-GB.json +0 -8
  85. homeassistant/components/automation/translations/en.json +4 -4
  86. homeassistant/components/automation/translations/es.json +0 -8
  87. homeassistant/components/automation/translations/et.json +4 -4
  88. homeassistant/components/automation/translations/fr.json +0 -8
  89. homeassistant/components/automation/translations/lt.json +4 -4
  90. homeassistant/components/automation/translations/pt.json +8 -0
  91. homeassistant/components/automation/translations/sk.json +4 -4
  92. homeassistant/components/automation/translations/sr-Latn.json +0 -28
  93. homeassistant/components/automation/translations/zh-Hant.json +4 -4
  94. homeassistant/components/backblaze_b2/translations/de.json +2 -2
  95. homeassistant/components/backblaze_b2/translations/es.json +1 -1
  96. homeassistant/components/bang_olufsen/translations/es.json +0 -992
  97. homeassistant/components/bang_olufsen/translations/ga.json +0 -992
  98. homeassistant/components/bang_olufsen/translations/nl.json +3 -76
  99. homeassistant/components/bang_olufsen/translations/pt.json +0 -1
  100. homeassistant/components/bayesian/translations/sr-Latn.json +1 -2
  101. homeassistant/components/bayesian/translations/tr.json +10 -81
  102. homeassistant/components/binary_sensor/icons.json +0 -8
  103. homeassistant/components/binary_sensor/strings.json +1 -36
  104. homeassistant/components/binary_sensor/translations/cs.json +1 -36
  105. homeassistant/components/binary_sensor/translations/de.json +1 -36
  106. homeassistant/components/binary_sensor/translations/en-GB.json +1 -36
  107. homeassistant/components/binary_sensor/translations/en.json +1 -36
  108. homeassistant/components/binary_sensor/translations/es.json +1 -36
  109. homeassistant/components/binary_sensor/translations/et.json +1 -36
  110. homeassistant/components/binary_sensor/translations/lt.json +1 -36
  111. homeassistant/components/binary_sensor/translations/mk.json +0 -8
  112. homeassistant/components/binary_sensor/translations/sk.json +1 -36
  113. homeassistant/components/binary_sensor/translations/sr-Latn.json +0 -1
  114. homeassistant/components/binary_sensor/translations/zh-Hant.json +1 -36
  115. homeassistant/components/blebox/translations/sr-Latn.json +0 -1
  116. homeassistant/components/blink/translations/tr.json +1 -16
  117. homeassistant/components/blue_current/translations/tr.json +0 -44
  118. homeassistant/components/bosch_alarm/__init__.py +2 -2
  119. homeassistant/components/bosch_alarm/config_flow.py +1 -1
  120. homeassistant/components/bosch_alarm/diagnostics.py +1 -2
  121. homeassistant/components/bosch_alarm/entity.py +1 -1
  122. homeassistant/components/bosch_alarm/manifest.json +1 -1
  123. homeassistant/components/broadlink/manifest.json +0 -1
  124. homeassistant/components/broadlink/translations/sr-Latn.json +0 -5
  125. homeassistant/components/brother/translations/tr.json +2 -53
  126. homeassistant/components/bsblan/translations/sr-Latn.json +0 -4
  127. homeassistant/components/bsblan/translations/tr.json +2 -22
  128. homeassistant/components/bthome/translations/tr.json +0 -35
  129. homeassistant/components/button/translations/sr-Latn.json +0 -20
  130. homeassistant/components/camera/__init__.py +1 -1
  131. homeassistant/components/camera/translations/mk.json +2 -4
  132. homeassistant/components/climate/strings.json +15 -10
  133. homeassistant/components/climate/translations/bg.json +0 -14
  134. homeassistant/components/climate/translations/cs.json +9 -26
  135. homeassistant/components/climate/translations/de.json +6 -23
  136. homeassistant/components/climate/translations/el.json +1 -54
  137. homeassistant/components/climate/translations/en-GB.json +1 -64
  138. homeassistant/components/climate/translations/en.json +15 -10
  139. homeassistant/components/climate/translations/es.json +1 -64
  140. homeassistant/components/climate/translations/et.json +1 -64
  141. homeassistant/components/climate/translations/ga.json +1 -54
  142. homeassistant/components/climate/translations/lt.json +9 -26
  143. homeassistant/components/climate/translations/mk.json +3 -10
  144. homeassistant/components/climate/translations/pt.json +12 -19
  145. homeassistant/components/climate/translations/ru.json +1 -54
  146. homeassistant/components/climate/translations/sk.json +9 -26
  147. homeassistant/components/climate/translations/sr-Latn.json +3 -101
  148. homeassistant/components/climate/translations/sv.json +1 -17
  149. homeassistant/components/climate/translations/tr.json +1 -54
  150. homeassistant/components/climate/translations/zh-Hans.json +0 -14
  151. homeassistant/components/climate/translations/zh-Hant.json +9 -26
  152. homeassistant/components/cloud/__init__.py +5 -18
  153. homeassistant/components/cloud/ai_task.py +12 -5
  154. homeassistant/components/cloud/client.py +5 -9
  155. homeassistant/components/cloud/conversation.py +11 -2
  156. homeassistant/components/cloud/entity.py +6 -5
  157. homeassistant/components/cloud/http_api.py +0 -21
  158. homeassistant/components/cloud/manifest.json +1 -1
  159. homeassistant/components/cloud/translations/en-GB.json +0 -7
  160. homeassistant/components/cloud/translations/es.json +0 -7
  161. homeassistant/components/cloud/translations/et.json +0 -7
  162. homeassistant/components/cloud/translations/ga.json +0 -7
  163. homeassistant/components/cloud/translations/tr.json +0 -7
  164. homeassistant/components/coinbase/translations/tr.json +1 -10
  165. homeassistant/components/comelit/translations/tr.json +0 -2
  166. homeassistant/components/conversation/__init__.py +3 -8
  167. homeassistant/components/conversation/default_agent.py +56 -61
  168. homeassistant/components/conversation/manifest.json +1 -1
  169. homeassistant/components/counter/translations/sr-Latn.json +1 -41
  170. homeassistant/components/cover/icons.json +29 -0
  171. homeassistant/components/cover/strings.json +159 -1
  172. homeassistant/components/cover/translations/cs.json +159 -1
  173. homeassistant/components/cover/translations/de.json +159 -1
  174. homeassistant/components/cover/translations/en.json +159 -1
  175. homeassistant/components/cover/translations/et.json +30 -1
  176. homeassistant/components/cover/translations/lt.json +159 -1
  177. homeassistant/components/cover/translations/pt.json +158 -1
  178. homeassistant/components/cover/translations/sk.json +159 -1
  179. homeassistant/components/cover/translations/sr-Latn.json +1 -5
  180. homeassistant/components/cover/translations/zh-Hans.json +105 -1
  181. homeassistant/components/cover/translations/zh-Hant.json +159 -1
  182. homeassistant/components/cover/trigger.py +116 -0
  183. homeassistant/components/cover/triggers.yaml +79 -0
  184. homeassistant/components/deconz/translations/mk.json +1 -3
  185. homeassistant/components/deluge/translations/tr.json +0 -8
  186. homeassistant/components/derivative/translations/es.json +0 -6
  187. homeassistant/components/derivative/translations/ga.json +0 -6
  188. homeassistant/components/derivative/translations/sr-Latn.json +4 -41
  189. homeassistant/components/dlna_dmr/manifest.json +0 -1
  190. homeassistant/components/dlna_dms/manifest.json +0 -1
  191. homeassistant/components/downloader/translations/tr.json +0 -8
  192. homeassistant/components/duckdns/translations/en-GB.json +0 -1
  193. homeassistant/components/duckdns/translations/es.json +0 -41
  194. homeassistant/components/duckdns/translations/ga.json +0 -40
  195. homeassistant/components/ecovacs/manifest.json +1 -1
  196. homeassistant/components/ecovacs/translations/tr.json +2 -50
  197. homeassistant/components/ecowitt/manifest.json +0 -1
  198. homeassistant/components/elevenlabs/translations/tr.json +1 -17
  199. homeassistant/components/elkm1/translations/tr.json +0 -4
  200. homeassistant/components/energyid/translations/zh-Hans.json +1 -17
  201. homeassistant/components/enphase_envoy/manifest.json +1 -1
  202. homeassistant/components/enphase_envoy/translations/tr.json +0 -15
  203. homeassistant/components/esphome/const.py +1 -1
  204. homeassistant/components/esphome/manifest.json +1 -1
  205. homeassistant/components/esphome/strings.json +1 -1
  206. homeassistant/components/esphome/translations/bg.json +1 -0
  207. homeassistant/components/esphome/translations/ca.json +1 -0
  208. homeassistant/components/esphome/translations/cs.json +1 -1
  209. homeassistant/components/esphome/translations/da.json +1 -0
  210. homeassistant/components/esphome/translations/de.json +1 -1
  211. homeassistant/components/esphome/translations/el.json +1 -0
  212. homeassistant/components/esphome/translations/en-GB.json +1 -1
  213. homeassistant/components/esphome/translations/en.json +1 -1
  214. homeassistant/components/esphome/translations/es.json +1 -1
  215. homeassistant/components/esphome/translations/et.json +1 -1
  216. homeassistant/components/esphome/translations/fi.json +1 -0
  217. homeassistant/components/esphome/translations/fr.json +1 -0
  218. homeassistant/components/esphome/translations/ga.json +1 -0
  219. homeassistant/components/esphome/translations/he.json +1 -0
  220. homeassistant/components/esphome/translations/hu.json +1 -0
  221. homeassistant/components/esphome/translations/id.json +1 -0
  222. homeassistant/components/esphome/translations/it.json +1 -0
  223. homeassistant/components/esphome/translations/ja.json +1 -0
  224. homeassistant/components/esphome/translations/ko.json +1 -0
  225. homeassistant/components/esphome/translations/lt.json +1 -1
  226. homeassistant/components/esphome/translations/nb.json +1 -0
  227. homeassistant/components/esphome/translations/nl.json +1 -0
  228. homeassistant/components/esphome/translations/pl.json +1 -0
  229. homeassistant/components/esphome/translations/pt-BR.json +1 -0
  230. homeassistant/components/esphome/translations/pt.json +1 -1
  231. homeassistant/components/esphome/translations/ro.json +1 -0
  232. homeassistant/components/esphome/translations/ru.json +1 -0
  233. homeassistant/components/esphome/translations/sk.json +1 -1
  234. homeassistant/components/esphome/translations/sl.json +1 -0
  235. homeassistant/components/esphome/translations/sv.json +1 -0
  236. homeassistant/components/esphome/translations/tr.json +1 -1
  237. homeassistant/components/esphome/translations/uk.json +1 -0
  238. homeassistant/components/esphome/translations/vi.json +1 -0
  239. homeassistant/components/esphome/translations/zh-Hans.json +1 -1
  240. homeassistant/components/esphome/translations/zh-Hant.json +1 -1
  241. homeassistant/components/essent/translations/nl.json +0 -32
  242. homeassistant/components/essent/translations/zh-Hans.json +0 -38
  243. homeassistant/components/event/translations/pl.json +1 -2
  244. homeassistant/components/event/translations/sr-Latn.json +1 -16
  245. homeassistant/components/fan/strings.json +6 -4
  246. homeassistant/components/fan/translations/cs.json +6 -4
  247. homeassistant/components/fan/translations/de.json +4 -2
  248. homeassistant/components/fan/translations/en-GB.json +1 -34
  249. homeassistant/components/fan/translations/en.json +6 -4
  250. homeassistant/components/fan/translations/es.json +1 -34
  251. homeassistant/components/fan/translations/et.json +6 -4
  252. homeassistant/components/fan/translations/ga.json +1 -30
  253. homeassistant/components/fan/translations/lt.json +6 -4
  254. homeassistant/components/fan/translations/mk.json +0 -11
  255. homeassistant/components/fan/translations/nl.json +1 -6
  256. homeassistant/components/fan/translations/pt.json +8 -2
  257. homeassistant/components/fan/translations/sk.json +6 -4
  258. homeassistant/components/fan/translations/tr.json +1 -30
  259. homeassistant/components/fan/translations/zh-Hant.json +6 -4
  260. homeassistant/components/file/translations/tr.json +0 -26
  261. homeassistant/components/filter/translations/sr-Latn.json +11 -149
  262. homeassistant/components/firefly_iii/translations/de.json +2 -2
  263. homeassistant/components/firefly_iii/translations/tr.json +0 -87
  264. homeassistant/components/foscam/translations/tr.json +1 -45
  265. homeassistant/components/fritz/translations/tr.json +0 -24
  266. homeassistant/components/fronius/manifest.json +0 -1
  267. homeassistant/components/fronius/translations/sr-Latn.json +0 -3
  268. homeassistant/components/frontend/manifest.json +1 -1
  269. homeassistant/components/frontend/storage.py +6 -16
  270. homeassistant/components/frontend/translations/de.json +2 -2
  271. homeassistant/components/frontend/translations/el.json +0 -8
  272. homeassistant/components/frontend/translations/es.json +0 -8
  273. homeassistant/components/frontend/translations/ga.json +0 -8
  274. homeassistant/components/frontend/translations/ru.json +0 -8
  275. homeassistant/components/frontend/translations/sr-Latn.json +0 -8
  276. homeassistant/components/frontend/translations/tr.json +0 -8
  277. homeassistant/components/frontend/translations/zh-Hans.json +0 -3
  278. homeassistant/components/fully_kiosk/translations/tr.json +0 -15
  279. homeassistant/components/fyta/translations/sr-Latn.json +0 -6
  280. homeassistant/components/generic/translations/sr-Latn.json +0 -42
  281. homeassistant/components/generic_hygrostat/translations/sr-Latn.json +4 -36
  282. homeassistant/components/generic_thermostat/translations/sr-Latn.json +6 -46
  283. homeassistant/components/geocaching/translations/tr.json +1 -2
  284. homeassistant/components/gios/translations/sr-Latn.json +0 -10
  285. homeassistant/components/go2rtc/__init__.py +2 -6
  286. homeassistant/components/go2rtc/const.py +1 -0
  287. homeassistant/components/go2rtc/server.py +6 -16
  288. homeassistant/components/google/manifest.json +0 -1
  289. homeassistant/components/google_air_quality/manifest.json +1 -1
  290. homeassistant/components/google_air_quality/strings.json +6 -8
  291. homeassistant/components/google_air_quality/translations/bg.json +7 -0
  292. homeassistant/components/google_air_quality/translations/cs.json +6 -8
  293. homeassistant/components/google_air_quality/translations/de.json +6 -8
  294. homeassistant/components/google_air_quality/translations/en.json +6 -8
  295. homeassistant/components/google_air_quality/translations/et.json +13 -82
  296. homeassistant/components/google_air_quality/translations/lt.json +13 -1
  297. homeassistant/components/google_air_quality/translations/nl.json +6 -38
  298. homeassistant/components/google_air_quality/translations/pt.json +13 -1
  299. homeassistant/components/google_air_quality/translations/sk.json +13 -1
  300. homeassistant/components/google_air_quality/translations/zh-Hans.json +11 -81
  301. homeassistant/components/google_air_quality/translations/zh-Hant.json +13 -1
  302. homeassistant/components/google_assistant/translations/sr-Latn.json +1 -1
  303. homeassistant/components/google_assistant_sdk/translations/es.json +0 -3
  304. homeassistant/components/google_assistant_sdk/translations/tr.json +0 -7
  305. homeassistant/components/google_generative_ai_conversation/translations/tr.json +0 -6
  306. homeassistant/components/google_sheets/translations/es.json +0 -4
  307. homeassistant/components/google_sheets/translations/tr.json +0 -22
  308. homeassistant/components/google_translate/manifest.json +0 -1
  309. homeassistant/components/google_weather/translations/es.json +0 -66
  310. homeassistant/components/google_weather/translations/ga.json +0 -37
  311. homeassistant/components/gpsd/translations/sr-Latn.json +0 -3
  312. homeassistant/components/group/notify.py +5 -28
  313. homeassistant/components/group/translations/sr-Latn.json +12 -154
  314. homeassistant/components/group/translations/tr.json +1 -19
  315. homeassistant/components/growatt_server/translations/tr.json +0 -87
  316. homeassistant/components/habitica/translations/tr.json +0 -76
  317. homeassistant/components/hassio/const.py +0 -1
  318. homeassistant/components/hassio/strings.json +1 -1
  319. homeassistant/components/hassio/translations/cs.json +1 -1
  320. homeassistant/components/hassio/translations/de.json +1 -1
  321. homeassistant/components/hassio/translations/el.json +1 -0
  322. homeassistant/components/hassio/translations/en-GB.json +1 -1
  323. homeassistant/components/hassio/translations/en.json +1 -1
  324. homeassistant/components/hassio/translations/es.json +1 -1
  325. homeassistant/components/hassio/translations/et.json +1 -1
  326. homeassistant/components/hassio/translations/fr.json +1 -0
  327. homeassistant/components/hassio/translations/fy.json +3 -0
  328. homeassistant/components/hassio/translations/ga.json +1 -0
  329. homeassistant/components/hassio/translations/he.json +1 -0
  330. homeassistant/components/hassio/translations/id.json +1 -0
  331. homeassistant/components/hassio/translations/lt.json +1 -1
  332. homeassistant/components/hassio/translations/mk.json +1 -0
  333. homeassistant/components/hassio/translations/nl.json +1 -0
  334. homeassistant/components/hassio/translations/pt.json +1 -0
  335. homeassistant/components/hassio/translations/ru.json +1 -0
  336. homeassistant/components/hassio/translations/sk.json +1 -1
  337. homeassistant/components/hassio/translations/sr-Latn.json +0 -5
  338. homeassistant/components/hassio/translations/sv.json +1 -0
  339. homeassistant/components/hassio/translations/tr.json +0 -38
  340. homeassistant/components/hassio/translations/zh-Hans.json +1 -0
  341. homeassistant/components/hassio/translations/zh-Hant.json +1 -1
  342. homeassistant/components/history_stats/translations/sr-Latn.json +3 -85
  343. homeassistant/components/holiday/translations/pl.json +0 -7
  344. homeassistant/components/home_connect/manifest.json +0 -1
  345. homeassistant/components/home_connect/translations/de.json +2 -2
  346. homeassistant/components/home_connect/translations/es.json +0 -46
  347. homeassistant/components/home_connect/translations/ga.json +0 -46
  348. homeassistant/components/home_connect/translations/tr.json +0 -32
  349. homeassistant/components/homeassistant_connect_zbt2/config_flow.py +17 -0
  350. homeassistant/components/homeassistant_connect_zbt2/const.py +58 -0
  351. homeassistant/components/homeassistant_connect_zbt2/translations/es.json +0 -8
  352. homeassistant/components/homeassistant_connect_zbt2/translations/ga.json +0 -8
  353. homeassistant/components/homeassistant_connect_zbt2/translations/tr.json +0 -145
  354. homeassistant/components/homeassistant_hardware/firmware_config_flow.py +73 -81
  355. homeassistant/components/homeassistant_hardware/translations/es.json +0 -4
  356. homeassistant/components/homeassistant_hardware/translations/ga.json +0 -4
  357. homeassistant/components/homeassistant_hardware/translations/tr.json +1 -44
  358. homeassistant/components/homeassistant_hardware/update.py +10 -13
  359. homeassistant/components/homeassistant_hardware/util.py +53 -59
  360. homeassistant/components/homeassistant_sky_connect/translations/es.json +0 -8
  361. homeassistant/components/homeassistant_sky_connect/translations/ga.json +0 -8
  362. homeassistant/components/homeassistant_sky_connect/translations/tr.json +0 -71
  363. homeassistant/components/homeassistant_yellow/translations/es.json +0 -4
  364. homeassistant/components/homeassistant_yellow/translations/ga.json +0 -4
  365. homeassistant/components/homeassistant_yellow/translations/tr.json +0 -35
  366. homeassistant/components/homekit/translations/tr.json +0 -12
  367. homeassistant/components/homekit_controller/manifest.json +0 -1
  368. homeassistant/components/homewizard/manifest.json +0 -1
  369. homeassistant/components/hue/translations/mk.json +1 -3
  370. homeassistant/components/hue/translations/tr.json +0 -1
  371. homeassistant/components/hue_ble/strings.json +1 -1
  372. homeassistant/components/hue_ble/translations/en.json +1 -1
  373. homeassistant/components/hue_ble/translations/lt.json +1 -1
  374. homeassistant/components/hue_ble/translations/nl.json +0 -3
  375. homeassistant/components/hue_ble/translations/pt.json +2 -1
  376. homeassistant/components/hue_ble/translations/sk.json +1 -1
  377. homeassistant/components/hue_ble/translations/zh-Hans.json +1 -11
  378. homeassistant/components/humidifier/translations/mk.json +0 -6
  379. homeassistant/components/husqvarna_automower/translations/tr.json +0 -88
  380. homeassistant/components/huum/translations/sr-Latn.json +0 -5
  381. homeassistant/components/ibeacon/manifest.json +0 -1
  382. homeassistant/components/icloud/translations/tr.json +0 -3
  383. homeassistant/components/image/translations/sr-Latn.json +1 -2
  384. homeassistant/components/imap/translations/tr.json +0 -21
  385. homeassistant/components/imeon_inverter/translations/en-GB.json +0 -21
  386. homeassistant/components/incomfort/translations/tr.json +0 -3
  387. homeassistant/components/input_boolean/translations/mk.json +2 -4
  388. homeassistant/components/input_number/translations/sr-Latn.json +0 -17
  389. homeassistant/components/integration/translations/sr-Latn.json +2 -54
  390. homeassistant/components/iometer/manifest.json +1 -1
  391. homeassistant/components/iometer/translations/tr.json +1 -3
  392. homeassistant/components/iron_os/translations/en-GB.json +1 -5
  393. homeassistant/components/iron_os/translations/es.json +1 -5
  394. homeassistant/components/jewish_calendar/translations/tr.json +1 -9
  395. homeassistant/components/kitchen_sink/translations/en-GB.json +0 -2
  396. homeassistant/components/kitchen_sink/translations/es.json +0 -20
  397. homeassistant/components/kitchen_sink/translations/et.json +1 -5
  398. homeassistant/components/kitchen_sink/translations/ga.json +0 -4
  399. homeassistant/components/kitchen_sink/translations/it.json +0 -12
  400. homeassistant/components/kitchen_sink/translations/nl.json +0 -4
  401. homeassistant/components/kitchen_sink/translations/ru.json +0 -8
  402. homeassistant/components/kitchen_sink/translations/sv.json +0 -3
  403. homeassistant/components/kitchen_sink/translations/tr.json +0 -4
  404. homeassistant/components/knx/translations/el.json +0 -43
  405. homeassistant/components/knx/translations/es.json +0 -3
  406. homeassistant/components/knx/translations/et.json +0 -3
  407. homeassistant/components/knx/translations/sk.json +0 -3
  408. homeassistant/components/knx/translations/tr.json +0 -318
  409. homeassistant/components/knx/translations/zh-Hans.json +0 -3
  410. homeassistant/components/konnected/manifest.json +0 -1
  411. homeassistant/components/konnected/translations/tr.json +0 -6
  412. homeassistant/components/labs/__init__.py +1 -2
  413. homeassistant/components/labs/const.py +2 -0
  414. homeassistant/components/labs/translations/lt.json +1 -1
  415. homeassistant/components/labs/websocket_api.py +1 -2
  416. homeassistant/components/lawn_mower/strings.json +12 -8
  417. homeassistant/components/lawn_mower/translations/cs.json +11 -7
  418. homeassistant/components/lawn_mower/translations/de.json +11 -7
  419. homeassistant/components/lawn_mower/translations/en-GB.json +1 -56
  420. homeassistant/components/lawn_mower/translations/en.json +12 -8
  421. homeassistant/components/lawn_mower/translations/es.json +1 -56
  422. homeassistant/components/lawn_mower/translations/et.json +2 -46
  423. homeassistant/components/lawn_mower/translations/ga.json +1 -48
  424. homeassistant/components/lawn_mower/translations/lt.json +12 -8
  425. homeassistant/components/lawn_mower/translations/pt.json +16 -4
  426. homeassistant/components/lawn_mower/translations/sk.json +12 -8
  427. homeassistant/components/lawn_mower/translations/tr.json +1 -48
  428. homeassistant/components/lawn_mower/translations/zh-Hant.json +12 -8
  429. homeassistant/components/letpot/manifest.json +1 -1
  430. homeassistant/components/letpot/translations/tr.json +0 -8
  431. homeassistant/components/lg_thinq/manifest.json +1 -1
  432. homeassistant/components/lg_thinq/translations/sr-Latn.json +0 -8
  433. homeassistant/components/lg_thinq/translations/tr.json +0 -20
  434. homeassistant/components/libre_hardware_monitor/coordinator.py +18 -26
  435. homeassistant/components/lifx/translations/tr.json +0 -3
  436. homeassistant/components/light/strings.json +8 -4
  437. homeassistant/components/light/translations/bg.json +12 -0
  438. homeassistant/components/light/translations/cs.json +8 -4
  439. homeassistant/components/light/translations/de.json +6 -2
  440. homeassistant/components/light/translations/el.json +0 -6
  441. homeassistant/components/light/translations/en-GB.json +2 -69
  442. homeassistant/components/light/translations/en.json +8 -4
  443. homeassistant/components/light/translations/es.json +2 -68
  444. homeassistant/components/light/translations/et.json +8 -34
  445. homeassistant/components/light/translations/ga.json +2 -65
  446. homeassistant/components/light/translations/lt.json +8 -4
  447. homeassistant/components/light/translations/mk.json +3 -10
  448. homeassistant/components/light/translations/nl.json +1 -6
  449. homeassistant/components/light/translations/pt.json +10 -2
  450. homeassistant/components/light/translations/ru.json +3 -67
  451. homeassistant/components/light/translations/sk.json +8 -4
  452. homeassistant/components/light/translations/sr-Latn.json +4 -217
  453. homeassistant/components/light/translations/tr.json +2 -65
  454. homeassistant/components/light/translations/zh-Hans.json +10 -2
  455. homeassistant/components/light/translations/zh-Hant.json +8 -4
  456. homeassistant/components/litterrobot/translations/tr.json +0 -6
  457. homeassistant/components/logger/helpers.py +0 -10
  458. homeassistant/components/logger/websocket_api.py +1 -12
  459. homeassistant/components/lovelace/translations/es.json +0 -5
  460. homeassistant/components/lovelace/translations/ga.json +0 -5
  461. homeassistant/components/mastodon/translations/es.json +0 -7
  462. homeassistant/components/mastodon/translations/ga.json +0 -7
  463. homeassistant/components/mastodon/translations/tr.json +0 -4
  464. homeassistant/components/matrix/translations/tr.json +0 -42
  465. homeassistant/components/matter/manifest.json +0 -1
  466. homeassistant/components/matter/translations/es.json +0 -13
  467. homeassistant/components/matter/translations/ga.json +0 -10
  468. homeassistant/components/matter/translations/sr-Latn.json +0 -3
  469. homeassistant/components/matter/translations/tr.json +0 -105
  470. homeassistant/components/mcp/translations/tr.json +1 -20
  471. homeassistant/components/mealie/translations/tr.json +0 -11
  472. homeassistant/components/media_extractor/manifest.json +1 -1
  473. homeassistant/components/media_player/strings.json +3 -2
  474. homeassistant/components/media_player/translations/cs.json +3 -2
  475. homeassistant/components/media_player/translations/de.json +2 -1
  476. homeassistant/components/media_player/translations/en-GB.json +1 -24
  477. homeassistant/components/media_player/translations/en.json +3 -2
  478. homeassistant/components/media_player/translations/es.json +1 -24
  479. homeassistant/components/media_player/translations/et.json +1 -8
  480. homeassistant/components/media_player/translations/ga.json +1 -22
  481. homeassistant/components/media_player/translations/lt.json +3 -2
  482. homeassistant/components/media_player/translations/mk.json +2 -4
  483. homeassistant/components/media_player/translations/pt.json +4 -1
  484. homeassistant/components/media_player/translations/sk.json +3 -2
  485. homeassistant/components/media_player/translations/tr.json +1 -22
  486. homeassistant/components/media_player/translations/zh-Hant.json +3 -2
  487. homeassistant/components/met/manifest.json +0 -1
  488. homeassistant/components/meteo_france/const.py +0 -1
  489. homeassistant/components/miele/const.py +7 -9
  490. homeassistant/components/miele/strings.json +0 -1
  491. homeassistant/components/miele/translations/cs.json +0 -1
  492. homeassistant/components/miele/translations/de.json +0 -1
  493. homeassistant/components/miele/translations/en-GB.json +0 -1
  494. homeassistant/components/miele/translations/en.json +0 -1
  495. homeassistant/components/miele/translations/es.json +0 -16
  496. homeassistant/components/miele/translations/et.json +0 -1
  497. homeassistant/components/miele/translations/ga.json +0 -14
  498. homeassistant/components/miele/translations/it.json +0 -1
  499. homeassistant/components/miele/translations/lt.json +0 -1
  500. homeassistant/components/miele/translations/sk.json +0 -1
  501. homeassistant/components/miele/translations/sr-Latn.json +0 -10
  502. homeassistant/components/miele/translations/tr.json +1 -20
  503. homeassistant/components/miele/translations/zh-Hant.json +0 -1
  504. homeassistant/components/min_max/translations/sr-Latn.json +2 -44
  505. homeassistant/components/mold_indicator/translations/sr-Latn.json +3 -41
  506. homeassistant/components/motion_blinds/manifest.json +0 -1
  507. homeassistant/components/mqtt/entity.py +0 -1
  508. homeassistant/components/mqtt/strings.json +5 -4
  509. homeassistant/components/mqtt/translations/bg.json +5 -0
  510. homeassistant/components/mqtt/translations/cs.json +27 -26
  511. homeassistant/components/mqtt/translations/de.json +8 -7
  512. homeassistant/components/mqtt/translations/en-GB.json +5 -4
  513. homeassistant/components/mqtt/translations/en.json +5 -4
  514. homeassistant/components/mqtt/translations/es.json +8 -91
  515. homeassistant/components/mqtt/translations/et.json +5 -4
  516. homeassistant/components/mqtt/translations/fr.json +4 -1
  517. homeassistant/components/mqtt/translations/ga.json +9 -65
  518. homeassistant/components/mqtt/translations/he.json +6 -1
  519. homeassistant/components/mqtt/translations/hu.json +2 -0
  520. homeassistant/components/mqtt/translations/it.json +7 -2
  521. homeassistant/components/mqtt/translations/lt.json +5 -4
  522. homeassistant/components/mqtt/translations/mk.json +0 -6
  523. homeassistant/components/mqtt/translations/nl.json +6 -1
  524. homeassistant/components/mqtt/translations/pt.json +6 -3
  525. homeassistant/components/mqtt/translations/ru.json +6 -6
  526. homeassistant/components/mqtt/translations/sk.json +5 -4
  527. homeassistant/components/mqtt/translations/sr-Latn.json +22 -148
  528. homeassistant/components/mqtt/translations/sv.json +2 -1
  529. homeassistant/components/mqtt/translations/tr.json +5 -255
  530. homeassistant/components/mqtt/translations/zh-Hans.json +6 -3
  531. homeassistant/components/mqtt/translations/zh-Hant.json +5 -4
  532. homeassistant/components/music_assistant/__init__.py +1 -2
  533. homeassistant/components/music_assistant/config_flow.py +5 -23
  534. homeassistant/components/music_assistant/manifest.json +0 -1
  535. homeassistant/components/music_assistant/translations/bg.json +1 -6
  536. homeassistant/components/music_assistant/translations/el.json +1 -3
  537. homeassistant/components/music_assistant/translations/en-GB.json +1 -23
  538. homeassistant/components/music_assistant/translations/es.json +1 -25
  539. homeassistant/components/music_assistant/translations/et.json +0 -1
  540. homeassistant/components/music_assistant/translations/ga.json +1 -24
  541. homeassistant/components/music_assistant/translations/it.json +1 -26
  542. homeassistant/components/music_assistant/translations/nl.json +1 -3
  543. homeassistant/components/music_assistant/translations/ru.json +1 -23
  544. homeassistant/components/music_assistant/translations/sv.json +1 -3
  545. homeassistant/components/music_assistant/translations/tr.json +1 -24
  546. homeassistant/components/music_assistant/translations/zh-Hans.json +0 -16
  547. homeassistant/components/nasweb/translations/tr.json +0 -7
  548. homeassistant/components/neato/translations/es.json +0 -5
  549. homeassistant/components/neato/translations/ga.json +0 -5
  550. homeassistant/components/neato/translations/tr.json +0 -5
  551. homeassistant/components/nederlandse_spoorwegen/translations/es.json +0 -10
  552. homeassistant/components/nederlandse_spoorwegen/translations/tr.json +0 -25
  553. homeassistant/components/nest/manifest.json +1 -1
  554. homeassistant/components/nest/translations/es.json +0 -12
  555. homeassistant/components/nest/translations/tr.json +0 -12
  556. homeassistant/components/netgear/translations/sr-Latn.json +0 -3
  557. homeassistant/components/nextdns/translations/tr.json +1 -14
  558. homeassistant/components/nightscout/translations/tr.json +0 -4
  559. homeassistant/components/niko_home_control/translations/el.json +0 -18
  560. homeassistant/components/niko_home_control/translations/es.json +1 -3
  561. homeassistant/components/niko_home_control/translations/tr.json +1 -10
  562. homeassistant/components/nina/translations/el.json +0 -6
  563. homeassistant/components/nina/translations/en-GB.json +0 -8
  564. homeassistant/components/nina/translations/es.json +0 -8
  565. homeassistant/components/nina/translations/ga.json +0 -8
  566. homeassistant/components/nina/translations/tr.json +0 -54
  567. homeassistant/components/nina/translations/zh-Hans.json +0 -2
  568. homeassistant/components/nordpool/manifest.json +1 -1
  569. homeassistant/components/ntfy/translations/tr.json +0 -78
  570. homeassistant/components/nuki/manifest.json +0 -1
  571. homeassistant/components/number/translations/sr-Latn.json +0 -181
  572. homeassistant/components/number/translations/tr.json +0 -6
  573. homeassistant/components/octoprint/translations/tr.json +0 -10
  574. homeassistant/components/onboarding/const.py +1 -16
  575. homeassistant/components/onboarding/views.py +2 -2
  576. homeassistant/components/onedrive/translations/es.json +0 -3
  577. homeassistant/components/onewire/translations/tr.json +0 -10
  578. homeassistant/components/openai_conversation/translations/tr.json +1 -6
  579. homeassistant/components/opentherm_gw/services.py +2 -17
  580. homeassistant/components/opentherm_gw/strings.json +3 -3
  581. homeassistant/components/opentherm_gw/translations/cs.json +3 -3
  582. homeassistant/components/opentherm_gw/translations/de.json +3 -3
  583. homeassistant/components/opentherm_gw/translations/el.json +3 -3
  584. homeassistant/components/opentherm_gw/translations/en-GB.json +3 -3
  585. homeassistant/components/opentherm_gw/translations/en.json +3 -3
  586. homeassistant/components/opentherm_gw/translations/es.json +3 -3
  587. homeassistant/components/opentherm_gw/translations/et.json +3 -3
  588. homeassistant/components/opentherm_gw/translations/ga.json +3 -0
  589. homeassistant/components/opentherm_gw/translations/hu.json +3 -0
  590. homeassistant/components/opentherm_gw/translations/it.json +2 -0
  591. homeassistant/components/opentherm_gw/translations/ja.json +3 -0
  592. homeassistant/components/opentherm_gw/translations/lt.json +3 -3
  593. homeassistant/components/opentherm_gw/translations/nl.json +2 -0
  594. homeassistant/components/opentherm_gw/translations/pt.json +3 -3
  595. homeassistant/components/opentherm_gw/translations/ru.json +3 -3
  596. homeassistant/components/opentherm_gw/translations/sk.json +3 -3
  597. homeassistant/components/opentherm_gw/translations/sv.json +3 -0
  598. homeassistant/components/opentherm_gw/translations/tr.json +3 -0
  599. homeassistant/components/opentherm_gw/translations/zh-Hans.json +3 -3
  600. homeassistant/components/opentherm_gw/translations/zh-Hant.json +3 -3
  601. homeassistant/components/openweathermap/translations/tr.json +0 -49
  602. homeassistant/components/opower/translations/tr.json +1 -33
  603. homeassistant/components/oralb/manifest.json +0 -1
  604. homeassistant/components/oralb/translations/tr.json +2 -29
  605. homeassistant/components/ping/helpers.py +1 -1
  606. homeassistant/components/ping/manifest.json +0 -1
  607. homeassistant/components/playstation_network/coordinator.py +7 -14
  608. homeassistant/components/playstation_network/translations/tr.json +0 -56
  609. homeassistant/components/plugwise/translations/en-GB.json +1 -1
  610. homeassistant/components/plugwise/translations/es.json +0 -2
  611. homeassistant/components/plugwise/translations/sr-Latn.json +0 -12
  612. homeassistant/components/plugwise/translations/tr.json +1 -11
  613. homeassistant/components/plum_lightpad/translations/tr.json +1 -8
  614. homeassistant/components/point/translations/es.json +0 -5
  615. homeassistant/components/pooldose/translations/en-GB.json +0 -11
  616. homeassistant/components/pooldose/translations/es.json +0 -68
  617. homeassistant/components/pooldose/translations/et.json +0 -11
  618. homeassistant/components/pooldose/translations/ga.json +0 -11
  619. homeassistant/components/pooldose/translations/it.json +0 -11
  620. homeassistant/components/pooldose/translations/tr.json +1 -84
  621. homeassistant/components/pooldose/translations/zh-Hans.json +0 -6
  622. homeassistant/components/portainer/translations/tr.json +0 -82
  623. homeassistant/components/probe_plus/translations/tr.json +0 -5
  624. homeassistant/components/ps4/translations/tr.json +0 -6
  625. homeassistant/components/qbittorrent/translations/tr.json +0 -4
  626. homeassistant/components/qbus/translations/tr.json +0 -10
  627. homeassistant/components/random/translations/es.json +0 -1
  628. homeassistant/components/random/translations/sr-Latn.json +6 -119
  629. homeassistant/components/random/translations/tr.json +0 -2
  630. homeassistant/components/renault/translations/tr.json +0 -12
  631. homeassistant/components/reolink/manifest.json +1 -2
  632. homeassistant/components/reolink/translations/pl.json +1 -10
  633. homeassistant/components/reolink/translations/tr.json +1 -67
  634. homeassistant/components/rest/manifest.json +0 -1
  635. homeassistant/components/ridwell/translations/tr.json +0 -22
  636. homeassistant/components/ring/manifest.json +0 -1
  637. homeassistant/components/roborock/image.py +2 -5
  638. homeassistant/components/roborock/manifest.json +1 -2
  639. homeassistant/components/roborock/roborock_storage.py +10 -29
  640. homeassistant/components/roborock/translations/tr.json +1 -9
  641. homeassistant/components/roomba/translations/tr.json +0 -6
  642. homeassistant/components/satel_integra/translations/sr-Latn.json +1 -2
  643. homeassistant/components/saunum/translations/el.json +1 -7
  644. homeassistant/components/saunum/translations/en-GB.json +1 -11
  645. homeassistant/components/saunum/translations/es.json +1 -38
  646. homeassistant/components/saunum/translations/et.json +1 -11
  647. homeassistant/components/saunum/translations/ga.json +1 -38
  648. homeassistant/components/saunum/translations/mk.json +0 -5
  649. homeassistant/components/saunum/translations/tr.json +1 -11
  650. homeassistant/components/schedule/translations/sr-Latn.json +1 -18
  651. homeassistant/components/scrape/translations/es.json +0 -1
  652. homeassistant/components/scrape/translations/sr-Latn.json +2 -63
  653. homeassistant/components/scrape/translations/tr.json +0 -4
  654. homeassistant/components/sensibo/translations/sr-Latn.json +0 -19
  655. homeassistant/components/sensor/translations/sr-Latn.json +5 -141
  656. homeassistant/components/sensor/translations/tr.json +0 -10
  657. homeassistant/components/senz/manifest.json +0 -1
  658. homeassistant/components/senz/translations/es.json +1 -17
  659. homeassistant/components/sfr_box/translations/tr.json +0 -4
  660. homeassistant/components/shelly/const.py +0 -1
  661. homeassistant/components/shelly/manifest.json +1 -1
  662. homeassistant/components/shelly/sensor.py +2 -0
  663. homeassistant/components/shelly/strings.json +0 -8
  664. homeassistant/components/shelly/switch.py +1 -0
  665. homeassistant/components/shelly/translations/bg.json +0 -5
  666. homeassistant/components/shelly/translations/cs.json +0 -8
  667. homeassistant/components/shelly/translations/de.json +0 -8
  668. homeassistant/components/shelly/translations/en-GB.json +0 -8
  669. homeassistant/components/shelly/translations/en.json +0 -8
  670. homeassistant/components/shelly/translations/es.json +2 -192
  671. homeassistant/components/shelly/translations/et.json +1 -10
  672. homeassistant/components/shelly/translations/fr.json +0 -10
  673. homeassistant/components/shelly/translations/ga.json +0 -46
  674. homeassistant/components/shelly/translations/it.json +2 -13
  675. homeassistant/components/shelly/translations/lt.json +0 -8
  676. homeassistant/components/shelly/translations/mk.json +0 -3
  677. homeassistant/components/shelly/translations/nl.json +0 -7
  678. homeassistant/components/shelly/translations/pl.json +0 -8
  679. homeassistant/components/shelly/translations/pt.json +0 -8
  680. homeassistant/components/shelly/translations/ru.json +0 -5
  681. homeassistant/components/shelly/translations/sk.json +0 -8
  682. homeassistant/components/shelly/translations/sv.json +9 -189
  683. homeassistant/components/shelly/translations/tr.json +5 -171
  684. homeassistant/components/shelly/translations/zh-Hans.json +0 -8
  685. homeassistant/components/shelly/translations/zh-Hant.json +0 -8
  686. homeassistant/components/shelly/valve.py +1 -1
  687. homeassistant/components/siren/translations/mk.json +2 -4
  688. homeassistant/components/smarla/translations/tr.json +0 -15
  689. homeassistant/components/smartthings/manifest.json +0 -1
  690. homeassistant/components/smartthings/translations/es.json +0 -74
  691. homeassistant/components/smartthings/translations/nl.json +0 -13
  692. homeassistant/components/smartthings/translations/tr.json +0 -20
  693. homeassistant/components/smhi/translations/tr.json +0 -19
  694. homeassistant/components/snoo/translations/tr.json +0 -8
  695. homeassistant/components/solaredge/translations/tr.json +3 -64
  696. homeassistant/components/sonos/manifest.json +0 -1
  697. homeassistant/components/speedtestdotnet/manifest.json +0 -1
  698. homeassistant/components/spotify/translations/es.json +0 -5
  699. homeassistant/components/sql/translations/es.json +0 -1
  700. homeassistant/components/sql/translations/sr-Latn.json +2 -61
  701. homeassistant/components/sql/translations/tr.json +0 -83
  702. homeassistant/components/squeezebox/translations/mk.json +0 -5
  703. homeassistant/components/squeezebox/translations/tr.json +0 -63
  704. homeassistant/components/starline/translations/sr-Latn.json +0 -7
  705. homeassistant/components/statistics/translations/sr-Latn.json +2 -118
  706. homeassistant/components/switch/translations/mk.json +1 -5
  707. homeassistant/components/switch/translations/sr-Latn.json +1 -2
  708. homeassistant/components/switch_as_x/translations/sr-Latn.json +3 -27
  709. homeassistant/components/switchbot/manifest.json +0 -1
  710. homeassistant/components/switchbot/translations/el.json +1 -2
  711. homeassistant/components/switchbot/translations/tr.json +0 -34
  712. homeassistant/components/switchbot_cloud/translations/tr.json +0 -20
  713. homeassistant/components/synology_dsm/translations/sr-Latn.json +0 -3
  714. homeassistant/components/system_bridge/translations/tr.json +0 -3
  715. homeassistant/components/systemmonitor/translations/tr.json +0 -6
  716. homeassistant/components/tautulli/translations/de.json +1 -1
  717. homeassistant/components/tedee/manifest.json +0 -1
  718. homeassistant/components/telegram/translations/de.json +1 -1
  719. homeassistant/components/telegram/translations/tr.json +0 -6
  720. homeassistant/components/telegram_bot/translations/tr.json +4 -203
  721. homeassistant/components/template/__init__.py +1 -31
  722. homeassistant/components/template/helpers.py +0 -5
  723. homeassistant/components/template/translations/de.json +4 -4
  724. homeassistant/components/template/translations/el.json +0 -4
  725. homeassistant/components/template/translations/es.json +0 -5
  726. homeassistant/components/template/translations/ga.json +0 -4
  727. homeassistant/components/template/translations/it.json +0 -4
  728. homeassistant/components/template/translations/pl.json +0 -37
  729. homeassistant/components/template/translations/ru.json +0 -4
  730. homeassistant/components/template/translations/sr-Latn.json +72 -933
  731. homeassistant/components/template/translations/tr.json +2 -172
  732. homeassistant/components/template/translations/zh-Hans.json +0 -4
  733. homeassistant/components/tesla_fleet/manifest.json +0 -1
  734. homeassistant/components/tesla_fleet/translations/es.json +0 -5
  735. homeassistant/components/tesla_fleet/translations/sr-Latn.json +0 -5
  736. homeassistant/components/tesla_wall_connector/translations/es.json +0 -3
  737. homeassistant/components/tesla_wall_connector/translations/ga.json +0 -3
  738. homeassistant/components/teslemetry/manifest.json +0 -1
  739. homeassistant/components/teslemetry/translations/sr-Latn.json +0 -5
  740. homeassistant/components/teslemetry/translations/tr.json +1 -77
  741. homeassistant/components/tessie/manifest.json +0 -1
  742. homeassistant/components/tessie/translations/sr-Latn.json +0 -5
  743. homeassistant/components/tessie/translations/tr.json +0 -3
  744. homeassistant/components/text/strings.json +3 -2
  745. homeassistant/components/text/translations/bg.json +8 -1
  746. homeassistant/components/text/translations/cs.json +3 -2
  747. homeassistant/components/text/translations/de.json +3 -2
  748. homeassistant/components/text/translations/en-GB.json +1 -7
  749. homeassistant/components/text/translations/en.json +3 -2
  750. homeassistant/components/text/translations/es.json +1 -7
  751. homeassistant/components/text/translations/et.json +1 -7
  752. homeassistant/components/text/translations/lt.json +3 -2
  753. homeassistant/components/text/translations/pt.json +8 -1
  754. homeassistant/components/text/translations/sk.json +3 -2
  755. homeassistant/components/text/translations/sr-Latn.json +2 -4
  756. homeassistant/components/text/translations/zh-Hant.json +3 -2
  757. homeassistant/components/tod/translations/sr-Latn.json +1 -16
  758. homeassistant/components/tolo/translations/tr.json +1 -2
  759. homeassistant/components/tomorrowio/translations/sr-Latn.json +0 -24
  760. homeassistant/components/tplink/manifest.json +0 -1
  761. homeassistant/components/traccar_server/translations/tr.json +0 -12
  762. homeassistant/components/transmission/translations/tr.json +0 -24
  763. homeassistant/components/trend/translations/sr-Latn.json +0 -21
  764. homeassistant/components/tuya/__init__.py +4 -12
  765. homeassistant/components/tuya/binary_sensor.py +2 -2
  766. homeassistant/components/tuya/humidifier.py +3 -3
  767. homeassistant/components/tuya/models.py +20 -18
  768. homeassistant/components/tuya/translations/es.json +0 -32
  769. homeassistant/components/tuya/translations/ga.json +0 -6
  770. homeassistant/components/tuya/translations/sr-Latn.json +0 -45
  771. homeassistant/components/tuya/translations/tr.json +0 -72
  772. homeassistant/components/tuya/util.py +9 -11
  773. homeassistant/components/twitch/translations/es.json +0 -5
  774. homeassistant/components/ukraine_alarm/translations/tr.json +1 -2
  775. homeassistant/components/unifi/light.py +29 -62
  776. homeassistant/components/unifi/translations/es.json +0 -3
  777. homeassistant/components/unifi/translations/tr.json +0 -5
  778. homeassistant/components/unifiprotect/camera.py +1 -5
  779. homeassistant/components/unifiprotect/manifest.json +1 -1
  780. homeassistant/components/unifiprotect/translations/bg.json +7 -0
  781. homeassistant/components/unifiprotect/translations/cs.json +1 -1
  782. homeassistant/components/unifiprotect/translations/de.json +1 -1
  783. homeassistant/components/unifiprotect/translations/el.json +5 -1
  784. homeassistant/components/unifiprotect/translations/en-GB.json +1 -11
  785. homeassistant/components/unifiprotect/translations/en.json +1 -1
  786. homeassistant/components/unifiprotect/translations/es.json +1 -11
  787. homeassistant/components/unifiprotect/translations/fi.json +7 -0
  788. homeassistant/components/unifiprotect/translations/ga.json +10 -10
  789. homeassistant/components/unifiprotect/translations/lt.json +1 -1
  790. homeassistant/components/unifiprotect/translations/nl.json +3 -0
  791. homeassistant/components/unifiprotect/translations/pt.json +10 -0
  792. homeassistant/components/unifiprotect/translations/sk.json +1 -1
  793. homeassistant/components/unifiprotect/translations/sr-Latn.json +0 -11
  794. homeassistant/components/unifiprotect/translations/sv.json +0 -3
  795. homeassistant/components/unifiprotect/translations/tr.json +0 -10
  796. homeassistant/components/unifiprotect/translations/zh-Hans.json +3 -2
  797. homeassistant/components/unifiprotect/translations/zh-Hant.json +1 -1
  798. homeassistant/components/update/translations/sr-Latn.json +1 -51
  799. homeassistant/components/utility_meter/translations/sr-Latn.json +2 -63
  800. homeassistant/components/vacuum/strings.json +12 -8
  801. homeassistant/components/vacuum/translations/cs.json +12 -8
  802. homeassistant/components/vacuum/translations/de.json +11 -7
  803. homeassistant/components/vacuum/translations/en-GB.json +1 -56
  804. homeassistant/components/vacuum/translations/en.json +12 -8
  805. homeassistant/components/vacuum/translations/es.json +1 -56
  806. homeassistant/components/vacuum/translations/et.json +1 -51
  807. homeassistant/components/vacuum/translations/ga.json +1 -48
  808. homeassistant/components/vacuum/translations/lt.json +12 -8
  809. homeassistant/components/vacuum/translations/pt.json +16 -4
  810. homeassistant/components/vacuum/translations/ru.json +1 -48
  811. homeassistant/components/vacuum/translations/sk.json +12 -8
  812. homeassistant/components/vacuum/translations/sv.json +1 -13
  813. homeassistant/components/vacuum/translations/tr.json +1 -48
  814. homeassistant/components/vacuum/translations/zh-Hans.json +2 -6
  815. homeassistant/components/vacuum/translations/zh-Hant.json +12 -8
  816. homeassistant/components/vegehub/translations/tr.json +0 -5
  817. homeassistant/components/velux/translations/tr.json +0 -12
  818. homeassistant/components/vesync/manifest.json +1 -1
  819. homeassistant/components/vesync/translations/tr.json +0 -11
  820. homeassistant/components/vicare/translations/es.json +0 -54
  821. homeassistant/components/vicare/translations/sr-Latn.json +0 -10
  822. homeassistant/components/vicare/translations/tr.json +0 -21
  823. homeassistant/components/volvo/translations/es.json +0 -6
  824. homeassistant/components/volvo/translations/tr.json +0 -142
  825. homeassistant/components/volvooncall/translations/tr.json +1 -18
  826. homeassistant/components/waqi/translations/sr-Latn.json +0 -32
  827. homeassistant/components/waqi/translations/tr.json +0 -40
  828. homeassistant/components/water_heater/translations/sr-Latn.json +1 -2
  829. homeassistant/components/weatherflow/translations/tr.json +0 -8
  830. homeassistant/components/webostv/manifest.json +0 -1
  831. homeassistant/components/whirlpool/translations/tr.json +0 -81
  832. homeassistant/components/withings/translations/es.json +0 -5
  833. homeassistant/components/withings/translations/sr-Latn.json +0 -5
  834. homeassistant/components/wled/config_flow.py +2 -34
  835. homeassistant/components/wled/coordinator.py +0 -21
  836. homeassistant/components/wled/strings.json +2 -15
  837. homeassistant/components/wled/translations/bg.json +1 -2
  838. homeassistant/components/wled/translations/cs.json +2 -15
  839. homeassistant/components/wled/translations/de.json +2 -15
  840. homeassistant/components/wled/translations/el.json +1 -20
  841. homeassistant/components/wled/translations/en-GB.json +2 -15
  842. homeassistant/components/wled/translations/en.json +2 -15
  843. homeassistant/components/wled/translations/es.json +2 -15
  844. homeassistant/components/wled/translations/et.json +2 -15
  845. homeassistant/components/wled/translations/ga.json +1 -6
  846. homeassistant/components/wled/translations/it.json +1 -6
  847. homeassistant/components/wled/translations/lt.json +2 -15
  848. homeassistant/components/wled/translations/nl.json +1 -2
  849. homeassistant/components/wled/translations/pl.json +1 -8
  850. homeassistant/components/wled/translations/pt.json +1 -6
  851. homeassistant/components/wled/translations/ru.json +2 -29
  852. homeassistant/components/wled/translations/sk.json +2 -15
  853. homeassistant/components/wled/translations/tr.json +1 -26
  854. homeassistant/components/wled/translations/zh-Hans.json +1 -6
  855. homeassistant/components/wled/translations/zh-Hant.json +2 -15
  856. homeassistant/components/wled/update.py +1 -1
  857. homeassistant/components/workday/translations/tr.json +0 -5
  858. homeassistant/components/xbox/translations/es.json +1 -16
  859. homeassistant/components/xbox/translations/ga.json +1 -10
  860. homeassistant/components/xbox/translations/tr.json +0 -111
  861. homeassistant/components/xiaomi_aqara/translations/sr-Latn.json +0 -6
  862. homeassistant/components/xiaomi_ble/manifest.json +0 -1
  863. homeassistant/components/yardian/translations/tr.json +0 -16
  864. homeassistant/components/yolink/translations/tr.json +0 -14
  865. homeassistant/components/youtube/manifest.json +1 -1
  866. homeassistant/components/youtube/translations/es.json +0 -5
  867. homeassistant/components/zha/config_flow.py +6 -2
  868. homeassistant/components/zha/manifest.json +0 -1
  869. homeassistant/components/zha/radio_manager.py +2 -2
  870. homeassistant/components/zha/translations/de.json +1 -1
  871. homeassistant/components/zha/translations/en-GB.json +0 -44
  872. homeassistant/components/zha/translations/es.json +0 -44
  873. homeassistant/components/zha/translations/et.json +0 -42
  874. homeassistant/components/zha/translations/ga.json +0 -44
  875. homeassistant/components/zha/translations/it.json +0 -44
  876. homeassistant/components/zha/translations/mk.json +1 -18
  877. homeassistant/components/zha/translations/nl.json +0 -8
  878. homeassistant/components/zha/translations/sr-Latn.json +0 -3
  879. homeassistant/components/zha/translations/tr.json +2 -213
  880. homeassistant/components/zha/translations/zh-Hans.json +0 -12
  881. homeassistant/components/zwave_js/translations/tr.json +0 -17
  882. homeassistant/const.py +1 -2
  883. homeassistant/generated/integrations.json +21 -21
  884. homeassistant/generated/labs.py +2 -2
  885. homeassistant/helpers/area_registry.py +1 -8
  886. homeassistant/helpers/condition.py +1 -16
  887. homeassistant/helpers/entity.py +1 -3
  888. homeassistant/helpers/floor_registry.py +1 -12
  889. homeassistant/helpers/trigger.py +1 -16
  890. homeassistant/package_constraints.txt +4 -4
  891. {homeassistant-2025.12.0.dist-info → homeassistant-2025.12.0b1.dist-info}/METADATA +2 -2
  892. {homeassistant-2025.12.0.dist-info → homeassistant-2025.12.0b1.dist-info}/RECORD +897 -983
  893. homeassistant/components/actron_air/translations/tr.json +0 -27
  894. homeassistant/components/airobot/translations/es.json +0 -44
  895. homeassistant/components/airobot/translations/ga.json +0 -40
  896. homeassistant/components/airobot/translations/it.json +0 -1
  897. homeassistant/components/airos/translations/tr.json +0 -71
  898. homeassistant/components/alert/translations/mk.json +0 -10
  899. homeassistant/components/anglian_water/translations/el.json +0 -20
  900. homeassistant/components/anglian_water/translations/en-GB.json +0 -55
  901. homeassistant/components/anglian_water/translations/es.json +0 -55
  902. homeassistant/components/anglian_water/translations/ga.json +0 -54
  903. homeassistant/components/anglian_water/translations/sv.json +0 -14
  904. homeassistant/components/anglian_water/translations/tr.json +0 -54
  905. homeassistant/components/automation/translations/mk.json +0 -10
  906. homeassistant/components/backblaze_b2/translations/tr.json +0 -92
  907. homeassistant/components/binary_sensor/trigger.py +0 -67
  908. homeassistant/components/binary_sensor/triggers.yaml +0 -25
  909. homeassistant/components/color_extractor/translations/mk.json +0 -7
  910. homeassistant/components/compit/translations/tr.json +0 -35
  911. homeassistant/components/cync/translations/tr.json +0 -46
  912. homeassistant/components/datetime/translations/sr-Latn.json +0 -17
  913. homeassistant/components/droplet/translations/tr.json +0 -40
  914. homeassistant/components/ekeybionyx/translations/tr.json +0 -66
  915. homeassistant/components/energy/translations/sr-Latn.json +0 -64
  916. homeassistant/components/energyid/translations/bg.json +0 -7
  917. homeassistant/components/energyid/translations/el.json +0 -53
  918. homeassistant/components/energyid/translations/en-GB.json +0 -71
  919. homeassistant/components/energyid/translations/es.json +0 -71
  920. homeassistant/components/energyid/translations/ga.json +0 -71
  921. homeassistant/components/energyid/translations/it.json +0 -71
  922. homeassistant/components/energyid/translations/nl.json +0 -1
  923. homeassistant/components/energyid/translations/sv.json +0 -37
  924. homeassistant/components/energyid/translations/tr.json +0 -71
  925. homeassistant/components/essent/translations/el.json +0 -9
  926. homeassistant/components/essent/translations/en-GB.json +0 -70
  927. homeassistant/components/essent/translations/es.json +0 -70
  928. homeassistant/components/essent/translations/ga.json +0 -70
  929. homeassistant/components/essent/translations/tr.json +0 -70
  930. homeassistant/components/fing/translations/tr.json +0 -24
  931. homeassistant/components/forked_daapd/translations/sr-Latn.json +0 -8
  932. homeassistant/components/go2rtc/util.py +0 -12
  933. homeassistant/components/google_air_quality/translations/el.json +0 -72
  934. homeassistant/components/google_air_quality/translations/en-GB.json +0 -225
  935. homeassistant/components/google_air_quality/translations/es.json +0 -239
  936. homeassistant/components/google_air_quality/translations/fr.json +0 -14
  937. homeassistant/components/google_air_quality/translations/ga.json +0 -225
  938. homeassistant/components/google_air_quality/translations/it.json +0 -106
  939. homeassistant/components/google_air_quality/translations/pl.json +0 -11
  940. homeassistant/components/google_air_quality/translations/ru.json +0 -33
  941. homeassistant/components/google_air_quality/translations/sr-Latn.json +0 -35
  942. homeassistant/components/google_air_quality/translations/sv.json +0 -122
  943. homeassistant/components/google_air_quality/translations/tr.json +0 -225
  944. homeassistant/components/hanna/translations/es.json +0 -44
  945. homeassistant/components/hue_ble/translations/el.json +0 -11
  946. homeassistant/components/hue_ble/translations/en-GB.json +0 -21
  947. homeassistant/components/hue_ble/translations/es.json +0 -21
  948. homeassistant/components/hue_ble/translations/et.json +0 -21
  949. homeassistant/components/hue_ble/translations/ga.json +0 -20
  950. homeassistant/components/hue_ble/translations/tr.json +0 -20
  951. homeassistant/components/hunterdouglas_powerview/translations/sr-Latn.json +0 -9
  952. homeassistant/components/imeon_inverter/translations/tr.json +0 -57
  953. homeassistant/components/inels/translations/tr.json +0 -30
  954. homeassistant/components/irm_kmi/translations/tr.json +0 -21
  955. homeassistant/components/labs/translations/es.json +0 -3
  956. homeassistant/components/labs/translations/sr-Latn.json +0 -3
  957. homeassistant/components/lannouncer/translations/tr.json +0 -8
  958. homeassistant/components/libre_hardware_monitor/translations/tr.json +0 -23
  959. homeassistant/components/london_underground/translations/tr.json +0 -38
  960. homeassistant/components/lunatone/translations/tr.json +0 -36
  961. homeassistant/components/media_source/translations/tr.json +0 -5
  962. homeassistant/components/meteo_lt/translations/tr.json +0 -14
  963. homeassistant/components/nintendo_parental_controls/translations/tr.json +0 -68
  964. homeassistant/components/notify/translations/sr-Latn.json +0 -3
  965. homeassistant/components/openrgb/translations/tr.json +0 -84
  966. homeassistant/components/prowl/translations/tr.json +0 -21
  967. homeassistant/components/remote/translations/mk.json +0 -10
  968. homeassistant/components/satel_integra/translations/tr.json +0 -131
  969. homeassistant/components/saunum/translations/ru.json +0 -9
  970. homeassistant/components/saunum/translations/sr-Latn.json +0 -9
  971. homeassistant/components/script/translations/mk.json +0 -10
  972. homeassistant/components/sftp_storage/translations/tr.json +0 -22
  973. homeassistant/components/sleep_as_android/translations/tr.json +0 -68
  974. homeassistant/components/togrill/translations/tr.json +0 -58
  975. homeassistant/components/uptime_kuma/translations/tr.json +0 -13
  976. homeassistant/components/vacuum/translations/mk.json +0 -10
  977. homeassistant/components/victron_ble/translations/es.json +0 -234
  978. homeassistant/components/victron_remote_monitoring/translations/tr.json +0 -102
  979. homeassistant/components/water_heater/translations/mk.json +0 -10
  980. homeassistant/components/zeroconf/translations/tr.json +0 -14
  981. {homeassistant-2025.12.0.dist-info → homeassistant-2025.12.0b1.dist-info}/WHEEL +0 -0
  982. {homeassistant-2025.12.0.dist-info → homeassistant-2025.12.0b1.dist-info}/entry_points.txt +0 -0
  983. {homeassistant-2025.12.0.dist-info → homeassistant-2025.12.0b1.dist-info}/licenses/LICENSE.md +0 -0
  984. {homeassistant-2025.12.0.dist-info → homeassistant-2025.12.0b1.dist-info}/licenses/homeassistant/backports/LICENSE.Python +0 -0
  985. {homeassistant-2025.12.0.dist-info → homeassistant-2025.12.0b1.dist-info}/top_level.txt +0 -0
@@ -4,13 +4,12 @@ from __future__ import annotations
4
4
 
5
5
  import asyncio
6
6
  from collections.abc import Awaitable, Callable
7
- from contextlib import suppress
8
7
  from datetime import datetime, timedelta
9
8
  from enum import Enum
10
9
  import logging
11
10
  from typing import Any, cast
12
11
 
13
- from hass_nabucasa import Cloud, NabuCasaBaseError
12
+ from hass_nabucasa import Cloud
14
13
  import voluptuous as vol
15
14
 
16
15
  from homeassistant.components import alexa, google_assistant
@@ -79,16 +78,13 @@ from .subscription import async_subscription_info
79
78
  DEFAULT_MODE = MODE_PROD
80
79
 
81
80
  PLATFORMS = [
81
+ Platform.AI_TASK,
82
82
  Platform.BINARY_SENSOR,
83
+ Platform.CONVERSATION,
83
84
  Platform.STT,
84
85
  Platform.TTS,
85
86
  ]
86
87
 
87
- LLM_PLATFORMS = [
88
- Platform.AI_TASK,
89
- Platform.CONVERSATION,
90
- ]
91
-
92
88
  SERVICE_REMOTE_CONNECT = "remote_connect"
93
89
  SERVICE_REMOTE_DISCONNECT = "remote_disconnect"
94
90
 
@@ -435,14 +431,7 @@ def _handle_prefs_updated(hass: HomeAssistant, cloud: Cloud[CloudClient]) -> Non
435
431
 
436
432
  async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
437
433
  """Set up a config entry."""
438
- platforms = PLATFORMS.copy()
439
- if (cloud := hass.data[DATA_CLOUD]).is_logged_in:
440
- with suppress(NabuCasaBaseError):
441
- await cloud.llm.async_ensure_token()
442
- platforms += LLM_PLATFORMS
443
-
444
- await hass.config_entries.async_forward_entry_setups(entry, platforms)
445
- entry.runtime_data = {"platforms": platforms}
434
+ await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
446
435
  stt_tts_entities_added = hass.data[DATA_PLATFORMS_SETUP]["stt_tts_entities_added"]
447
436
  stt_tts_entities_added.set()
448
437
 
@@ -451,9 +440,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
451
440
 
452
441
  async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
453
442
  """Unload a config entry."""
454
- return await hass.config_entries.async_unload_platforms(
455
- entry, entry.runtime_data["platforms"]
456
- )
443
+ return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
457
444
 
458
445
 
459
446
  @callback
@@ -6,6 +6,7 @@ import io
6
6
  from json import JSONDecodeError
7
7
  import logging
8
8
 
9
+ from hass_nabucasa import NabuCasaBaseError
9
10
  from hass_nabucasa.llm import (
10
11
  LLMAuthenticationError,
11
12
  LLMError,
@@ -19,7 +20,7 @@ from PIL import Image
19
20
  from homeassistant.components import ai_task, conversation
20
21
  from homeassistant.config_entries import ConfigEntry
21
22
  from homeassistant.core import HomeAssistant
22
- from homeassistant.exceptions import HomeAssistantError
23
+ from homeassistant.exceptions import ConfigEntryAuthFailed, HomeAssistantError
23
24
  from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
24
25
  from homeassistant.util.json import json_loads
25
26
 
@@ -93,11 +94,17 @@ async def async_setup_entry(
93
94
  async_add_entities: AddConfigEntryEntitiesCallback,
94
95
  ) -> None:
95
96
  """Set up Home Assistant Cloud AI Task entity."""
96
- cloud = hass.data[DATA_CLOUD]
97
- async_add_entities([CloudAITaskEntity(cloud, config_entry)])
97
+ if not (cloud := hass.data[DATA_CLOUD]).is_logged_in:
98
+ return
99
+ try:
100
+ await cloud.llm.async_ensure_token()
101
+ except (LLMError, NabuCasaBaseError):
102
+ return
98
103
 
104
+ async_add_entities([CloudLLMTaskEntity(cloud, config_entry)])
99
105
 
100
- class CloudAITaskEntity(BaseCloudLLMEntity, ai_task.AITaskEntity):
106
+
107
+ class CloudLLMTaskEntity(ai_task.AITaskEntity, BaseCloudLLMEntity):
101
108
  """Home Assistant Cloud AI Task entity."""
102
109
 
103
110
  _attr_has_entity_name = True
@@ -174,7 +181,7 @@ class CloudAITaskEntity(BaseCloudLLMEntity, ai_task.AITaskEntity):
174
181
  attachments=attachments,
175
182
  )
176
183
  except LLMAuthenticationError as err:
177
- raise HomeAssistantError("Cloud LLM authentication failed") from err
184
+ raise ConfigEntryAuthFailed("Cloud LLM authentication failed") from err
178
185
  except LLMRateLimitError as err:
179
186
  raise HomeAssistantError("Cloud LLM is rate limited") from err
180
187
  except LLMResponseError as err:
@@ -71,7 +71,6 @@ class CloudClient(Interface):
71
71
  self._google_config_init_lock = asyncio.Lock()
72
72
  self._relayer_region: str | None = None
73
73
  self._cloud_ice_servers_listener: Callable[[], None] | None = None
74
- self._ice_servers: list[RTCIceServer] = []
75
74
 
76
75
  @property
77
76
  def base_path(self) -> Path:
@@ -118,11 +117,6 @@ class CloudClient(Interface):
118
117
  """Return the connected relayer region."""
119
118
  return self._relayer_region
120
119
 
121
- @property
122
- def ice_servers(self) -> list[RTCIceServer]:
123
- """Return the current ICE servers."""
124
- return self._ice_servers
125
-
126
120
  async def get_alexa_config(self) -> alexa_config.CloudAlexaConfig:
127
121
  """Return Alexa config."""
128
122
  if self._alexa_config is None:
@@ -209,8 +203,11 @@ class CloudClient(Interface):
209
203
  ice_servers: list[RTCIceServer],
210
204
  ) -> Callable[[], None]:
211
205
  """Register cloud ice server."""
212
- self._ice_servers = ice_servers
213
- return async_register_ice_servers(self._hass, lambda: self._ice_servers)
206
+
207
+ def get_ice_servers() -> list[RTCIceServer]:
208
+ return ice_servers
209
+
210
+ return async_register_ice_servers(self._hass, get_ice_servers)
214
211
 
215
212
  async def async_register_cloud_ice_servers_listener(
216
213
  prefs: CloudPreferences,
@@ -271,7 +268,6 @@ class CloudClient(Interface):
271
268
 
272
269
  async def logout_cleanups(self) -> None:
273
270
  """Cleanup some stuff after logout."""
274
- self._ice_servers = []
275
271
  await self.prefs.async_set_username(None)
276
272
 
277
273
  if self._alexa_config:
@@ -4,6 +4,9 @@ from __future__ import annotations
4
4
 
5
5
  from typing import Literal
6
6
 
7
+ from hass_nabucasa import NabuCasaBaseError
8
+ from hass_nabucasa.llm import LLMError
9
+
7
10
  from homeassistant.components import conversation
8
11
  from homeassistant.config_entries import ConfigEntry
9
12
  from homeassistant.const import MATCH_ALL
@@ -21,13 +24,19 @@ async def async_setup_entry(
21
24
  async_add_entities: AddConfigEntryEntitiesCallback,
22
25
  ) -> None:
23
26
  """Set up the Home Assistant Cloud conversation entity."""
24
- cloud = hass.data[DATA_CLOUD]
27
+ if not (cloud := hass.data[DATA_CLOUD]).is_logged_in:
28
+ return
29
+ try:
30
+ await cloud.llm.async_ensure_token()
31
+ except (LLMError, NabuCasaBaseError):
32
+ return
33
+
25
34
  async_add_entities([CloudConversationEntity(cloud, config_entry)])
26
35
 
27
36
 
28
37
  class CloudConversationEntity(
29
- BaseCloudLLMEntity,
30
38
  conversation.ConversationEntity,
39
+ BaseCloudLLMEntity,
31
40
  ):
32
41
  """Home Assistant Cloud conversation agent."""
33
42
 
@@ -8,9 +8,10 @@ import logging
8
8
  import re
9
9
  from typing import Any, Literal, cast
10
10
 
11
- from hass_nabucasa import Cloud, NabuCasaBaseError
11
+ from hass_nabucasa import Cloud
12
12
  from hass_nabucasa.llm import (
13
13
  LLMAuthenticationError,
14
+ LLMError,
14
15
  LLMRateLimitError,
15
16
  LLMResponseError,
16
17
  LLMServiceError,
@@ -36,7 +37,7 @@ from voluptuous_openapi import convert
36
37
 
37
38
  from homeassistant.components import conversation
38
39
  from homeassistant.config_entries import ConfigEntry
39
- from homeassistant.exceptions import HomeAssistantError
40
+ from homeassistant.exceptions import ConfigEntryAuthFailed, HomeAssistantError
40
41
  from homeassistant.helpers import llm
41
42
  from homeassistant.helpers.entity import Entity
42
43
  from homeassistant.util import slugify
@@ -561,7 +562,7 @@ class BaseCloudLLMEntity(Entity):
561
562
  "schema": _format_structured_output(
562
563
  structure, chat_log.llm_api
563
564
  ),
564
- "strict": False,
565
+ "strict": True,
565
566
  },
566
567
  }
567
568
 
@@ -600,14 +601,14 @@ class BaseCloudLLMEntity(Entity):
600
601
  )
601
602
 
602
603
  except LLMAuthenticationError as err:
603
- raise HomeAssistantError("Cloud LLM authentication failed") from err
604
+ raise ConfigEntryAuthFailed("Cloud LLM authentication failed") from err
604
605
  except LLMRateLimitError as err:
605
606
  raise HomeAssistantError("Cloud LLM is rate limited") from err
606
607
  except LLMResponseError as err:
607
608
  raise HomeAssistantError(str(err)) from err
608
609
  except LLMServiceError as err:
609
610
  raise HomeAssistantError("Error talking to Cloud LLM") from err
610
- except NabuCasaBaseError as err:
611
+ except LLMError as err:
611
612
  raise HomeAssistantError(str(err)) from err
612
613
 
613
614
  if not chat_log.unresponded_tool_results:
@@ -99,7 +99,6 @@ def async_setup(hass: HomeAssistant) -> None:
99
99
  websocket_api.async_register_command(hass, websocket_hook_delete)
100
100
  websocket_api.async_register_command(hass, websocket_remote_connect)
101
101
  websocket_api.async_register_command(hass, websocket_remote_disconnect)
102
- websocket_api.async_register_command(hass, websocket_webrtc_ice_servers)
103
102
 
104
103
  websocket_api.async_register_command(hass, google_assistant_get)
105
104
  websocket_api.async_register_command(hass, google_assistant_list)
@@ -1108,7 +1107,6 @@ async def alexa_sync(
1108
1107
 
1109
1108
 
1110
1109
  @websocket_api.websocket_command({"type": "cloud/tts/info"})
1111
- @callback
1112
1110
  def tts_info(
1113
1111
  hass: HomeAssistant,
1114
1112
  connection: websocket_api.ActiveConnection,
@@ -1136,22 +1134,3 @@ def tts_info(
1136
1134
  )
1137
1135
 
1138
1136
  connection.send_result(msg["id"], {"languages": result})
1139
-
1140
-
1141
- @websocket_api.websocket_command(
1142
- {
1143
- vol.Required("type"): "cloud/webrtc/ice_servers",
1144
- }
1145
- )
1146
- @_require_cloud_login
1147
- @callback
1148
- def websocket_webrtc_ice_servers(
1149
- hass: HomeAssistant,
1150
- connection: websocket_api.ActiveConnection,
1151
- msg: dict[str, Any],
1152
- ) -> None:
1153
- """Handle get WebRTC ICE servers websocket command."""
1154
- connection.send_result(
1155
- msg["id"],
1156
- [server.to_dict() for server in hass.data[DATA_CLOUD].client.ice_servers],
1157
- )
@@ -13,6 +13,6 @@
13
13
  "integration_type": "system",
14
14
  "iot_class": "cloud_push",
15
15
  "loggers": ["acme", "hass_nabucasa", "snitun"],
16
- "requirements": ["hass-nabucasa==1.7.0"],
16
+ "requirements": ["hass-nabucasa==1.6.2"],
17
17
  "single_config_entry": true
18
18
  }
@@ -1,11 +1,4 @@
1
1
  {
2
- "entity": {
3
- "ai_task": {
4
- "cloud_ai": {
5
- "name": "Home Assistant Cloud AI"
6
- }
7
- }
8
- },
9
2
  "exceptions": {
10
3
  "backup_size_too_large": {
11
4
  "message": "The backup size of {size}GB is too large to be uploaded to Home Assistant Cloud."
@@ -1,11 +1,4 @@
1
1
  {
2
- "entity": {
3
- "ai_task": {
4
- "cloud_ai": {
5
- "name": "Home Assistant Cloud AI"
6
- }
7
- }
8
- },
9
2
  "exceptions": {
10
3
  "backup_size_too_large": {
11
4
  "message": "El tama\u00f1o de la copia de seguridad de {size}GB es demasiado grande para subirla a Home Assistant Cloud."
@@ -1,11 +1,4 @@
1
1
  {
2
- "entity": {
3
- "ai_task": {
4
- "cloud_ai": {
5
- "name": "Home Assistant Cloud AI"
6
- }
7
- }
8
- },
9
2
  "exceptions": {
10
3
  "backup_size_too_large": {
11
4
  "message": "Varukoopia suurus {size} GB on Home Assistant Cloudi \u00fcleslaadimiseks liiga suur."
@@ -1,11 +1,4 @@
1
1
  {
2
- "entity": {
3
- "ai_task": {
4
- "cloud_ai": {
5
- "name": "C\u00fant\u00f3ir Baile Cloud AI"
6
- }
7
- }
8
- },
9
2
  "exceptions": {
10
3
  "backup_size_too_large": {
11
4
  "message": "T\u00e1 an m\u00e9id c\u00faltaca de {size}GB r\u00f3mh\u00f3r le huasl\u00f3d\u00e1il chuig Home Assistant Cloud."
@@ -1,11 +1,4 @@
1
1
  {
2
- "entity": {
3
- "ai_task": {
4
- "cloud_ai": {
5
- "name": "Home Asistan\u0131 Bulut Yapay Zeka"
6
- }
7
- }
8
- },
9
2
  "exceptions": {
10
3
  "backup_size_too_large": {
11
4
  "message": "{size} GB'l\u0131k yedekleme boyutu Home Assistant Cloud'a y\u00fcklenemeyecek kadar b\u00fcy\u00fck."
@@ -1,8 +1,7 @@
1
1
  {
2
2
  "config": {
3
3
  "abort": {
4
- "already_configured": "Cihaz zaten yap\u0131land\u0131r\u0131lm\u0131\u015f",
5
- "reauth_successful": "Kimlik bilgileri ba\u015far\u0131yla g\u00fcncellendi"
4
+ "already_configured": "Cihaz zaten yap\u0131land\u0131r\u0131lm\u0131\u015f"
6
5
  },
7
6
  "error": {
8
7
  "cannot_connect": "Ba\u011flanma hatas\u0131",
@@ -12,14 +11,6 @@
12
11
  "unknown": "Beklenmeyen hata"
13
12
  },
14
13
  "step": {
15
- "reauth_confirm": {
16
- "data": {
17
- "api_key": "API Anahtar\u0131",
18
- "api_token": "API gizli dizisi"
19
- },
20
- "description": "Mevcut Coinbase API anahtar\u0131n\u0131z kullan\u0131mdan kald\u0131r\u0131lan v2 API i\u00e7in g\u00f6r\u00fcn\u00fcyor. L\u00fctfen v3 API i\u00e7in olu\u015fturulmu\u015f yeni bir API anahtar\u0131yla yeniden yap\u0131land\u0131r\u0131n. [Geli\u015ftirici Platformu]'nu ziyaret edin.{developer_url}) i\u00e7in yeni kimlik bilgileri olu\u015fturmak i\u00e7in {account_name}.",
21
- "title": "Coinbase API kimlik bilgilerini g\u00fcncelleyin"
22
- },
23
14
  "user": {
24
15
  "data": {
25
16
  "api_key": "API Anahtar\u0131",
@@ -4,7 +4,6 @@
4
4
  "already_configured": "Hizmet zaten yap\u0131land\u0131r\u0131lm\u0131\u015f",
5
5
  "cannot_connect": "Ba\u011flanma hatas\u0131",
6
6
  "invalid_auth": "Ge\u00e7ersiz kimlik do\u011frulama",
7
- "invalid_pin": "Verilen PIN ge\u00e7ersiz. 4-10 haneli bir say\u0131 olmal\u0131d\u0131r.",
8
7
  "reauth_successful": "Yeniden kimlik do\u011frulama ba\u015far\u0131l\u0131 oldu",
9
8
  "reconfigure_successful": "Yeniden yap\u0131land\u0131rma ba\u015far\u0131l\u0131 oldu",
10
9
  "unknown": "Beklenmeyen hata"
@@ -12,7 +11,6 @@
12
11
  "error": {
13
12
  "cannot_connect": "Ba\u011flanma hatas\u0131",
14
13
  "invalid_auth": "Ge\u00e7ersiz kimlik do\u011frulama",
15
- "invalid_pin": "Verilen PIN ge\u00e7ersiz. 4-10 haneli bir say\u0131 olmal\u0131d\u0131r.",
16
14
  "unknown": "Beklenmeyen hata"
17
15
  },
18
16
  "flow_title": "{host}",
@@ -236,9 +236,7 @@ async def async_prepare_agent(
236
236
 
237
237
 
238
238
  async def async_handle_sentence_triggers(
239
- hass: HomeAssistant,
240
- user_input: ConversationInput,
241
- chat_log: ChatLog,
239
+ hass: HomeAssistant, user_input: ConversationInput
242
240
  ) -> str | None:
243
241
  """Try to match input against sentence triggers and return response text.
244
242
 
@@ -247,13 +245,12 @@ async def async_handle_sentence_triggers(
247
245
  agent = get_agent_manager(hass).default_agent
248
246
  assert agent is not None
249
247
 
250
- return await agent.async_handle_sentence_triggers(user_input, chat_log)
248
+ return await agent.async_handle_sentence_triggers(user_input)
251
249
 
252
250
 
253
251
  async def async_handle_intents(
254
252
  hass: HomeAssistant,
255
253
  user_input: ConversationInput,
256
- chat_log: ChatLog,
257
254
  *,
258
255
  intent_filter: Callable[[RecognizeResult], bool] | None = None,
259
256
  ) -> intent.IntentResponse | None:
@@ -264,9 +261,7 @@ async def async_handle_intents(
264
261
  agent = get_agent_manager(hass).default_agent
265
262
  assert agent is not None
266
263
 
267
- return await agent.async_handle_intents(
268
- user_input, chat_log, intent_filter=intent_filter
269
- )
264
+ return await agent.async_handle_intents(user_input, intent_filter=intent_filter)
270
265
 
271
266
 
272
267
  async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
@@ -431,14 +431,26 @@ class DefaultAgent(ConversationEntity):
431
431
  ) -> ConversationResult:
432
432
  """Handle a message."""
433
433
  response: intent.IntentResponse | None = None
434
+ tool_input: llm.ToolInput | None = None
435
+ tool_result: dict[str, Any] = {}
434
436
 
435
437
  # Check if a trigger matched
436
438
  if trigger_result := await self.async_recognize_sentence_trigger(user_input):
437
439
  # Process callbacks and get response
438
440
  response_text = await self._handle_trigger_result(
439
- trigger_result, user_input, chat_log
441
+ trigger_result, user_input
440
442
  )
441
443
 
444
+ # Create tool result
445
+ tool_input = llm.ToolInput(
446
+ tool_name="trigger_sentence",
447
+ tool_args={},
448
+ external=True,
449
+ )
450
+ tool_result = {
451
+ "response": response_text,
452
+ }
453
+
442
454
  # Convert to conversation result
443
455
  response = intent.IntentResponse(
444
456
  language=user_input.language or self.hass.config.language
@@ -450,7 +462,40 @@ class DefaultAgent(ConversationEntity):
450
462
  intent_result = await self.async_recognize_intent(user_input)
451
463
 
452
464
  response = await self._async_process_intent_result(
453
- intent_result, user_input, chat_log
465
+ intent_result, user_input
466
+ )
467
+
468
+ if response.response_type != intent.IntentResponseType.ERROR:
469
+ assert intent_result is not None
470
+ assert intent_result.intent is not None
471
+ # Create external tool call for the intent
472
+ tool_input = llm.ToolInput(
473
+ tool_name=intent_result.intent.name,
474
+ tool_args={
475
+ entity.name: entity.value or entity.text
476
+ for entity in intent_result.entities_list
477
+ },
478
+ external=True,
479
+ )
480
+ # Create tool result from intent response
481
+ tool_result = llm.IntentResponseDict(response)
482
+
483
+ # Add tool call and result to chat log if we have one
484
+ if tool_input is not None:
485
+ chat_log.async_add_assistant_content_without_tools(
486
+ AssistantContent(
487
+ agent_id=user_input.agent_id,
488
+ content=None,
489
+ tool_calls=[tool_input],
490
+ )
491
+ )
492
+ chat_log.async_add_assistant_content_without_tools(
493
+ ToolResultContent(
494
+ agent_id=user_input.agent_id,
495
+ tool_call_id=tool_input.id,
496
+ tool_name=tool_input.tool_name,
497
+ tool_result=tool_result,
498
+ )
454
499
  )
455
500
 
456
501
  speech: str = response.speech.get("plain", {}).get("speech", "")
@@ -469,7 +514,6 @@ class DefaultAgent(ConversationEntity):
469
514
  self,
470
515
  result: RecognizeResult | None,
471
516
  user_input: ConversationInput,
472
- chat_log: ChatLog,
473
517
  ) -> intent.IntentResponse:
474
518
  """Process user input with intents."""
475
519
  language = user_input.language or self.hass.config.language
@@ -532,21 +576,12 @@ class DefaultAgent(ConversationEntity):
532
576
  ConversationTraceEventType.TOOL_CALL,
533
577
  {
534
578
  "intent_name": result.intent.name,
535
- "slots": {entity.name: entity.value for entity in result.entities_list},
579
+ "slots": {
580
+ entity.name: entity.value or entity.text
581
+ for entity in result.entities_list
582
+ },
536
583
  },
537
584
  )
538
- tool_input = llm.ToolInput(
539
- tool_name=result.intent.name,
540
- tool_args={entity.name: entity.value for entity in result.entities_list},
541
- external=True,
542
- )
543
- chat_log.async_add_assistant_content_without_tools(
544
- AssistantContent(
545
- agent_id=user_input.agent_id,
546
- content=None,
547
- tool_calls=[tool_input],
548
- )
549
- )
550
585
 
551
586
  try:
552
587
  intent_response = await intent.async_handle(
@@ -609,16 +644,6 @@ class DefaultAgent(ConversationEntity):
609
644
  )
610
645
  intent_response.async_set_speech(speech)
611
646
 
612
- tool_result = llm.IntentResponseDict(intent_response)
613
- chat_log.async_add_assistant_content_without_tools(
614
- ToolResultContent(
615
- agent_id=user_input.agent_id,
616
- tool_call_id=tool_input.id,
617
- tool_name=tool_input.tool_name,
618
- tool_result=tool_result,
619
- )
620
- )
621
-
622
647
  return intent_response
623
648
 
624
649
  def _recognize(
@@ -1545,31 +1570,16 @@ class DefaultAgent(ConversationEntity):
1545
1570
  )
1546
1571
 
1547
1572
  async def _handle_trigger_result(
1548
- self,
1549
- result: SentenceTriggerResult,
1550
- user_input: ConversationInput,
1551
- chat_log: ChatLog,
1573
+ self, result: SentenceTriggerResult, user_input: ConversationInput
1552
1574
  ) -> str:
1553
1575
  """Run sentence trigger callbacks and return response text."""
1576
+
1554
1577
  # Gather callback responses in parallel
1555
1578
  trigger_callbacks = [
1556
1579
  self._triggers_details[trigger_id].callback(user_input, trigger_result)
1557
1580
  for trigger_id, trigger_result in result.matched_triggers.items()
1558
1581
  ]
1559
1582
 
1560
- tool_input = llm.ToolInput(
1561
- tool_name="trigger_sentence",
1562
- tool_args={},
1563
- external=True,
1564
- )
1565
- chat_log.async_add_assistant_content_without_tools(
1566
- AssistantContent(
1567
- agent_id=user_input.agent_id,
1568
- content=None,
1569
- tool_calls=[tool_input],
1570
- )
1571
- )
1572
-
1573
1583
  # Use first non-empty result as response.
1574
1584
  #
1575
1585
  # There may be multiple copies of a trigger running when editing in
@@ -1598,38 +1608,23 @@ class DefaultAgent(ConversationEntity):
1598
1608
  f"component.{DOMAIN}.conversation.agent.done", "Done"
1599
1609
  )
1600
1610
 
1601
- tool_result: dict[str, Any] = {"response": response_text}
1602
- chat_log.async_add_assistant_content_without_tools(
1603
- ToolResultContent(
1604
- agent_id=user_input.agent_id,
1605
- tool_call_id=tool_input.id,
1606
- tool_name=tool_input.tool_name,
1607
- tool_result=tool_result,
1608
- )
1609
- )
1610
-
1611
1611
  return response_text
1612
1612
 
1613
1613
  async def async_handle_sentence_triggers(
1614
- self,
1615
- user_input: ConversationInput,
1616
- chat_log: ChatLog,
1614
+ self, user_input: ConversationInput
1617
1615
  ) -> str | None:
1618
1616
  """Try to input sentence against sentence triggers and return response text.
1619
1617
 
1620
1618
  Returns None if no match occurred.
1621
1619
  """
1622
1620
  if trigger_result := await self.async_recognize_sentence_trigger(user_input):
1623
- return await self._handle_trigger_result(
1624
- trigger_result, user_input, chat_log
1625
- )
1621
+ return await self._handle_trigger_result(trigger_result, user_input)
1626
1622
 
1627
1623
  return None
1628
1624
 
1629
1625
  async def async_handle_intents(
1630
1626
  self,
1631
1627
  user_input: ConversationInput,
1632
- chat_log: ChatLog,
1633
1628
  *,
1634
1629
  intent_filter: Callable[[RecognizeResult], bool] | None = None,
1635
1630
  ) -> intent.IntentResponse | None:
@@ -1645,7 +1640,7 @@ class DefaultAgent(ConversationEntity):
1645
1640
  # No error message on failed match
1646
1641
  return None
1647
1642
 
1648
- response = await self._async_process_intent_result(result, user_input, chat_log)
1643
+ response = await self._async_process_intent_result(result, user_input)
1649
1644
  if (
1650
1645
  response.response_type == intent.IntentResponseType.ERROR
1651
1646
  and response.error_code
@@ -6,5 +6,5 @@
6
6
  "documentation": "https://www.home-assistant.io/integrations/conversation",
7
7
  "integration_type": "entity",
8
8
  "quality_scale": "internal",
9
- "requirements": ["hassil==3.5.0", "home-assistant-intents==2025.12.2"]
9
+ "requirements": ["hassil==3.4.0", "home-assistant-intents==2025.11.24"]
10
10
  }