homeassistant 2025.12.0__py3-none-any.whl → 2025.12.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 (974) 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 -19
  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/aosmith/translations/tr.json +0 -11
  58. homeassistant/components/apcupsd/translations/es.json +0 -14
  59. homeassistant/components/apcupsd/translations/sr-Latn.json +0 -3
  60. homeassistant/components/apple_tv/manifest.json +0 -1
  61. homeassistant/components/assist_pipeline/pipeline.py +57 -58
  62. homeassistant/components/assist_satellite/manifest.json +1 -1
  63. homeassistant/components/assist_satellite/strings.json +12 -8
  64. homeassistant/components/assist_satellite/translations/cs.json +12 -8
  65. homeassistant/components/assist_satellite/translations/de.json +12 -8
  66. homeassistant/components/assist_satellite/translations/en-GB.json +1 -54
  67. homeassistant/components/assist_satellite/translations/en.json +12 -8
  68. homeassistant/components/assist_satellite/translations/es.json +1 -54
  69. homeassistant/components/assist_satellite/translations/et.json +1 -54
  70. homeassistant/components/assist_satellite/translations/ga.json +1 -46
  71. homeassistant/components/assist_satellite/translations/lt.json +12 -8
  72. homeassistant/components/assist_satellite/translations/pt.json +16 -4
  73. homeassistant/components/assist_satellite/translations/sk.json +12 -8
  74. homeassistant/components/assist_satellite/translations/tr.json +1 -46
  75. homeassistant/components/assist_satellite/translations/zh-Hans.json +0 -5
  76. homeassistant/components/assist_satellite/translations/zh-Hant.json +12 -8
  77. homeassistant/components/august/translations/tr.json +1 -23
  78. homeassistant/components/automation/__init__.py +0 -1
  79. homeassistant/components/automation/manifest.json +0 -2
  80. homeassistant/components/automation/strings.json +4 -4
  81. homeassistant/components/automation/translations/cs.json +4 -4
  82. homeassistant/components/automation/translations/de.json +4 -4
  83. homeassistant/components/automation/translations/en-GB.json +0 -8
  84. homeassistant/components/automation/translations/en.json +4 -4
  85. homeassistant/components/automation/translations/es.json +0 -8
  86. homeassistant/components/automation/translations/et.json +4 -4
  87. homeassistant/components/automation/translations/fr.json +0 -8
  88. homeassistant/components/automation/translations/lt.json +4 -4
  89. homeassistant/components/automation/translations/pt.json +8 -0
  90. homeassistant/components/automation/translations/sk.json +4 -4
  91. homeassistant/components/automation/translations/sr-Latn.json +0 -28
  92. homeassistant/components/automation/translations/zh-Hant.json +4 -4
  93. homeassistant/components/backblaze_b2/translations/de.json +2 -2
  94. homeassistant/components/backblaze_b2/translations/es.json +1 -1
  95. homeassistant/components/bang_olufsen/translations/es.json +0 -992
  96. homeassistant/components/bang_olufsen/translations/ga.json +0 -992
  97. homeassistant/components/bang_olufsen/translations/nl.json +3 -76
  98. homeassistant/components/bang_olufsen/translations/pt.json +0 -1
  99. homeassistant/components/bayesian/translations/sr-Latn.json +1 -2
  100. homeassistant/components/bayesian/translations/tr.json +10 -81
  101. homeassistant/components/binary_sensor/icons.json +0 -8
  102. homeassistant/components/binary_sensor/strings.json +1 -36
  103. homeassistant/components/binary_sensor/translations/cs.json +1 -36
  104. homeassistant/components/binary_sensor/translations/de.json +1 -36
  105. homeassistant/components/binary_sensor/translations/en-GB.json +1 -36
  106. homeassistant/components/binary_sensor/translations/en.json +1 -36
  107. homeassistant/components/binary_sensor/translations/es.json +1 -36
  108. homeassistant/components/binary_sensor/translations/et.json +1 -36
  109. homeassistant/components/binary_sensor/translations/lt.json +1 -36
  110. homeassistant/components/binary_sensor/translations/mk.json +0 -8
  111. homeassistant/components/binary_sensor/translations/sk.json +1 -36
  112. homeassistant/components/binary_sensor/translations/sr-Latn.json +0 -1
  113. homeassistant/components/binary_sensor/translations/zh-Hant.json +1 -36
  114. homeassistant/components/blebox/translations/sr-Latn.json +0 -1
  115. homeassistant/components/blink/translations/tr.json +1 -16
  116. homeassistant/components/blue_current/translations/tr.json +0 -44
  117. homeassistant/components/bosch_alarm/__init__.py +2 -2
  118. homeassistant/components/bosch_alarm/config_flow.py +1 -1
  119. homeassistant/components/bosch_alarm/diagnostics.py +1 -2
  120. homeassistant/components/bosch_alarm/entity.py +1 -1
  121. homeassistant/components/bosch_alarm/manifest.json +1 -1
  122. homeassistant/components/broadlink/manifest.json +0 -1
  123. homeassistant/components/broadlink/translations/sr-Latn.json +0 -5
  124. homeassistant/components/brother/translations/tr.json +2 -53
  125. homeassistant/components/bsblan/translations/sr-Latn.json +0 -4
  126. homeassistant/components/bsblan/translations/tr.json +2 -22
  127. homeassistant/components/bthome/translations/tr.json +0 -35
  128. homeassistant/components/button/translations/sr-Latn.json +0 -20
  129. homeassistant/components/camera/__init__.py +1 -1
  130. homeassistant/components/camera/translations/mk.json +2 -4
  131. homeassistant/components/climate/strings.json +15 -10
  132. homeassistant/components/climate/translations/cs.json +15 -10
  133. homeassistant/components/climate/translations/de.json +10 -5
  134. homeassistant/components/climate/translations/el.json +1 -54
  135. homeassistant/components/climate/translations/en-GB.json +1 -64
  136. homeassistant/components/climate/translations/en.json +15 -10
  137. homeassistant/components/climate/translations/es.json +1 -64
  138. homeassistant/components/climate/translations/et.json +6 -57
  139. homeassistant/components/climate/translations/ga.json +1 -54
  140. homeassistant/components/climate/translations/lt.json +9 -26
  141. homeassistant/components/climate/translations/mk.json +3 -10
  142. homeassistant/components/climate/translations/pt.json +12 -19
  143. homeassistant/components/climate/translations/ru.json +1 -54
  144. homeassistant/components/climate/translations/sk.json +15 -10
  145. homeassistant/components/climate/translations/sr-Latn.json +3 -101
  146. homeassistant/components/climate/translations/sv.json +1 -17
  147. homeassistant/components/climate/translations/tr.json +1 -54
  148. homeassistant/components/climate/translations/zh-Hans.json +0 -14
  149. homeassistant/components/climate/translations/zh-Hant.json +15 -10
  150. homeassistant/components/cloud/__init__.py +5 -18
  151. homeassistant/components/cloud/ai_task.py +12 -5
  152. homeassistant/components/cloud/client.py +5 -9
  153. homeassistant/components/cloud/conversation.py +11 -2
  154. homeassistant/components/cloud/entity.py +6 -5
  155. homeassistant/components/cloud/http_api.py +0 -21
  156. homeassistant/components/cloud/manifest.json +1 -1
  157. homeassistant/components/cloud/translations/en-GB.json +0 -7
  158. homeassistant/components/cloud/translations/es.json +0 -7
  159. homeassistant/components/cloud/translations/et.json +0 -7
  160. homeassistant/components/cloud/translations/ga.json +0 -7
  161. homeassistant/components/cloud/translations/tr.json +0 -7
  162. homeassistant/components/coinbase/translations/tr.json +1 -10
  163. homeassistant/components/comelit/translations/tr.json +0 -2
  164. homeassistant/components/conversation/__init__.py +3 -8
  165. homeassistant/components/conversation/default_agent.py +56 -61
  166. homeassistant/components/conversation/manifest.json +1 -1
  167. homeassistant/components/counter/translations/sr-Latn.json +1 -41
  168. homeassistant/components/cover/icons.json +29 -0
  169. homeassistant/components/cover/strings.json +159 -1
  170. homeassistant/components/cover/translations/cs.json +159 -1
  171. homeassistant/components/cover/translations/de.json +159 -1
  172. homeassistant/components/cover/translations/en.json +159 -1
  173. homeassistant/components/cover/translations/et.json +30 -1
  174. homeassistant/components/cover/translations/lt.json +159 -1
  175. homeassistant/components/cover/translations/pt.json +158 -1
  176. homeassistant/components/cover/translations/sk.json +159 -1
  177. homeassistant/components/cover/translations/sr-Latn.json +1 -5
  178. homeassistant/components/cover/translations/zh-Hans.json +105 -1
  179. homeassistant/components/cover/translations/zh-Hant.json +159 -1
  180. homeassistant/components/cover/trigger.py +116 -0
  181. homeassistant/components/cover/triggers.yaml +79 -0
  182. homeassistant/components/deconz/translations/mk.json +1 -3
  183. homeassistant/components/deluge/translations/tr.json +0 -8
  184. homeassistant/components/derivative/translations/es.json +0 -6
  185. homeassistant/components/derivative/translations/ga.json +0 -6
  186. homeassistant/components/derivative/translations/sr-Latn.json +4 -41
  187. homeassistant/components/dlna_dmr/manifest.json +0 -1
  188. homeassistant/components/dlna_dms/manifest.json +0 -1
  189. homeassistant/components/downloader/translations/tr.json +0 -8
  190. homeassistant/components/duckdns/translations/en-GB.json +0 -1
  191. homeassistant/components/duckdns/translations/es.json +0 -41
  192. homeassistant/components/duckdns/translations/ga.json +0 -40
  193. homeassistant/components/ecovacs/manifest.json +1 -1
  194. homeassistant/components/ecovacs/translations/tr.json +2 -50
  195. homeassistant/components/ecowitt/manifest.json +0 -1
  196. homeassistant/components/elevenlabs/translations/tr.json +1 -17
  197. homeassistant/components/elkm1/translations/tr.json +0 -4
  198. homeassistant/components/energyid/translations/zh-Hans.json +1 -17
  199. homeassistant/components/enphase_envoy/manifest.json +1 -1
  200. homeassistant/components/enphase_envoy/translations/tr.json +0 -15
  201. homeassistant/components/esphome/const.py +1 -1
  202. homeassistant/components/esphome/manifest.json +1 -1
  203. homeassistant/components/esphome/strings.json +1 -1
  204. homeassistant/components/esphome/translations/bg.json +1 -0
  205. homeassistant/components/esphome/translations/ca.json +1 -0
  206. homeassistant/components/esphome/translations/cs.json +1 -1
  207. homeassistant/components/esphome/translations/da.json +1 -0
  208. homeassistant/components/esphome/translations/de.json +1 -1
  209. homeassistant/components/esphome/translations/el.json +1 -0
  210. homeassistant/components/esphome/translations/en-GB.json +1 -1
  211. homeassistant/components/esphome/translations/en.json +1 -1
  212. homeassistant/components/esphome/translations/es.json +1 -1
  213. homeassistant/components/esphome/translations/et.json +1 -1
  214. homeassistant/components/esphome/translations/fi.json +1 -0
  215. homeassistant/components/esphome/translations/fr.json +1 -0
  216. homeassistant/components/esphome/translations/ga.json +1 -0
  217. homeassistant/components/esphome/translations/he.json +1 -0
  218. homeassistant/components/esphome/translations/hu.json +1 -0
  219. homeassistant/components/esphome/translations/id.json +1 -0
  220. homeassistant/components/esphome/translations/it.json +1 -0
  221. homeassistant/components/esphome/translations/ja.json +1 -0
  222. homeassistant/components/esphome/translations/ko.json +1 -0
  223. homeassistant/components/esphome/translations/lt.json +1 -1
  224. homeassistant/components/esphome/translations/nb.json +1 -0
  225. homeassistant/components/esphome/translations/nl.json +1 -0
  226. homeassistant/components/esphome/translations/pl.json +1 -0
  227. homeassistant/components/esphome/translations/pt-BR.json +1 -0
  228. homeassistant/components/esphome/translations/pt.json +1 -1
  229. homeassistant/components/esphome/translations/ro.json +1 -0
  230. homeassistant/components/esphome/translations/ru.json +1 -0
  231. homeassistant/components/esphome/translations/sk.json +1 -1
  232. homeassistant/components/esphome/translations/sl.json +1 -0
  233. homeassistant/components/esphome/translations/sv.json +1 -0
  234. homeassistant/components/esphome/translations/tr.json +1 -1
  235. homeassistant/components/esphome/translations/uk.json +1 -0
  236. homeassistant/components/esphome/translations/vi.json +1 -0
  237. homeassistant/components/esphome/translations/zh-Hans.json +1 -1
  238. homeassistant/components/esphome/translations/zh-Hant.json +1 -1
  239. homeassistant/components/essent/translations/nl.json +0 -32
  240. homeassistant/components/essent/translations/zh-Hans.json +0 -38
  241. homeassistant/components/event/translations/pl.json +1 -2
  242. homeassistant/components/event/translations/sr-Latn.json +1 -16
  243. homeassistant/components/fan/strings.json +6 -4
  244. homeassistant/components/fan/translations/cs.json +6 -4
  245. homeassistant/components/fan/translations/de.json +4 -2
  246. homeassistant/components/fan/translations/en-GB.json +1 -34
  247. homeassistant/components/fan/translations/en.json +6 -4
  248. homeassistant/components/fan/translations/es.json +1 -34
  249. homeassistant/components/fan/translations/et.json +6 -4
  250. homeassistant/components/fan/translations/ga.json +1 -30
  251. homeassistant/components/fan/translations/lt.json +6 -4
  252. homeassistant/components/fan/translations/mk.json +0 -11
  253. homeassistant/components/fan/translations/nl.json +1 -6
  254. homeassistant/components/fan/translations/pt.json +8 -2
  255. homeassistant/components/fan/translations/sk.json +6 -4
  256. homeassistant/components/fan/translations/tr.json +1 -30
  257. homeassistant/components/fan/translations/zh-Hant.json +6 -4
  258. homeassistant/components/file/translations/tr.json +0 -26
  259. homeassistant/components/filter/translations/sr-Latn.json +11 -149
  260. homeassistant/components/firefly_iii/translations/de.json +2 -2
  261. homeassistant/components/firefly_iii/translations/tr.json +0 -87
  262. homeassistant/components/foscam/translations/tr.json +1 -45
  263. homeassistant/components/fritz/translations/tr.json +0 -24
  264. homeassistant/components/fronius/manifest.json +0 -1
  265. homeassistant/components/fronius/translations/sr-Latn.json +0 -3
  266. homeassistant/components/frontend/manifest.json +1 -1
  267. homeassistant/components/frontend/storage.py +6 -16
  268. homeassistant/components/frontend/translations/de.json +2 -2
  269. homeassistant/components/frontend/translations/el.json +0 -8
  270. homeassistant/components/frontend/translations/es.json +0 -8
  271. homeassistant/components/frontend/translations/ga.json +0 -8
  272. homeassistant/components/frontend/translations/ru.json +0 -8
  273. homeassistant/components/frontend/translations/sr-Latn.json +0 -8
  274. homeassistant/components/frontend/translations/tr.json +0 -8
  275. homeassistant/components/frontend/translations/zh-Hans.json +0 -3
  276. homeassistant/components/fully_kiosk/translations/tr.json +0 -15
  277. homeassistant/components/fyta/translations/sr-Latn.json +0 -6
  278. homeassistant/components/generic/translations/sr-Latn.json +0 -42
  279. homeassistant/components/generic_hygrostat/translations/sr-Latn.json +4 -36
  280. homeassistant/components/generic_thermostat/translations/sr-Latn.json +6 -46
  281. homeassistant/components/geocaching/translations/tr.json +1 -2
  282. homeassistant/components/gios/translations/sr-Latn.json +0 -10
  283. homeassistant/components/go2rtc/__init__.py +2 -6
  284. homeassistant/components/go2rtc/const.py +1 -0
  285. homeassistant/components/go2rtc/server.py +6 -16
  286. homeassistant/components/google/manifest.json +0 -1
  287. homeassistant/components/google_air_quality/manifest.json +1 -1
  288. homeassistant/components/google_air_quality/strings.json +6 -8
  289. homeassistant/components/google_air_quality/translations/bg.json +7 -0
  290. homeassistant/components/google_air_quality/translations/cs.json +6 -8
  291. homeassistant/components/google_air_quality/translations/de.json +6 -8
  292. homeassistant/components/google_air_quality/translations/en.json +6 -8
  293. homeassistant/components/google_air_quality/translations/et.json +12 -50
  294. homeassistant/components/google_air_quality/translations/lt.json +13 -1
  295. homeassistant/components/google_air_quality/translations/nl.json +6 -38
  296. homeassistant/components/google_air_quality/translations/pt.json +13 -1
  297. homeassistant/components/google_air_quality/translations/sk.json +13 -1
  298. homeassistant/components/google_air_quality/translations/zh-Hans.json +11 -81
  299. homeassistant/components/google_air_quality/translations/zh-Hant.json +13 -1
  300. homeassistant/components/google_assistant/translations/sr-Latn.json +1 -1
  301. homeassistant/components/google_assistant_sdk/translations/es.json +0 -3
  302. homeassistant/components/google_assistant_sdk/translations/tr.json +0 -7
  303. homeassistant/components/google_generative_ai_conversation/translations/tr.json +0 -6
  304. homeassistant/components/google_sheets/translations/es.json +0 -4
  305. homeassistant/components/google_sheets/translations/tr.json +0 -22
  306. homeassistant/components/google_translate/manifest.json +0 -1
  307. homeassistant/components/google_weather/translations/es.json +0 -66
  308. homeassistant/components/google_weather/translations/ga.json +0 -37
  309. homeassistant/components/gpsd/translations/sr-Latn.json +0 -3
  310. homeassistant/components/group/notify.py +5 -28
  311. homeassistant/components/group/translations/sr-Latn.json +12 -154
  312. homeassistant/components/group/translations/tr.json +1 -19
  313. homeassistant/components/growatt_server/translations/tr.json +0 -87
  314. homeassistant/components/habitica/translations/tr.json +0 -76
  315. homeassistant/components/hassio/const.py +0 -1
  316. homeassistant/components/hassio/strings.json +1 -1
  317. homeassistant/components/hassio/translations/cs.json +1 -1
  318. homeassistant/components/hassio/translations/de.json +1 -1
  319. homeassistant/components/hassio/translations/el.json +1 -0
  320. homeassistant/components/hassio/translations/en-GB.json +1 -1
  321. homeassistant/components/hassio/translations/en.json +1 -1
  322. homeassistant/components/hassio/translations/es.json +1 -1
  323. homeassistant/components/hassio/translations/et.json +1 -1
  324. homeassistant/components/hassio/translations/fr.json +1 -0
  325. homeassistant/components/hassio/translations/fy.json +3 -0
  326. homeassistant/components/hassio/translations/ga.json +1 -0
  327. homeassistant/components/hassio/translations/he.json +1 -0
  328. homeassistant/components/hassio/translations/id.json +1 -0
  329. homeassistant/components/hassio/translations/lt.json +1 -1
  330. homeassistant/components/hassio/translations/mk.json +1 -0
  331. homeassistant/components/hassio/translations/nl.json +1 -0
  332. homeassistant/components/hassio/translations/pt.json +1 -0
  333. homeassistant/components/hassio/translations/ru.json +1 -0
  334. homeassistant/components/hassio/translations/sk.json +1 -1
  335. homeassistant/components/hassio/translations/sr-Latn.json +0 -5
  336. homeassistant/components/hassio/translations/sv.json +1 -0
  337. homeassistant/components/hassio/translations/tr.json +0 -38
  338. homeassistant/components/hassio/translations/zh-Hans.json +1 -0
  339. homeassistant/components/hassio/translations/zh-Hant.json +1 -1
  340. homeassistant/components/history_stats/translations/sr-Latn.json +3 -85
  341. homeassistant/components/holiday/translations/pl.json +0 -7
  342. homeassistant/components/home_connect/manifest.json +0 -1
  343. homeassistant/components/home_connect/translations/de.json +2 -2
  344. homeassistant/components/home_connect/translations/es.json +0 -46
  345. homeassistant/components/home_connect/translations/ga.json +0 -46
  346. homeassistant/components/home_connect/translations/tr.json +0 -32
  347. homeassistant/components/homeassistant_connect_zbt2/config_flow.py +17 -0
  348. homeassistant/components/homeassistant_connect_zbt2/const.py +58 -0
  349. homeassistant/components/homeassistant_connect_zbt2/translations/es.json +0 -8
  350. homeassistant/components/homeassistant_connect_zbt2/translations/ga.json +0 -8
  351. homeassistant/components/homeassistant_connect_zbt2/translations/tr.json +0 -145
  352. homeassistant/components/homeassistant_hardware/firmware_config_flow.py +73 -81
  353. homeassistant/components/homeassistant_hardware/translations/es.json +0 -4
  354. homeassistant/components/homeassistant_hardware/translations/ga.json +0 -4
  355. homeassistant/components/homeassistant_hardware/translations/tr.json +1 -44
  356. homeassistant/components/homeassistant_hardware/update.py +10 -13
  357. homeassistant/components/homeassistant_hardware/util.py +53 -59
  358. homeassistant/components/homeassistant_sky_connect/translations/es.json +0 -8
  359. homeassistant/components/homeassistant_sky_connect/translations/ga.json +0 -8
  360. homeassistant/components/homeassistant_sky_connect/translations/tr.json +0 -71
  361. homeassistant/components/homeassistant_yellow/translations/es.json +0 -4
  362. homeassistant/components/homeassistant_yellow/translations/ga.json +0 -4
  363. homeassistant/components/homeassistant_yellow/translations/tr.json +0 -35
  364. homeassistant/components/homekit/translations/tr.json +0 -12
  365. homeassistant/components/homekit_controller/manifest.json +0 -1
  366. homeassistant/components/homewizard/manifest.json +0 -1
  367. homeassistant/components/hue/translations/mk.json +1 -3
  368. homeassistant/components/hue/translations/tr.json +0 -1
  369. homeassistant/components/hue_ble/strings.json +1 -1
  370. homeassistant/components/hue_ble/translations/en.json +1 -1
  371. homeassistant/components/hue_ble/translations/lt.json +1 -1
  372. homeassistant/components/hue_ble/translations/nl.json +0 -3
  373. homeassistant/components/hue_ble/translations/pt.json +2 -1
  374. homeassistant/components/hue_ble/translations/sk.json +1 -1
  375. homeassistant/components/hue_ble/translations/zh-Hans.json +1 -11
  376. homeassistant/components/humidifier/translations/mk.json +0 -6
  377. homeassistant/components/husqvarna_automower/translations/tr.json +0 -88
  378. homeassistant/components/huum/translations/sr-Latn.json +0 -5
  379. homeassistant/components/ibeacon/manifest.json +0 -1
  380. homeassistant/components/icloud/translations/tr.json +0 -3
  381. homeassistant/components/image/translations/sr-Latn.json +1 -2
  382. homeassistant/components/imap/translations/tr.json +0 -21
  383. homeassistant/components/imeon_inverter/translations/en-GB.json +0 -21
  384. homeassistant/components/incomfort/translations/tr.json +0 -3
  385. homeassistant/components/input_boolean/translations/mk.json +2 -4
  386. homeassistant/components/input_number/translations/sr-Latn.json +0 -17
  387. homeassistant/components/integration/translations/sr-Latn.json +2 -54
  388. homeassistant/components/iometer/manifest.json +1 -1
  389. homeassistant/components/iometer/translations/tr.json +1 -3
  390. homeassistant/components/iron_os/translations/en-GB.json +1 -5
  391. homeassistant/components/iron_os/translations/es.json +1 -5
  392. homeassistant/components/jewish_calendar/translations/tr.json +1 -9
  393. homeassistant/components/kitchen_sink/translations/en-GB.json +0 -2
  394. homeassistant/components/kitchen_sink/translations/es.json +0 -20
  395. homeassistant/components/kitchen_sink/translations/et.json +1 -5
  396. homeassistant/components/kitchen_sink/translations/ga.json +0 -4
  397. homeassistant/components/kitchen_sink/translations/it.json +0 -12
  398. homeassistant/components/kitchen_sink/translations/nl.json +0 -4
  399. homeassistant/components/kitchen_sink/translations/ru.json +0 -8
  400. homeassistant/components/kitchen_sink/translations/sv.json +0 -3
  401. homeassistant/components/kitchen_sink/translations/tr.json +0 -4
  402. homeassistant/components/knx/translations/el.json +0 -43
  403. homeassistant/components/knx/translations/es.json +0 -3
  404. homeassistant/components/knx/translations/et.json +0 -3
  405. homeassistant/components/knx/translations/tr.json +0 -318
  406. homeassistant/components/knx/translations/zh-Hans.json +0 -3
  407. homeassistant/components/konnected/manifest.json +0 -1
  408. homeassistant/components/konnected/translations/tr.json +0 -6
  409. homeassistant/components/labs/__init__.py +1 -2
  410. homeassistant/components/labs/const.py +2 -0
  411. homeassistant/components/labs/translations/lt.json +1 -1
  412. homeassistant/components/labs/websocket_api.py +1 -2
  413. homeassistant/components/lawn_mower/strings.json +12 -8
  414. homeassistant/components/lawn_mower/translations/cs.json +11 -7
  415. homeassistant/components/lawn_mower/translations/de.json +11 -7
  416. homeassistant/components/lawn_mower/translations/en-GB.json +1 -56
  417. homeassistant/components/lawn_mower/translations/en.json +12 -8
  418. homeassistant/components/lawn_mower/translations/es.json +1 -56
  419. homeassistant/components/lawn_mower/translations/et.json +2 -46
  420. homeassistant/components/lawn_mower/translations/ga.json +1 -48
  421. homeassistant/components/lawn_mower/translations/lt.json +12 -8
  422. homeassistant/components/lawn_mower/translations/pt.json +16 -4
  423. homeassistant/components/lawn_mower/translations/sk.json +12 -8
  424. homeassistant/components/lawn_mower/translations/tr.json +1 -48
  425. homeassistant/components/lawn_mower/translations/zh-Hant.json +12 -8
  426. homeassistant/components/letpot/manifest.json +1 -1
  427. homeassistant/components/letpot/translations/tr.json +0 -8
  428. homeassistant/components/lg_thinq/manifest.json +1 -1
  429. homeassistant/components/lg_thinq/translations/sr-Latn.json +0 -8
  430. homeassistant/components/lg_thinq/translations/tr.json +0 -20
  431. homeassistant/components/libre_hardware_monitor/coordinator.py +18 -26
  432. homeassistant/components/lifx/translations/tr.json +0 -3
  433. homeassistant/components/light/strings.json +8 -4
  434. homeassistant/components/light/translations/bg.json +12 -0
  435. homeassistant/components/light/translations/cs.json +8 -4
  436. homeassistant/components/light/translations/de.json +6 -2
  437. homeassistant/components/light/translations/el.json +0 -6
  438. homeassistant/components/light/translations/en-GB.json +2 -69
  439. homeassistant/components/light/translations/en.json +8 -4
  440. homeassistant/components/light/translations/es.json +2 -68
  441. homeassistant/components/light/translations/et.json +8 -34
  442. homeassistant/components/light/translations/ga.json +2 -65
  443. homeassistant/components/light/translations/lt.json +8 -4
  444. homeassistant/components/light/translations/mk.json +3 -10
  445. homeassistant/components/light/translations/nl.json +1 -6
  446. homeassistant/components/light/translations/pt.json +10 -2
  447. homeassistant/components/light/translations/ru.json +3 -67
  448. homeassistant/components/light/translations/sk.json +8 -4
  449. homeassistant/components/light/translations/sr-Latn.json +4 -217
  450. homeassistant/components/light/translations/tr.json +2 -65
  451. homeassistant/components/light/translations/zh-Hans.json +10 -2
  452. homeassistant/components/light/translations/zh-Hant.json +8 -4
  453. homeassistant/components/litterrobot/translations/tr.json +0 -6
  454. homeassistant/components/logger/helpers.py +0 -10
  455. homeassistant/components/logger/websocket_api.py +1 -12
  456. homeassistant/components/lovelace/translations/es.json +0 -5
  457. homeassistant/components/lovelace/translations/ga.json +0 -5
  458. homeassistant/components/mastodon/translations/es.json +0 -7
  459. homeassistant/components/mastodon/translations/ga.json +0 -7
  460. homeassistant/components/mastodon/translations/tr.json +0 -4
  461. homeassistant/components/matrix/translations/tr.json +0 -42
  462. homeassistant/components/matter/manifest.json +0 -1
  463. homeassistant/components/matter/translations/es.json +0 -13
  464. homeassistant/components/matter/translations/ga.json +0 -10
  465. homeassistant/components/matter/translations/sr-Latn.json +0 -3
  466. homeassistant/components/matter/translations/tr.json +0 -105
  467. homeassistant/components/mcp/translations/tr.json +1 -20
  468. homeassistant/components/mealie/translations/tr.json +0 -11
  469. homeassistant/components/media_extractor/manifest.json +1 -1
  470. homeassistant/components/media_player/strings.json +3 -2
  471. homeassistant/components/media_player/translations/cs.json +3 -2
  472. homeassistant/components/media_player/translations/de.json +2 -1
  473. homeassistant/components/media_player/translations/en-GB.json +1 -24
  474. homeassistant/components/media_player/translations/en.json +3 -2
  475. homeassistant/components/media_player/translations/es.json +1 -24
  476. homeassistant/components/media_player/translations/et.json +1 -8
  477. homeassistant/components/media_player/translations/ga.json +1 -22
  478. homeassistant/components/media_player/translations/lt.json +3 -2
  479. homeassistant/components/media_player/translations/mk.json +2 -4
  480. homeassistant/components/media_player/translations/pt.json +4 -1
  481. homeassistant/components/media_player/translations/sk.json +3 -2
  482. homeassistant/components/media_player/translations/tr.json +1 -22
  483. homeassistant/components/media_player/translations/zh-Hant.json +3 -2
  484. homeassistant/components/met/manifest.json +0 -1
  485. homeassistant/components/meteo_france/const.py +0 -1
  486. homeassistant/components/miele/const.py +7 -9
  487. homeassistant/components/miele/strings.json +0 -1
  488. homeassistant/components/miele/translations/cs.json +0 -1
  489. homeassistant/components/miele/translations/de.json +0 -1
  490. homeassistant/components/miele/translations/en-GB.json +0 -1
  491. homeassistant/components/miele/translations/en.json +0 -1
  492. homeassistant/components/miele/translations/es.json +0 -16
  493. homeassistant/components/miele/translations/et.json +0 -1
  494. homeassistant/components/miele/translations/ga.json +0 -14
  495. homeassistant/components/miele/translations/it.json +0 -1
  496. homeassistant/components/miele/translations/lt.json +0 -1
  497. homeassistant/components/miele/translations/sk.json +0 -1
  498. homeassistant/components/miele/translations/sr-Latn.json +0 -10
  499. homeassistant/components/miele/translations/tr.json +1 -20
  500. homeassistant/components/miele/translations/zh-Hant.json +0 -1
  501. homeassistant/components/min_max/translations/sr-Latn.json +2 -44
  502. homeassistant/components/mold_indicator/translations/sr-Latn.json +3 -41
  503. homeassistant/components/motion_blinds/manifest.json +0 -1
  504. homeassistant/components/mqtt/entity.py +0 -1
  505. homeassistant/components/mqtt/strings.json +5 -4
  506. homeassistant/components/mqtt/translations/bg.json +5 -0
  507. homeassistant/components/mqtt/translations/cs.json +5 -4
  508. homeassistant/components/mqtt/translations/de.json +8 -7
  509. homeassistant/components/mqtt/translations/en-GB.json +5 -4
  510. homeassistant/components/mqtt/translations/en.json +5 -4
  511. homeassistant/components/mqtt/translations/es.json +8 -91
  512. homeassistant/components/mqtt/translations/et.json +5 -4
  513. homeassistant/components/mqtt/translations/fr.json +4 -1
  514. homeassistant/components/mqtt/translations/ga.json +9 -65
  515. homeassistant/components/mqtt/translations/he.json +6 -1
  516. homeassistant/components/mqtt/translations/hu.json +2 -0
  517. homeassistant/components/mqtt/translations/it.json +7 -2
  518. homeassistant/components/mqtt/translations/lt.json +5 -4
  519. homeassistant/components/mqtt/translations/mk.json +0 -6
  520. homeassistant/components/mqtt/translations/nl.json +6 -1
  521. homeassistant/components/mqtt/translations/pt.json +6 -3
  522. homeassistant/components/mqtt/translations/ru.json +6 -6
  523. homeassistant/components/mqtt/translations/sk.json +5 -4
  524. homeassistant/components/mqtt/translations/sr-Latn.json +22 -148
  525. homeassistant/components/mqtt/translations/sv.json +2 -1
  526. homeassistant/components/mqtt/translations/tr.json +5 -255
  527. homeassistant/components/mqtt/translations/zh-Hans.json +6 -3
  528. homeassistant/components/mqtt/translations/zh-Hant.json +5 -4
  529. homeassistant/components/music_assistant/__init__.py +1 -2
  530. homeassistant/components/music_assistant/config_flow.py +5 -23
  531. homeassistant/components/music_assistant/manifest.json +0 -1
  532. homeassistant/components/music_assistant/translations/el.json +1 -3
  533. homeassistant/components/music_assistant/translations/en-GB.json +1 -23
  534. homeassistant/components/music_assistant/translations/es.json +1 -25
  535. homeassistant/components/music_assistant/translations/et.json +0 -1
  536. homeassistant/components/music_assistant/translations/ga.json +1 -24
  537. homeassistant/components/music_assistant/translations/it.json +1 -26
  538. homeassistant/components/music_assistant/translations/nl.json +1 -3
  539. homeassistant/components/music_assistant/translations/ru.json +1 -23
  540. homeassistant/components/music_assistant/translations/sv.json +1 -3
  541. homeassistant/components/music_assistant/translations/tr.json +1 -24
  542. homeassistant/components/music_assistant/translations/zh-Hans.json +0 -16
  543. homeassistant/components/nasweb/translations/tr.json +0 -7
  544. homeassistant/components/neato/translations/es.json +0 -5
  545. homeassistant/components/neato/translations/ga.json +0 -5
  546. homeassistant/components/neato/translations/tr.json +0 -5
  547. homeassistant/components/nederlandse_spoorwegen/translations/es.json +0 -10
  548. homeassistant/components/nederlandse_spoorwegen/translations/tr.json +0 -25
  549. homeassistant/components/nest/manifest.json +1 -1
  550. homeassistant/components/nest/translations/es.json +0 -12
  551. homeassistant/components/nest/translations/tr.json +0 -12
  552. homeassistant/components/netgear/translations/sr-Latn.json +0 -3
  553. homeassistant/components/nextdns/translations/tr.json +1 -14
  554. homeassistant/components/nightscout/translations/tr.json +0 -4
  555. homeassistant/components/niko_home_control/translations/el.json +0 -18
  556. homeassistant/components/niko_home_control/translations/es.json +1 -3
  557. homeassistant/components/niko_home_control/translations/tr.json +1 -10
  558. homeassistant/components/nina/translations/el.json +0 -6
  559. homeassistant/components/nina/translations/en-GB.json +0 -8
  560. homeassistant/components/nina/translations/es.json +0 -8
  561. homeassistant/components/nina/translations/ga.json +0 -8
  562. homeassistant/components/nina/translations/tr.json +0 -54
  563. homeassistant/components/nina/translations/zh-Hans.json +0 -2
  564. homeassistant/components/nordpool/manifest.json +1 -1
  565. homeassistant/components/ntfy/translations/tr.json +0 -78
  566. homeassistant/components/nuki/manifest.json +0 -1
  567. homeassistant/components/number/translations/sr-Latn.json +0 -181
  568. homeassistant/components/number/translations/tr.json +0 -6
  569. homeassistant/components/octoprint/translations/tr.json +0 -10
  570. homeassistant/components/onboarding/const.py +1 -16
  571. homeassistant/components/onboarding/views.py +2 -2
  572. homeassistant/components/onedrive/translations/es.json +0 -3
  573. homeassistant/components/onewire/translations/tr.json +0 -10
  574. homeassistant/components/openai_conversation/translations/tr.json +1 -6
  575. homeassistant/components/opentherm_gw/services.py +2 -17
  576. homeassistant/components/opentherm_gw/strings.json +3 -3
  577. homeassistant/components/opentherm_gw/translations/cs.json +3 -3
  578. homeassistant/components/opentherm_gw/translations/de.json +3 -3
  579. homeassistant/components/opentherm_gw/translations/el.json +3 -3
  580. homeassistant/components/opentherm_gw/translations/en-GB.json +3 -3
  581. homeassistant/components/opentherm_gw/translations/en.json +3 -3
  582. homeassistant/components/opentherm_gw/translations/es.json +3 -3
  583. homeassistant/components/opentherm_gw/translations/et.json +3 -3
  584. homeassistant/components/opentherm_gw/translations/ga.json +3 -0
  585. homeassistant/components/opentherm_gw/translations/hu.json +3 -0
  586. homeassistant/components/opentherm_gw/translations/it.json +2 -0
  587. homeassistant/components/opentherm_gw/translations/ja.json +3 -0
  588. homeassistant/components/opentherm_gw/translations/lt.json +3 -3
  589. homeassistant/components/opentherm_gw/translations/nl.json +2 -0
  590. homeassistant/components/opentherm_gw/translations/pt.json +3 -3
  591. homeassistant/components/opentherm_gw/translations/ru.json +3 -3
  592. homeassistant/components/opentherm_gw/translations/sk.json +3 -3
  593. homeassistant/components/opentherm_gw/translations/sv.json +3 -0
  594. homeassistant/components/opentherm_gw/translations/tr.json +3 -0
  595. homeassistant/components/opentherm_gw/translations/zh-Hans.json +3 -3
  596. homeassistant/components/opentherm_gw/translations/zh-Hant.json +3 -3
  597. homeassistant/components/openweathermap/translations/tr.json +0 -49
  598. homeassistant/components/opower/translations/tr.json +1 -33
  599. homeassistant/components/oralb/manifest.json +0 -1
  600. homeassistant/components/oralb/translations/tr.json +2 -29
  601. homeassistant/components/ping/helpers.py +1 -1
  602. homeassistant/components/ping/manifest.json +0 -1
  603. homeassistant/components/playstation_network/coordinator.py +7 -14
  604. homeassistant/components/playstation_network/translations/tr.json +0 -56
  605. homeassistant/components/plugwise/translations/en-GB.json +1 -1
  606. homeassistant/components/plugwise/translations/es.json +0 -2
  607. homeassistant/components/plugwise/translations/sr-Latn.json +0 -12
  608. homeassistant/components/plugwise/translations/tr.json +1 -11
  609. homeassistant/components/plum_lightpad/translations/tr.json +1 -8
  610. homeassistant/components/point/translations/es.json +0 -5
  611. homeassistant/components/pooldose/translations/en-GB.json +0 -11
  612. homeassistant/components/pooldose/translations/es.json +0 -68
  613. homeassistant/components/pooldose/translations/ga.json +0 -11
  614. homeassistant/components/pooldose/translations/it.json +0 -11
  615. homeassistant/components/pooldose/translations/tr.json +1 -84
  616. homeassistant/components/pooldose/translations/zh-Hans.json +0 -6
  617. homeassistant/components/portainer/translations/tr.json +0 -82
  618. homeassistant/components/probe_plus/translations/tr.json +0 -5
  619. homeassistant/components/ps4/translations/tr.json +0 -6
  620. homeassistant/components/qbittorrent/translations/tr.json +0 -4
  621. homeassistant/components/qbus/translations/tr.json +0 -10
  622. homeassistant/components/random/translations/es.json +0 -1
  623. homeassistant/components/random/translations/sr-Latn.json +6 -119
  624. homeassistant/components/random/translations/tr.json +0 -2
  625. homeassistant/components/renault/translations/tr.json +0 -12
  626. homeassistant/components/reolink/manifest.json +1 -2
  627. homeassistant/components/reolink/translations/pl.json +1 -10
  628. homeassistant/components/reolink/translations/tr.json +1 -67
  629. homeassistant/components/rest/manifest.json +0 -1
  630. homeassistant/components/ridwell/translations/tr.json +0 -22
  631. homeassistant/components/ring/manifest.json +0 -1
  632. homeassistant/components/roborock/manifest.json +1 -2
  633. homeassistant/components/roborock/roborock_storage.py +10 -29
  634. homeassistant/components/roborock/translations/tr.json +1 -9
  635. homeassistant/components/roomba/translations/tr.json +0 -6
  636. homeassistant/components/satel_integra/translations/sr-Latn.json +1 -2
  637. homeassistant/components/saunum/translations/el.json +1 -7
  638. homeassistant/components/saunum/translations/en-GB.json +1 -11
  639. homeassistant/components/saunum/translations/es.json +1 -38
  640. homeassistant/components/saunum/translations/et.json +1 -11
  641. homeassistant/components/saunum/translations/ga.json +1 -38
  642. homeassistant/components/saunum/translations/mk.json +0 -5
  643. homeassistant/components/saunum/translations/tr.json +1 -11
  644. homeassistant/components/schedule/translations/sr-Latn.json +1 -18
  645. homeassistant/components/scrape/translations/es.json +0 -1
  646. homeassistant/components/scrape/translations/sr-Latn.json +2 -63
  647. homeassistant/components/scrape/translations/tr.json +0 -4
  648. homeassistant/components/sensibo/translations/sr-Latn.json +0 -19
  649. homeassistant/components/sensor/translations/sr-Latn.json +5 -141
  650. homeassistant/components/sensor/translations/tr.json +0 -10
  651. homeassistant/components/senz/manifest.json +0 -1
  652. homeassistant/components/senz/translations/es.json +1 -17
  653. homeassistant/components/sfr_box/translations/tr.json +0 -4
  654. homeassistant/components/shelly/manifest.json +1 -1
  655. homeassistant/components/shelly/sensor.py +2 -0
  656. homeassistant/components/shelly/strings.json +0 -8
  657. homeassistant/components/shelly/switch.py +1 -0
  658. homeassistant/components/shelly/translations/bg.json +0 -5
  659. homeassistant/components/shelly/translations/cs.json +0 -8
  660. homeassistant/components/shelly/translations/de.json +0 -8
  661. homeassistant/components/shelly/translations/en-GB.json +0 -8
  662. homeassistant/components/shelly/translations/en.json +0 -8
  663. homeassistant/components/shelly/translations/es.json +2 -192
  664. homeassistant/components/shelly/translations/et.json +1 -10
  665. homeassistant/components/shelly/translations/fr.json +0 -10
  666. homeassistant/components/shelly/translations/ga.json +0 -46
  667. homeassistant/components/shelly/translations/it.json +2 -13
  668. homeassistant/components/shelly/translations/lt.json +0 -8
  669. homeassistant/components/shelly/translations/mk.json +0 -3
  670. homeassistant/components/shelly/translations/nl.json +0 -7
  671. homeassistant/components/shelly/translations/pl.json +0 -8
  672. homeassistant/components/shelly/translations/pt.json +0 -8
  673. homeassistant/components/shelly/translations/ru.json +0 -5
  674. homeassistant/components/shelly/translations/sk.json +0 -8
  675. homeassistant/components/shelly/translations/tr.json +5 -171
  676. homeassistant/components/shelly/translations/zh-Hans.json +0 -8
  677. homeassistant/components/shelly/translations/zh-Hant.json +0 -8
  678. homeassistant/components/shelly/valve.py +1 -1
  679. homeassistant/components/siren/translations/mk.json +2 -4
  680. homeassistant/components/smarla/translations/tr.json +0 -15
  681. homeassistant/components/smartthings/manifest.json +0 -1
  682. homeassistant/components/smartthings/translations/es.json +0 -74
  683. homeassistant/components/smartthings/translations/nl.json +0 -13
  684. homeassistant/components/smartthings/translations/tr.json +0 -20
  685. homeassistant/components/smhi/translations/tr.json +0 -19
  686. homeassistant/components/snoo/translations/tr.json +0 -8
  687. homeassistant/components/solaredge/translations/tr.json +3 -64
  688. homeassistant/components/sonos/manifest.json +0 -1
  689. homeassistant/components/speedtestdotnet/manifest.json +0 -1
  690. homeassistant/components/spotify/translations/es.json +0 -5
  691. homeassistant/components/sql/translations/es.json +0 -1
  692. homeassistant/components/sql/translations/sr-Latn.json +2 -61
  693. homeassistant/components/sql/translations/tr.json +0 -83
  694. homeassistant/components/squeezebox/translations/mk.json +0 -5
  695. homeassistant/components/squeezebox/translations/tr.json +0 -63
  696. homeassistant/components/starline/translations/sr-Latn.json +0 -7
  697. homeassistant/components/statistics/translations/sr-Latn.json +2 -118
  698. homeassistant/components/switch/translations/mk.json +1 -5
  699. homeassistant/components/switch/translations/sr-Latn.json +1 -2
  700. homeassistant/components/switch_as_x/translations/sr-Latn.json +3 -27
  701. homeassistant/components/switchbot/manifest.json +0 -1
  702. homeassistant/components/switchbot/translations/el.json +1 -2
  703. homeassistant/components/switchbot/translations/tr.json +0 -34
  704. homeassistant/components/switchbot_cloud/translations/tr.json +0 -20
  705. homeassistant/components/synology_dsm/translations/sr-Latn.json +0 -3
  706. homeassistant/components/system_bridge/translations/tr.json +0 -3
  707. homeassistant/components/systemmonitor/translations/tr.json +0 -6
  708. homeassistant/components/tautulli/translations/de.json +1 -1
  709. homeassistant/components/tedee/manifest.json +0 -1
  710. homeassistant/components/telegram/translations/de.json +1 -1
  711. homeassistant/components/telegram/translations/tr.json +0 -6
  712. homeassistant/components/telegram_bot/translations/tr.json +4 -203
  713. homeassistant/components/template/__init__.py +0 -11
  714. homeassistant/components/template/helpers.py +0 -2
  715. homeassistant/components/template/translations/de.json +4 -4
  716. homeassistant/components/template/translations/el.json +0 -4
  717. homeassistant/components/template/translations/es.json +0 -5
  718. homeassistant/components/template/translations/ga.json +0 -4
  719. homeassistant/components/template/translations/it.json +0 -4
  720. homeassistant/components/template/translations/pl.json +0 -37
  721. homeassistant/components/template/translations/ru.json +0 -4
  722. homeassistant/components/template/translations/sr-Latn.json +72 -933
  723. homeassistant/components/template/translations/tr.json +2 -172
  724. homeassistant/components/template/translations/zh-Hans.json +0 -4
  725. homeassistant/components/tesla_fleet/manifest.json +0 -1
  726. homeassistant/components/tesla_fleet/translations/es.json +0 -5
  727. homeassistant/components/tesla_fleet/translations/sr-Latn.json +0 -5
  728. homeassistant/components/tesla_wall_connector/translations/es.json +0 -3
  729. homeassistant/components/tesla_wall_connector/translations/ga.json +0 -3
  730. homeassistant/components/teslemetry/manifest.json +0 -1
  731. homeassistant/components/teslemetry/translations/sr-Latn.json +0 -5
  732. homeassistant/components/teslemetry/translations/tr.json +1 -77
  733. homeassistant/components/tessie/manifest.json +0 -1
  734. homeassistant/components/tessie/translations/sr-Latn.json +0 -5
  735. homeassistant/components/tessie/translations/tr.json +0 -3
  736. homeassistant/components/text/strings.json +3 -2
  737. homeassistant/components/text/translations/bg.json +8 -1
  738. homeassistant/components/text/translations/cs.json +3 -2
  739. homeassistant/components/text/translations/de.json +3 -2
  740. homeassistant/components/text/translations/en-GB.json +1 -7
  741. homeassistant/components/text/translations/en.json +3 -2
  742. homeassistant/components/text/translations/es.json +1 -7
  743. homeassistant/components/text/translations/et.json +1 -7
  744. homeassistant/components/text/translations/lt.json +3 -2
  745. homeassistant/components/text/translations/pt.json +8 -1
  746. homeassistant/components/text/translations/sk.json +3 -2
  747. homeassistant/components/text/translations/sr-Latn.json +2 -4
  748. homeassistant/components/text/translations/zh-Hant.json +3 -2
  749. homeassistant/components/tod/translations/sr-Latn.json +1 -16
  750. homeassistant/components/tolo/translations/tr.json +1 -2
  751. homeassistant/components/tomorrowio/translations/sr-Latn.json +0 -24
  752. homeassistant/components/tplink/manifest.json +0 -1
  753. homeassistant/components/traccar_server/translations/tr.json +0 -12
  754. homeassistant/components/transmission/translations/tr.json +0 -24
  755. homeassistant/components/trend/translations/sr-Latn.json +0 -21
  756. homeassistant/components/tuya/__init__.py +4 -12
  757. homeassistant/components/tuya/binary_sensor.py +2 -2
  758. homeassistant/components/tuya/humidifier.py +3 -3
  759. homeassistant/components/tuya/models.py +20 -18
  760. homeassistant/components/tuya/translations/es.json +0 -32
  761. homeassistant/components/tuya/translations/ga.json +0 -6
  762. homeassistant/components/tuya/translations/sr-Latn.json +0 -45
  763. homeassistant/components/tuya/translations/tr.json +0 -72
  764. homeassistant/components/tuya/util.py +9 -11
  765. homeassistant/components/twitch/translations/es.json +0 -5
  766. homeassistant/components/ukraine_alarm/translations/tr.json +1 -2
  767. homeassistant/components/unifi/light.py +29 -62
  768. homeassistant/components/unifi/translations/es.json +0 -3
  769. homeassistant/components/unifi/translations/tr.json +0 -5
  770. homeassistant/components/unifiprotect/camera.py +1 -5
  771. homeassistant/components/unifiprotect/manifest.json +1 -1
  772. homeassistant/components/unifiprotect/translations/bg.json +7 -0
  773. homeassistant/components/unifiprotect/translations/cs.json +1 -1
  774. homeassistant/components/unifiprotect/translations/de.json +1 -1
  775. homeassistant/components/unifiprotect/translations/el.json +5 -1
  776. homeassistant/components/unifiprotect/translations/en-GB.json +1 -11
  777. homeassistant/components/unifiprotect/translations/en.json +1 -1
  778. homeassistant/components/unifiprotect/translations/es.json +1 -11
  779. homeassistant/components/unifiprotect/translations/fi.json +7 -0
  780. homeassistant/components/unifiprotect/translations/ga.json +10 -10
  781. homeassistant/components/unifiprotect/translations/lt.json +1 -1
  782. homeassistant/components/unifiprotect/translations/nl.json +3 -0
  783. homeassistant/components/unifiprotect/translations/pt.json +10 -0
  784. homeassistant/components/unifiprotect/translations/sk.json +1 -1
  785. homeassistant/components/unifiprotect/translations/sr-Latn.json +0 -11
  786. homeassistant/components/unifiprotect/translations/sv.json +0 -3
  787. homeassistant/components/unifiprotect/translations/tr.json +0 -10
  788. homeassistant/components/unifiprotect/translations/zh-Hans.json +3 -2
  789. homeassistant/components/unifiprotect/translations/zh-Hant.json +1 -1
  790. homeassistant/components/update/translations/sr-Latn.json +1 -51
  791. homeassistant/components/utility_meter/translations/sr-Latn.json +2 -63
  792. homeassistant/components/vacuum/strings.json +12 -8
  793. homeassistant/components/vacuum/translations/cs.json +12 -8
  794. homeassistant/components/vacuum/translations/de.json +11 -7
  795. homeassistant/components/vacuum/translations/en-GB.json +1 -56
  796. homeassistant/components/vacuum/translations/en.json +12 -8
  797. homeassistant/components/vacuum/translations/es.json +1 -56
  798. homeassistant/components/vacuum/translations/et.json +1 -51
  799. homeassistant/components/vacuum/translations/ga.json +1 -48
  800. homeassistant/components/vacuum/translations/lt.json +12 -8
  801. homeassistant/components/vacuum/translations/pt.json +16 -4
  802. homeassistant/components/vacuum/translations/ru.json +1 -48
  803. homeassistant/components/vacuum/translations/sk.json +12 -8
  804. homeassistant/components/vacuum/translations/sv.json +1 -13
  805. homeassistant/components/vacuum/translations/tr.json +1 -48
  806. homeassistant/components/vacuum/translations/zh-Hans.json +2 -6
  807. homeassistant/components/vacuum/translations/zh-Hant.json +12 -8
  808. homeassistant/components/vegehub/translations/tr.json +0 -5
  809. homeassistant/components/velux/translations/tr.json +0 -12
  810. homeassistant/components/vesync/manifest.json +1 -1
  811. homeassistant/components/vesync/translations/tr.json +0 -11
  812. homeassistant/components/vicare/translations/es.json +0 -54
  813. homeassistant/components/vicare/translations/sr-Latn.json +0 -10
  814. homeassistant/components/vicare/translations/tr.json +0 -21
  815. homeassistant/components/volvo/translations/es.json +0 -6
  816. homeassistant/components/volvo/translations/tr.json +0 -142
  817. homeassistant/components/volvooncall/translations/tr.json +1 -18
  818. homeassistant/components/waqi/translations/sr-Latn.json +0 -32
  819. homeassistant/components/waqi/translations/tr.json +0 -40
  820. homeassistant/components/water_heater/translations/sr-Latn.json +1 -2
  821. homeassistant/components/weatherflow/translations/tr.json +0 -8
  822. homeassistant/components/webostv/manifest.json +0 -1
  823. homeassistant/components/whirlpool/translations/tr.json +0 -81
  824. homeassistant/components/withings/translations/es.json +0 -5
  825. homeassistant/components/withings/translations/sr-Latn.json +0 -5
  826. homeassistant/components/wled/config_flow.py +1 -5
  827. homeassistant/components/wled/coordinator.py +0 -9
  828. homeassistant/components/wled/strings.json +2 -10
  829. homeassistant/components/wled/translations/cs.json +2 -15
  830. homeassistant/components/wled/translations/de.json +2 -10
  831. homeassistant/components/wled/translations/el.json +1 -20
  832. homeassistant/components/wled/translations/en-GB.json +2 -15
  833. homeassistant/components/wled/translations/en.json +2 -10
  834. homeassistant/components/wled/translations/es.json +2 -15
  835. homeassistant/components/wled/translations/et.json +2 -10
  836. homeassistant/components/wled/translations/ga.json +1 -6
  837. homeassistant/components/wled/translations/it.json +1 -6
  838. homeassistant/components/wled/translations/lt.json +2 -15
  839. homeassistant/components/wled/translations/nl.json +1 -2
  840. homeassistant/components/wled/translations/pl.json +1 -8
  841. homeassistant/components/wled/translations/pt.json +1 -6
  842. homeassistant/components/wled/translations/ru.json +2 -29
  843. homeassistant/components/wled/translations/sk.json +2 -10
  844. homeassistant/components/wled/translations/tr.json +1 -26
  845. homeassistant/components/wled/translations/zh-Hans.json +1 -6
  846. homeassistant/components/wled/translations/zh-Hant.json +2 -15
  847. homeassistant/components/wled/update.py +1 -1
  848. homeassistant/components/workday/translations/tr.json +0 -5
  849. homeassistant/components/xbox/translations/es.json +1 -16
  850. homeassistant/components/xbox/translations/ga.json +1 -10
  851. homeassistant/components/xbox/translations/tr.json +0 -111
  852. homeassistant/components/xiaomi_aqara/translations/sr-Latn.json +0 -6
  853. homeassistant/components/xiaomi_ble/manifest.json +0 -1
  854. homeassistant/components/yardian/translations/tr.json +0 -16
  855. homeassistant/components/yolink/translations/tr.json +0 -14
  856. homeassistant/components/youtube/manifest.json +1 -1
  857. homeassistant/components/youtube/translations/es.json +0 -5
  858. homeassistant/components/zha/config_flow.py +6 -2
  859. homeassistant/components/zha/manifest.json +0 -1
  860. homeassistant/components/zha/radio_manager.py +2 -2
  861. homeassistant/components/zha/translations/de.json +1 -1
  862. homeassistant/components/zha/translations/en-GB.json +0 -44
  863. homeassistant/components/zha/translations/es.json +0 -44
  864. homeassistant/components/zha/translations/ga.json +0 -44
  865. homeassistant/components/zha/translations/it.json +0 -44
  866. homeassistant/components/zha/translations/mk.json +1 -18
  867. homeassistant/components/zha/translations/nl.json +0 -8
  868. homeassistant/components/zha/translations/sr-Latn.json +0 -3
  869. homeassistant/components/zha/translations/tr.json +2 -213
  870. homeassistant/components/zha/translations/zh-Hans.json +0 -12
  871. homeassistant/components/zwave_js/translations/tr.json +0 -17
  872. homeassistant/const.py +1 -2
  873. homeassistant/generated/integrations.json +21 -21
  874. homeassistant/generated/labs.py +2 -2
  875. homeassistant/helpers/area_registry.py +1 -8
  876. homeassistant/helpers/condition.py +1 -16
  877. homeassistant/helpers/entity.py +1 -3
  878. homeassistant/helpers/floor_registry.py +1 -12
  879. homeassistant/helpers/trigger.py +1 -16
  880. homeassistant/package_constraints.txt +4 -4
  881. {homeassistant-2025.12.0.dist-info → homeassistant-2025.12.0b2.dist-info}/METADATA +2 -2
  882. {homeassistant-2025.12.0.dist-info → homeassistant-2025.12.0b2.dist-info}/RECORD +887 -972
  883. homeassistant/components/actron_air/translations/tr.json +0 -27
  884. homeassistant/components/airobot/translations/es.json +0 -44
  885. homeassistant/components/airobot/translations/ga.json +0 -40
  886. homeassistant/components/airobot/translations/it.json +0 -1
  887. homeassistant/components/airos/translations/tr.json +0 -71
  888. homeassistant/components/alert/translations/mk.json +0 -10
  889. homeassistant/components/anglian_water/translations/el.json +0 -20
  890. homeassistant/components/anglian_water/translations/en-GB.json +0 -55
  891. homeassistant/components/anglian_water/translations/es.json +0 -55
  892. homeassistant/components/anglian_water/translations/ga.json +0 -54
  893. homeassistant/components/anglian_water/translations/sv.json +0 -14
  894. homeassistant/components/anglian_water/translations/tr.json +0 -54
  895. homeassistant/components/automation/translations/mk.json +0 -10
  896. homeassistant/components/backblaze_b2/translations/tr.json +0 -92
  897. homeassistant/components/binary_sensor/trigger.py +0 -67
  898. homeassistant/components/binary_sensor/triggers.yaml +0 -25
  899. homeassistant/components/color_extractor/translations/mk.json +0 -7
  900. homeassistant/components/compit/translations/tr.json +0 -35
  901. homeassistant/components/cync/translations/tr.json +0 -46
  902. homeassistant/components/datetime/translations/sr-Latn.json +0 -17
  903. homeassistant/components/droplet/translations/tr.json +0 -40
  904. homeassistant/components/ekeybionyx/translations/tr.json +0 -66
  905. homeassistant/components/energy/translations/sr-Latn.json +0 -64
  906. homeassistant/components/energyid/translations/el.json +0 -53
  907. homeassistant/components/energyid/translations/en-GB.json +0 -71
  908. homeassistant/components/energyid/translations/es.json +0 -71
  909. homeassistant/components/energyid/translations/ga.json +0 -71
  910. homeassistant/components/energyid/translations/it.json +0 -71
  911. homeassistant/components/energyid/translations/nl.json +0 -1
  912. homeassistant/components/energyid/translations/sv.json +0 -37
  913. homeassistant/components/energyid/translations/tr.json +0 -71
  914. homeassistant/components/essent/translations/el.json +0 -9
  915. homeassistant/components/essent/translations/en-GB.json +0 -70
  916. homeassistant/components/essent/translations/es.json +0 -70
  917. homeassistant/components/essent/translations/ga.json +0 -70
  918. homeassistant/components/essent/translations/tr.json +0 -70
  919. homeassistant/components/fing/translations/tr.json +0 -24
  920. homeassistant/components/forked_daapd/translations/sr-Latn.json +0 -8
  921. homeassistant/components/go2rtc/util.py +0 -12
  922. homeassistant/components/google_air_quality/translations/el.json +0 -72
  923. homeassistant/components/google_air_quality/translations/en-GB.json +0 -225
  924. homeassistant/components/google_air_quality/translations/es.json +0 -239
  925. homeassistant/components/google_air_quality/translations/fr.json +0 -14
  926. homeassistant/components/google_air_quality/translations/ga.json +0 -225
  927. homeassistant/components/google_air_quality/translations/it.json +0 -106
  928. homeassistant/components/google_air_quality/translations/pl.json +0 -11
  929. homeassistant/components/google_air_quality/translations/ru.json +0 -33
  930. homeassistant/components/google_air_quality/translations/sr-Latn.json +0 -35
  931. homeassistant/components/google_air_quality/translations/sv.json +0 -122
  932. homeassistant/components/google_air_quality/translations/tr.json +0 -225
  933. homeassistant/components/hanna/translations/es.json +0 -44
  934. homeassistant/components/hue_ble/translations/el.json +0 -11
  935. homeassistant/components/hue_ble/translations/en-GB.json +0 -21
  936. homeassistant/components/hue_ble/translations/es.json +0 -21
  937. homeassistant/components/hue_ble/translations/et.json +0 -21
  938. homeassistant/components/hue_ble/translations/ga.json +0 -20
  939. homeassistant/components/hue_ble/translations/tr.json +0 -20
  940. homeassistant/components/hunterdouglas_powerview/translations/sr-Latn.json +0 -9
  941. homeassistant/components/imeon_inverter/translations/tr.json +0 -57
  942. homeassistant/components/inels/translations/tr.json +0 -30
  943. homeassistant/components/irm_kmi/translations/tr.json +0 -21
  944. homeassistant/components/labs/translations/es.json +0 -3
  945. homeassistant/components/labs/translations/sr-Latn.json +0 -3
  946. homeassistant/components/lannouncer/translations/tr.json +0 -8
  947. homeassistant/components/libre_hardware_monitor/translations/tr.json +0 -23
  948. homeassistant/components/london_underground/translations/tr.json +0 -38
  949. homeassistant/components/lunatone/translations/tr.json +0 -36
  950. homeassistant/components/media_source/translations/tr.json +0 -5
  951. homeassistant/components/meteo_lt/translations/tr.json +0 -14
  952. homeassistant/components/nintendo_parental_controls/translations/tr.json +0 -68
  953. homeassistant/components/notify/translations/sr-Latn.json +0 -3
  954. homeassistant/components/openrgb/translations/tr.json +0 -84
  955. homeassistant/components/prowl/translations/tr.json +0 -21
  956. homeassistant/components/remote/translations/mk.json +0 -10
  957. homeassistant/components/satel_integra/translations/tr.json +0 -131
  958. homeassistant/components/saunum/translations/ru.json +0 -9
  959. homeassistant/components/saunum/translations/sr-Latn.json +0 -9
  960. homeassistant/components/script/translations/mk.json +0 -10
  961. homeassistant/components/sftp_storage/translations/tr.json +0 -22
  962. homeassistant/components/sleep_as_android/translations/tr.json +0 -68
  963. homeassistant/components/togrill/translations/tr.json +0 -58
  964. homeassistant/components/uptime_kuma/translations/tr.json +0 -13
  965. homeassistant/components/vacuum/translations/mk.json +0 -10
  966. homeassistant/components/victron_ble/translations/es.json +0 -234
  967. homeassistant/components/victron_remote_monitoring/translations/tr.json +0 -102
  968. homeassistant/components/water_heater/translations/mk.json +0 -10
  969. homeassistant/components/zeroconf/translations/tr.json +0 -14
  970. {homeassistant-2025.12.0.dist-info → homeassistant-2025.12.0b2.dist-info}/WHEEL +0 -0
  971. {homeassistant-2025.12.0.dist-info → homeassistant-2025.12.0b2.dist-info}/entry_points.txt +0 -0
  972. {homeassistant-2025.12.0.dist-info → homeassistant-2025.12.0b2.dist-info}/licenses/LICENSE.md +0 -0
  973. {homeassistant-2025.12.0.dist-info → homeassistant-2025.12.0b2.dist-info}/licenses/homeassistant/backports/LICENSE.Python +0 -0
  974. {homeassistant-2025.12.0.dist-info → homeassistant-2025.12.0b2.dist-info}/top_level.txt +0 -0
@@ -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
  }
@@ -1,53 +1,13 @@
1
1
  {
2
2
  "entity_component": {
3
3
  "_": {
4
- "name": "Broja\u010d",
5
4
  "state_attributes": {
6
5
  "editable": {
7
- "name": "Upravljano putem interfejsa",
8
6
  "state": {
9
- "false": "Ne",
10
7
  "true": "Da"
11
8
  }
12
- },
13
- "initial": {
14
- "name": "Po\u010detna vrednost"
15
- },
16
- "maximum": {
17
- "name": "Maksimum"
18
- },
19
- "minimum": {
20
- "name": "Minimum"
21
- },
22
- "step": {
23
- "name": "Korak"
24
9
  }
25
10
  }
26
11
  }
27
- },
28
- "services": {
29
- "decrement": {
30
- "description": "Umanjenje vrednost broja\u010da za definisani korak.",
31
- "name": "Smanjenje"
32
- },
33
- "increment": {
34
- "description": "Pove\u0107ava vrednost broja\u010da za definisani korak.",
35
- "name": "Pove\u0107anje"
36
- },
37
- "reset": {
38
- "description": "Resetuje broja\u010d na po\u010detnu vrednost.",
39
- "name": "Resetuj"
40
- },
41
- "set_value": {
42
- "description": "Postavlja broja\u010d na odre\u0111enu vrednost.",
43
- "fields": {
44
- "value": {
45
- "description": "Nova vrednost broja\u010da na koju treba postaviti entitet.",
46
- "name": "Vrednost"
47
- }
48
- },
49
- "name": "Postavi"
50
- }
51
- },
52
- "title": "Broja\u010d"
12
+ }
53
13
  }
@@ -108,5 +108,34 @@
108
108
  "toggle_cover_tilt": {
109
109
  "service": "mdi:arrow-top-right-bottom-left"
110
110
  }
111
+ },
112
+ "triggers": {
113
+ "awning_opened": {
114
+ "trigger": "mdi:awning-outline"
115
+ },
116
+ "blind_opened": {
117
+ "trigger": "mdi:blinds-horizontal"
118
+ },
119
+ "curtain_opened": {
120
+ "trigger": "mdi:curtains"
121
+ },
122
+ "door_opened": {
123
+ "trigger": "mdi:door-open"
124
+ },
125
+ "garage_opened": {
126
+ "trigger": "mdi:garage-open"
127
+ },
128
+ "gate_opened": {
129
+ "trigger": "mdi:gate-open"
130
+ },
131
+ "shade_opened": {
132
+ "trigger": "mdi:roller-shade"
133
+ },
134
+ "shutter_opened": {
135
+ "trigger": "mdi:window-shutter-open"
136
+ },
137
+ "window_opened": {
138
+ "trigger": "mdi:window-open"
139
+ }
111
140
  }
112
141
  }