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