homeassistant 2025.12.0b2__py3-none-any.whl → 2025.12.0b5__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 (893) 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 +1 -2
  12. homeassistant/components/airobot/translations/en-GB.json +1 -5
  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 -5
  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 -5
  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 +7 -28
  36. homeassistant/components/alarm_control_panel/translations/de.json +7 -14
  37. homeassistant/components/alarm_control_panel/translations/en-GB.json +72 -1
  38. homeassistant/components/alarm_control_panel/translations/en.json +14 -21
  39. homeassistant/components/alarm_control_panel/translations/es.json +80 -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 +7 -28
  43. homeassistant/components/alarm_control_panel/translations/pt.json +14 -31
  44. homeassistant/components/alarm_control_panel/translations/sk.json +7 -28
  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 +54 -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/lt.json +1 -2
  65. homeassistant/components/anglian_water/translations/pt.json +1 -2
  66. homeassistant/components/anglian_water/translations/sk.json +1 -2
  67. homeassistant/components/anglian_water/translations/sv.json +14 -0
  68. homeassistant/components/anglian_water/translations/tr.json +54 -0
  69. homeassistant/components/anglian_water/translations/zh-Hans.json +32 -2
  70. homeassistant/components/aosmith/translations/tr.json +11 -0
  71. homeassistant/components/apcupsd/translations/es.json +14 -0
  72. homeassistant/components/apcupsd/translations/sr-Latn.json +3 -0
  73. homeassistant/components/apple_tv/manifest.json +1 -0
  74. homeassistant/components/assist_pipeline/pipeline.py +58 -57
  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 +46 -1
  79. homeassistant/components/assist_satellite/translations/en.json +8 -12
  80. homeassistant/components/assist_satellite/translations/es.json +46 -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 +4 -16
  84. homeassistant/components/assist_satellite/translations/pt.json +4 -16
  85. homeassistant/components/assist_satellite/translations/sk.json +4 -16
  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/strings.json +4 -4
  92. homeassistant/components/automation/translations/cs.json +0 -8
  93. homeassistant/components/automation/translations/de.json +4 -4
  94. homeassistant/components/automation/translations/en.json +4 -4
  95. homeassistant/components/automation/translations/et.json +4 -4
  96. homeassistant/components/automation/translations/lt.json +0 -8
  97. homeassistant/components/automation/translations/mk.json +10 -0
  98. homeassistant/components/automation/translations/pt.json +0 -8
  99. homeassistant/components/automation/translations/sk.json +0 -8
  100. homeassistant/components/automation/translations/sr-Latn.json +28 -0
  101. homeassistant/components/automation/translations/zh-Hant.json +4 -4
  102. homeassistant/components/backblaze_b2/translations/de.json +2 -2
  103. homeassistant/components/backblaze_b2/translations/es.json +1 -1
  104. homeassistant/components/backblaze_b2/translations/tr.json +92 -0
  105. homeassistant/components/bang_olufsen/translations/es.json +992 -0
  106. homeassistant/components/bang_olufsen/translations/ga.json +992 -0
  107. homeassistant/components/bang_olufsen/translations/nl.json +76 -3
  108. homeassistant/components/bang_olufsen/translations/pt.json +1 -0
  109. homeassistant/components/bayesian/translations/sr-Latn.json +2 -1
  110. homeassistant/components/bayesian/translations/tr.json +81 -10
  111. homeassistant/components/binary_sensor/icons.json +8 -0
  112. homeassistant/components/binary_sensor/strings.json +36 -1
  113. homeassistant/components/binary_sensor/translations/de.json +36 -1
  114. homeassistant/components/binary_sensor/translations/en.json +36 -1
  115. homeassistant/components/binary_sensor/translations/et.json +36 -1
  116. homeassistant/components/binary_sensor/translations/mk.json +8 -0
  117. homeassistant/components/binary_sensor/translations/sk.json +36 -1
  118. homeassistant/components/binary_sensor/translations/sr-Latn.json +1 -0
  119. homeassistant/components/binary_sensor/translations/zh-Hant.json +36 -1
  120. homeassistant/components/binary_sensor/trigger.py +67 -0
  121. homeassistant/components/binary_sensor/triggers.yaml +25 -0
  122. homeassistant/components/blink/translations/tr.json +16 -1
  123. homeassistant/components/blue_current/translations/tr.json +44 -0
  124. homeassistant/components/bosch_alarm/__init__.py +2 -2
  125. homeassistant/components/bosch_alarm/config_flow.py +1 -1
  126. homeassistant/components/bosch_alarm/diagnostics.py +2 -1
  127. homeassistant/components/bosch_alarm/entity.py +1 -1
  128. homeassistant/components/bosch_alarm/manifest.json +1 -1
  129. homeassistant/components/broadlink/manifest.json +1 -0
  130. homeassistant/components/broadlink/translations/sr-Latn.json +5 -0
  131. homeassistant/components/brother/translations/tr.json +53 -2
  132. homeassistant/components/bsblan/translations/tr.json +22 -2
  133. homeassistant/components/bthome/translations/tr.json +35 -0
  134. homeassistant/components/button/translations/sr-Latn.json +20 -0
  135. homeassistant/components/camera/translations/mk.json +4 -2
  136. homeassistant/components/climate/strings.json +10 -15
  137. homeassistant/components/climate/translations/cs.json +5 -20
  138. homeassistant/components/climate/translations/de.json +5 -10
  139. homeassistant/components/climate/translations/el.json +54 -1
  140. homeassistant/components/climate/translations/en-GB.json +54 -1
  141. homeassistant/components/climate/translations/en.json +10 -15
  142. homeassistant/components/climate/translations/es.json +58 -1
  143. homeassistant/components/climate/translations/et.json +57 -6
  144. homeassistant/components/climate/translations/ga.json +54 -1
  145. homeassistant/components/climate/translations/lt.json +19 -12
  146. homeassistant/components/climate/translations/mk.json +10 -3
  147. homeassistant/components/climate/translations/pt.json +19 -12
  148. homeassistant/components/climate/translations/ru.json +54 -1
  149. homeassistant/components/climate/translations/sk.json +5 -20
  150. homeassistant/components/climate/translations/sr-Latn.json +101 -3
  151. homeassistant/components/climate/translations/sv.json +17 -1
  152. homeassistant/components/climate/translations/tr.json +54 -1
  153. homeassistant/components/climate/translations/zh-Hans.json +14 -0
  154. homeassistant/components/climate/translations/zh-Hant.json +10 -15
  155. homeassistant/components/cloud/__init__.py +18 -5
  156. homeassistant/components/cloud/ai_task.py +5 -12
  157. homeassistant/components/cloud/conversation.py +2 -11
  158. homeassistant/components/cloud/entity.py +4 -5
  159. homeassistant/components/cloud/translations/en-GB.json +7 -0
  160. homeassistant/components/cloud/translations/es.json +7 -0
  161. homeassistant/components/cloud/translations/et.json +7 -0
  162. homeassistant/components/cloud/translations/ga.json +7 -0
  163. homeassistant/components/cloud/translations/tr.json +7 -0
  164. homeassistant/components/coinbase/translations/tr.json +10 -1
  165. homeassistant/components/color_extractor/translations/mk.json +7 -0
  166. homeassistant/components/comelit/translations/tr.json +2 -0
  167. homeassistant/components/compit/translations/tr.json +35 -0
  168. homeassistant/components/conversation/__init__.py +8 -3
  169. homeassistant/components/conversation/default_agent.py +61 -56
  170. homeassistant/components/conversation/manifest.json +1 -1
  171. homeassistant/components/counter/translations/sr-Latn.json +41 -1
  172. homeassistant/components/cover/icons.json +0 -29
  173. homeassistant/components/cover/strings.json +1 -159
  174. homeassistant/components/cover/translations/cs.json +1 -159
  175. homeassistant/components/cover/translations/de.json +1 -159
  176. homeassistant/components/cover/translations/en.json +1 -159
  177. homeassistant/components/cover/translations/et.json +1 -30
  178. homeassistant/components/cover/translations/lt.json +1 -159
  179. homeassistant/components/cover/translations/pt.json +1 -158
  180. homeassistant/components/cover/translations/sk.json +1 -159
  181. homeassistant/components/cover/translations/sr-Latn.json +5 -1
  182. homeassistant/components/cover/translations/zh-Hans.json +1 -105
  183. homeassistant/components/cover/translations/zh-Hant.json +1 -159
  184. homeassistant/components/cync/translations/tr.json +46 -0
  185. homeassistant/components/datetime/translations/sr-Latn.json +17 -0
  186. homeassistant/components/deconz/translations/mk.json +3 -1
  187. homeassistant/components/deluge/translations/tr.json +8 -0
  188. homeassistant/components/derivative/translations/es.json +6 -0
  189. homeassistant/components/derivative/translations/ga.json +6 -0
  190. homeassistant/components/derivative/translations/sr-Latn.json +41 -4
  191. homeassistant/components/dlna_dmr/manifest.json +1 -0
  192. homeassistant/components/dlna_dms/manifest.json +1 -0
  193. homeassistant/components/downloader/translations/tr.json +8 -0
  194. homeassistant/components/droplet/translations/tr.json +40 -0
  195. homeassistant/components/duckdns/translations/en-GB.json +1 -0
  196. homeassistant/components/duckdns/translations/es.json +41 -0
  197. homeassistant/components/duckdns/translations/ga.json +40 -0
  198. homeassistant/components/ecovacs/translations/tr.json +50 -2
  199. homeassistant/components/ecowitt/manifest.json +1 -0
  200. homeassistant/components/ekeybionyx/translations/tr.json +66 -0
  201. homeassistant/components/elevenlabs/translations/tr.json +17 -1
  202. homeassistant/components/elkm1/translations/tr.json +4 -0
  203. homeassistant/components/energy/translations/sr-Latn.json +64 -0
  204. homeassistant/components/energyid/translations/el.json +53 -0
  205. homeassistant/components/energyid/translations/en-GB.json +71 -0
  206. homeassistant/components/energyid/translations/es.json +71 -0
  207. homeassistant/components/energyid/translations/ga.json +71 -0
  208. homeassistant/components/energyid/translations/it.json +71 -0
  209. homeassistant/components/energyid/translations/nl.json +1 -0
  210. homeassistant/components/energyid/translations/sv.json +37 -0
  211. homeassistant/components/energyid/translations/tr.json +71 -0
  212. homeassistant/components/energyid/translations/zh-Hans.json +17 -1
  213. homeassistant/components/enphase_envoy/manifest.json +1 -1
  214. homeassistant/components/enphase_envoy/translations/tr.json +15 -0
  215. homeassistant/components/esphome/const.py +1 -1
  216. homeassistant/components/esphome/manifest.json +1 -1
  217. homeassistant/components/esphome/strings.json +1 -1
  218. homeassistant/components/esphome/translations/bg.json +0 -1
  219. homeassistant/components/esphome/translations/ca.json +0 -1
  220. homeassistant/components/esphome/translations/cs.json +1 -1
  221. homeassistant/components/esphome/translations/da.json +0 -1
  222. homeassistant/components/esphome/translations/de.json +1 -1
  223. homeassistant/components/esphome/translations/el.json +0 -1
  224. homeassistant/components/esphome/translations/en-GB.json +1 -1
  225. homeassistant/components/esphome/translations/en.json +1 -1
  226. homeassistant/components/esphome/translations/es.json +1 -1
  227. homeassistant/components/esphome/translations/et.json +1 -1
  228. homeassistant/components/esphome/translations/fi.json +0 -1
  229. homeassistant/components/esphome/translations/fr.json +0 -1
  230. homeassistant/components/esphome/translations/ga.json +0 -1
  231. homeassistant/components/esphome/translations/he.json +0 -1
  232. homeassistant/components/esphome/translations/hu.json +0 -1
  233. homeassistant/components/esphome/translations/id.json +0 -1
  234. homeassistant/components/esphome/translations/it.json +0 -1
  235. homeassistant/components/esphome/translations/ja.json +0 -1
  236. homeassistant/components/esphome/translations/ko.json +0 -1
  237. homeassistant/components/esphome/translations/lt.json +0 -1
  238. homeassistant/components/esphome/translations/nb.json +0 -1
  239. homeassistant/components/esphome/translations/nl.json +0 -1
  240. homeassistant/components/esphome/translations/pl.json +0 -1
  241. homeassistant/components/esphome/translations/pt-BR.json +0 -1
  242. homeassistant/components/esphome/translations/pt.json +1 -1
  243. homeassistant/components/esphome/translations/ro.json +0 -1
  244. homeassistant/components/esphome/translations/ru.json +0 -1
  245. homeassistant/components/esphome/translations/sk.json +1 -1
  246. homeassistant/components/esphome/translations/sl.json +0 -1
  247. homeassistant/components/esphome/translations/sv.json +0 -1
  248. homeassistant/components/esphome/translations/tr.json +1 -1
  249. homeassistant/components/esphome/translations/uk.json +0 -1
  250. homeassistant/components/esphome/translations/vi.json +0 -1
  251. homeassistant/components/esphome/translations/zh-Hans.json +1 -1
  252. homeassistant/components/esphome/translations/zh-Hant.json +1 -1
  253. homeassistant/components/essent/translations/el.json +9 -0
  254. homeassistant/components/essent/translations/en-GB.json +70 -0
  255. homeassistant/components/essent/translations/es.json +70 -0
  256. homeassistant/components/essent/translations/ga.json +70 -0
  257. homeassistant/components/essent/translations/tr.json +70 -0
  258. homeassistant/components/essent/translations/zh-Hans.json +38 -0
  259. homeassistant/components/event/translations/pl.json +2 -1
  260. homeassistant/components/event/translations/sr-Latn.json +16 -1
  261. homeassistant/components/fan/strings.json +4 -6
  262. homeassistant/components/fan/translations/cs.json +2 -8
  263. homeassistant/components/fan/translations/de.json +2 -4
  264. homeassistant/components/fan/translations/en-GB.json +30 -1
  265. homeassistant/components/fan/translations/en.json +4 -6
  266. homeassistant/components/fan/translations/es.json +33 -1
  267. homeassistant/components/fan/translations/et.json +4 -6
  268. homeassistant/components/fan/translations/ga.json +30 -1
  269. homeassistant/components/fan/translations/lt.json +2 -8
  270. homeassistant/components/fan/translations/mk.json +11 -0
  271. homeassistant/components/fan/translations/pt.json +2 -8
  272. homeassistant/components/fan/translations/sk.json +2 -8
  273. homeassistant/components/fan/translations/tr.json +30 -1
  274. homeassistant/components/fan/translations/zh-Hant.json +4 -6
  275. homeassistant/components/file/translations/tr.json +26 -0
  276. homeassistant/components/filter/translations/sr-Latn.json +149 -11
  277. homeassistant/components/fing/translations/tr.json +24 -0
  278. homeassistant/components/firefly_iii/translations/de.json +2 -2
  279. homeassistant/components/firefly_iii/translations/tr.json +87 -0
  280. homeassistant/components/foscam/translations/tr.json +45 -1
  281. homeassistant/components/fritz/translations/tr.json +24 -0
  282. homeassistant/components/fronius/manifest.json +1 -0
  283. homeassistant/components/fronius/translations/sr-Latn.json +3 -0
  284. homeassistant/components/frontend/manifest.json +1 -1
  285. homeassistant/components/frontend/storage.py +16 -6
  286. homeassistant/components/frontend/translations/el.json +8 -0
  287. homeassistant/components/frontend/translations/es.json +8 -0
  288. homeassistant/components/frontend/translations/ga.json +8 -0
  289. homeassistant/components/frontend/translations/ru.json +8 -0
  290. homeassistant/components/frontend/translations/sr-Latn.json +8 -0
  291. homeassistant/components/frontend/translations/tr.json +8 -0
  292. homeassistant/components/frontend/translations/zh-Hans.json +3 -0
  293. homeassistant/components/fully_kiosk/translations/tr.json +15 -0
  294. homeassistant/components/fyta/translations/sr-Latn.json +6 -0
  295. homeassistant/components/generic/translations/sr-Latn.json +42 -0
  296. homeassistant/components/generic_hygrostat/translations/sr-Latn.json +36 -4
  297. homeassistant/components/generic_thermostat/translations/sr-Latn.json +46 -6
  298. homeassistant/components/geocaching/translations/tr.json +2 -1
  299. homeassistant/components/gios/translations/sr-Latn.json +10 -0
  300. homeassistant/components/go2rtc/__init__.py +6 -2
  301. homeassistant/components/go2rtc/const.py +0 -1
  302. homeassistant/components/go2rtc/server.py +16 -6
  303. homeassistant/components/go2rtc/util.py +12 -0
  304. homeassistant/components/google/manifest.json +1 -0
  305. homeassistant/components/google_air_quality/manifest.json +1 -1
  306. homeassistant/components/google_air_quality/strings.json +1 -4
  307. homeassistant/components/google_air_quality/translations/cs.json +1 -4
  308. homeassistant/components/google_air_quality/translations/de.json +1 -4
  309. homeassistant/components/google_air_quality/translations/el.json +79 -0
  310. homeassistant/components/google_air_quality/translations/en-GB.json +81 -0
  311. homeassistant/components/google_air_quality/translations/en.json +1 -4
  312. homeassistant/components/google_air_quality/translations/es.json +234 -0
  313. homeassistant/components/google_air_quality/translations/et.json +50 -3
  314. homeassistant/components/google_air_quality/translations/ga.json +234 -0
  315. homeassistant/components/google_air_quality/translations/it.json +106 -0
  316. homeassistant/components/google_air_quality/translations/lt.json +1 -4
  317. homeassistant/components/google_air_quality/translations/pl.json +11 -0
  318. homeassistant/components/google_air_quality/translations/pt.json +1 -4
  319. homeassistant/components/google_air_quality/translations/ru.json +42 -0
  320. homeassistant/components/google_air_quality/translations/sk.json +1 -4
  321. homeassistant/components/google_air_quality/translations/sr-Latn.json +35 -0
  322. homeassistant/components/google_air_quality/translations/sv.json +131 -0
  323. homeassistant/components/google_air_quality/translations/tr.json +234 -0
  324. homeassistant/components/google_air_quality/translations/zh-Hans.json +84 -5
  325. homeassistant/components/google_air_quality/translations/zh-Hant.json +1 -4
  326. homeassistant/components/google_assistant_sdk/translations/es.json +3 -0
  327. homeassistant/components/google_assistant_sdk/translations/tr.json +7 -0
  328. homeassistant/components/google_generative_ai_conversation/translations/tr.json +6 -0
  329. homeassistant/components/google_sheets/translations/es.json +4 -0
  330. homeassistant/components/google_sheets/translations/tr.json +22 -0
  331. homeassistant/components/google_translate/manifest.json +1 -0
  332. homeassistant/components/google_weather/translations/es.json +66 -0
  333. homeassistant/components/google_weather/translations/ga.json +37 -0
  334. homeassistant/components/gpsd/translations/sr-Latn.json +3 -0
  335. homeassistant/components/group/translations/sr-Latn.json +154 -12
  336. homeassistant/components/group/translations/tr.json +19 -1
  337. homeassistant/components/growatt_server/translations/tr.json +87 -0
  338. homeassistant/components/habitica/translations/tr.json +76 -0
  339. homeassistant/components/hanna/translations/es.json +44 -0
  340. homeassistant/components/hassio/translations/sr-Latn.json +5 -0
  341. homeassistant/components/hassio/translations/tr.json +39 -0
  342. homeassistant/components/history_stats/translations/sr-Latn.json +85 -3
  343. homeassistant/components/holiday/translations/pl.json +7 -0
  344. homeassistant/components/home_connect/manifest.json +1 -0
  345. homeassistant/components/home_connect/translations/es.json +46 -0
  346. homeassistant/components/home_connect/translations/ga.json +46 -0
  347. homeassistant/components/home_connect/translations/tr.json +32 -0
  348. homeassistant/components/homeassistant_connect_zbt2/translations/es.json +8 -0
  349. homeassistant/components/homeassistant_connect_zbt2/translations/ga.json +8 -0
  350. homeassistant/components/homeassistant_connect_zbt2/translations/tr.json +145 -0
  351. homeassistant/components/homeassistant_hardware/firmware_config_flow.py +81 -68
  352. homeassistant/components/homeassistant_hardware/translations/es.json +4 -0
  353. homeassistant/components/homeassistant_hardware/translations/ga.json +4 -0
  354. homeassistant/components/homeassistant_hardware/translations/tr.json +44 -1
  355. homeassistant/components/homeassistant_hardware/update.py +13 -10
  356. homeassistant/components/homeassistant_hardware/util.py +59 -53
  357. homeassistant/components/homeassistant_sky_connect/translations/es.json +8 -0
  358. homeassistant/components/homeassistant_sky_connect/translations/ga.json +8 -0
  359. homeassistant/components/homeassistant_sky_connect/translations/tr.json +71 -0
  360. homeassistant/components/homeassistant_yellow/translations/es.json +4 -0
  361. homeassistant/components/homeassistant_yellow/translations/ga.json +4 -0
  362. homeassistant/components/homeassistant_yellow/translations/tr.json +35 -0
  363. homeassistant/components/homekit/translations/tr.json +12 -0
  364. homeassistant/components/homekit_controller/manifest.json +1 -0
  365. homeassistant/components/homewizard/manifest.json +1 -0
  366. homeassistant/components/hue/translations/mk.json +3 -1
  367. homeassistant/components/hue/translations/tr.json +1 -0
  368. homeassistant/components/hue_ble/strings.json +1 -1
  369. homeassistant/components/hue_ble/translations/el.json +11 -0
  370. homeassistant/components/hue_ble/translations/en-GB.json +20 -0
  371. homeassistant/components/hue_ble/translations/en.json +1 -1
  372. homeassistant/components/hue_ble/translations/es.json +21 -0
  373. homeassistant/components/hue_ble/translations/et.json +21 -0
  374. homeassistant/components/hue_ble/translations/ga.json +20 -0
  375. homeassistant/components/hue_ble/translations/lt.json +1 -2
  376. homeassistant/components/hue_ble/translations/pt.json +1 -2
  377. homeassistant/components/hue_ble/translations/sk.json +1 -2
  378. homeassistant/components/hue_ble/translations/tr.json +20 -0
  379. homeassistant/components/hue_ble/translations/zh-Hans.json +11 -1
  380. homeassistant/components/humidifier/translations/mk.json +6 -0
  381. homeassistant/components/hunterdouglas_powerview/translations/sr-Latn.json +9 -0
  382. homeassistant/components/husqvarna_automower/translations/tr.json +88 -0
  383. homeassistant/components/huum/translations/sr-Latn.json +5 -0
  384. homeassistant/components/ibeacon/manifest.json +1 -0
  385. homeassistant/components/icloud/translations/tr.json +3 -0
  386. homeassistant/components/image/translations/sr-Latn.json +2 -1
  387. homeassistant/components/imap/translations/tr.json +21 -0
  388. homeassistant/components/imeon_inverter/translations/en-GB.json +21 -0
  389. homeassistant/components/imeon_inverter/translations/tr.json +57 -0
  390. homeassistant/components/incomfort/translations/tr.json +3 -0
  391. homeassistant/components/inels/translations/tr.json +30 -0
  392. homeassistant/components/input_boolean/translations/mk.json +4 -2
  393. homeassistant/components/input_number/translations/sr-Latn.json +17 -0
  394. homeassistant/components/integration/translations/sr-Latn.json +54 -2
  395. homeassistant/components/iometer/translations/tr.json +3 -1
  396. homeassistant/components/irm_kmi/translations/tr.json +21 -0
  397. homeassistant/components/iron_os/translations/en-GB.json +5 -1
  398. homeassistant/components/iron_os/translations/es.json +5 -1
  399. homeassistant/components/jewish_calendar/translations/tr.json +9 -1
  400. homeassistant/components/kitchen_sink/translations/en-GB.json +2 -0
  401. homeassistant/components/kitchen_sink/translations/es.json +20 -0
  402. homeassistant/components/kitchen_sink/translations/et.json +5 -1
  403. homeassistant/components/kitchen_sink/translations/ga.json +4 -0
  404. homeassistant/components/kitchen_sink/translations/it.json +12 -0
  405. homeassistant/components/kitchen_sink/translations/ru.json +8 -0
  406. homeassistant/components/kitchen_sink/translations/sv.json +3 -0
  407. homeassistant/components/kitchen_sink/translations/tr.json +4 -0
  408. homeassistant/components/knx/translations/el.json +43 -0
  409. homeassistant/components/knx/translations/es.json +3 -0
  410. homeassistant/components/knx/translations/et.json +3 -0
  411. homeassistant/components/knx/translations/tr.json +318 -0
  412. homeassistant/components/knx/translations/zh-Hans.json +3 -0
  413. homeassistant/components/konnected/manifest.json +1 -0
  414. homeassistant/components/konnected/translations/tr.json +6 -0
  415. homeassistant/components/labs/__init__.py +2 -1
  416. homeassistant/components/labs/const.py +0 -2
  417. homeassistant/components/labs/translations/es.json +3 -0
  418. homeassistant/components/labs/translations/lt.json +1 -1
  419. homeassistant/components/labs/translations/sr-Latn.json +3 -0
  420. homeassistant/components/labs/websocket_api.py +2 -1
  421. homeassistant/components/lannouncer/translations/tr.json +8 -0
  422. homeassistant/components/lawn_mower/strings.json +8 -12
  423. homeassistant/components/lawn_mower/translations/cs.json +4 -16
  424. homeassistant/components/lawn_mower/translations/de.json +7 -11
  425. homeassistant/components/lawn_mower/translations/en-GB.json +48 -1
  426. homeassistant/components/lawn_mower/translations/en.json +8 -12
  427. homeassistant/components/lawn_mower/translations/es.json +56 -1
  428. homeassistant/components/lawn_mower/translations/et.json +46 -2
  429. homeassistant/components/lawn_mower/translations/ga.json +48 -1
  430. homeassistant/components/lawn_mower/translations/lt.json +4 -16
  431. homeassistant/components/lawn_mower/translations/pt.json +4 -16
  432. homeassistant/components/lawn_mower/translations/sk.json +4 -16
  433. homeassistant/components/lawn_mower/translations/tr.json +48 -1
  434. homeassistant/components/lawn_mower/translations/zh-Hant.json +8 -12
  435. homeassistant/components/letpot/translations/tr.json +8 -0
  436. homeassistant/components/lg_thinq/manifest.json +1 -1
  437. homeassistant/components/lg_thinq/translations/sr-Latn.json +8 -0
  438. homeassistant/components/lg_thinq/translations/tr.json +20 -0
  439. homeassistant/components/libre_hardware_monitor/translations/tr.json +23 -0
  440. homeassistant/components/lifx/translations/tr.json +3 -0
  441. homeassistant/components/light/strings.json +4 -8
  442. homeassistant/components/light/translations/bg.json +0 -12
  443. homeassistant/components/light/translations/cs.json +2 -10
  444. homeassistant/components/light/translations/de.json +2 -6
  445. homeassistant/components/light/translations/el.json +6 -0
  446. homeassistant/components/light/translations/en-GB.json +65 -2
  447. homeassistant/components/light/translations/en.json +4 -8
  448. homeassistant/components/light/translations/es.json +68 -2
  449. homeassistant/components/light/translations/et.json +34 -8
  450. homeassistant/components/light/translations/ga.json +65 -2
  451. homeassistant/components/light/translations/lt.json +2 -10
  452. homeassistant/components/light/translations/mk.json +10 -3
  453. homeassistant/components/light/translations/pt.json +2 -10
  454. homeassistant/components/light/translations/ru.json +67 -3
  455. homeassistant/components/light/translations/sk.json +2 -10
  456. homeassistant/components/light/translations/sr-Latn.json +217 -4
  457. homeassistant/components/light/translations/tr.json +65 -2
  458. homeassistant/components/light/translations/zh-Hans.json +2 -10
  459. homeassistant/components/light/translations/zh-Hant.json +4 -8
  460. homeassistant/components/litterrobot/translations/tr.json +6 -0
  461. homeassistant/components/logger/helpers.py +10 -0
  462. homeassistant/components/logger/websocket_api.py +12 -1
  463. homeassistant/components/london_underground/translations/tr.json +38 -0
  464. homeassistant/components/lovelace/translations/es.json +5 -0
  465. homeassistant/components/lovelace/translations/ga.json +5 -0
  466. homeassistant/components/lunatone/translations/tr.json +36 -0
  467. homeassistant/components/mastodon/translations/es.json +7 -0
  468. homeassistant/components/mastodon/translations/ga.json +7 -0
  469. homeassistant/components/mastodon/translations/tr.json +4 -0
  470. homeassistant/components/matrix/translations/tr.json +42 -0
  471. homeassistant/components/matter/manifest.json +1 -0
  472. homeassistant/components/matter/translations/es.json +13 -0
  473. homeassistant/components/matter/translations/ga.json +10 -0
  474. homeassistant/components/matter/translations/sr-Latn.json +3 -0
  475. homeassistant/components/matter/translations/tr.json +105 -0
  476. homeassistant/components/mcp/translations/tr.json +20 -1
  477. homeassistant/components/mealie/translations/tr.json +11 -0
  478. homeassistant/components/media_extractor/manifest.json +1 -1
  479. homeassistant/components/media_player/strings.json +2 -3
  480. homeassistant/components/media_player/translations/cs.json +1 -4
  481. homeassistant/components/media_player/translations/de.json +1 -2
  482. homeassistant/components/media_player/translations/en-GB.json +22 -1
  483. homeassistant/components/media_player/translations/en.json +2 -3
  484. homeassistant/components/media_player/translations/es.json +24 -1
  485. homeassistant/components/media_player/translations/et.json +8 -1
  486. homeassistant/components/media_player/translations/ga.json +22 -1
  487. homeassistant/components/media_player/translations/lt.json +1 -4
  488. homeassistant/components/media_player/translations/mk.json +4 -2
  489. homeassistant/components/media_player/translations/pt.json +1 -4
  490. homeassistant/components/media_player/translations/sk.json +1 -4
  491. homeassistant/components/media_player/translations/tr.json +22 -1
  492. homeassistant/components/media_player/translations/zh-Hant.json +2 -3
  493. homeassistant/components/media_source/translations/tr.json +5 -0
  494. homeassistant/components/met/manifest.json +1 -0
  495. homeassistant/components/meteo_france/const.py +1 -0
  496. homeassistant/components/meteo_lt/translations/tr.json +14 -0
  497. homeassistant/components/miele/const.py +9 -7
  498. homeassistant/components/miele/strings.json +1 -0
  499. homeassistant/components/miele/translations/cs.json +1 -0
  500. homeassistant/components/miele/translations/de.json +1 -0
  501. homeassistant/components/miele/translations/en.json +1 -0
  502. homeassistant/components/miele/translations/es.json +16 -0
  503. homeassistant/components/miele/translations/et.json +1 -0
  504. homeassistant/components/miele/translations/ga.json +14 -0
  505. homeassistant/components/miele/translations/it.json +1 -0
  506. homeassistant/components/miele/translations/sk.json +1 -0
  507. homeassistant/components/miele/translations/sr-Latn.json +10 -0
  508. homeassistant/components/miele/translations/tr.json +20 -1
  509. homeassistant/components/miele/translations/zh-Hant.json +1 -0
  510. homeassistant/components/min_max/translations/sr-Latn.json +44 -2
  511. homeassistant/components/mold_indicator/translations/sr-Latn.json +41 -3
  512. homeassistant/components/motion_blinds/manifest.json +1 -0
  513. homeassistant/components/mqtt/entity.py +1 -0
  514. homeassistant/components/mqtt/strings.json +4 -5
  515. homeassistant/components/mqtt/translations/bg.json +0 -5
  516. homeassistant/components/mqtt/translations/cs.json +3 -6
  517. homeassistant/components/mqtt/translations/de.json +7 -8
  518. homeassistant/components/mqtt/translations/en-GB.json +3 -6
  519. homeassistant/components/mqtt/translations/en.json +4 -5
  520. homeassistant/components/mqtt/translations/es.json +91 -8
  521. homeassistant/components/mqtt/translations/et.json +4 -5
  522. homeassistant/components/mqtt/translations/fr.json +1 -4
  523. homeassistant/components/mqtt/translations/ga.json +65 -9
  524. homeassistant/components/mqtt/translations/he.json +1 -6
  525. homeassistant/components/mqtt/translations/hu.json +0 -2
  526. homeassistant/components/mqtt/translations/it.json +2 -7
  527. homeassistant/components/mqtt/translations/lt.json +1 -6
  528. homeassistant/components/mqtt/translations/mk.json +6 -0
  529. homeassistant/components/mqtt/translations/nl.json +1 -6
  530. homeassistant/components/mqtt/translations/pt.json +3 -6
  531. homeassistant/components/mqtt/translations/ru.json +6 -6
  532. homeassistant/components/mqtt/translations/sk.json +3 -6
  533. homeassistant/components/mqtt/translations/sr-Latn.json +148 -22
  534. homeassistant/components/mqtt/translations/sv.json +1 -2
  535. homeassistant/components/mqtt/translations/tr.json +255 -5
  536. homeassistant/components/mqtt/translations/zh-Hans.json +3 -6
  537. homeassistant/components/mqtt/translations/zh-Hant.json +4 -5
  538. homeassistant/components/music_assistant/manifest.json +1 -0
  539. homeassistant/components/music_assistant/translations/el.json +3 -1
  540. homeassistant/components/music_assistant/translations/en-GB.json +23 -1
  541. homeassistant/components/music_assistant/translations/es.json +25 -1
  542. homeassistant/components/music_assistant/translations/et.json +1 -0
  543. homeassistant/components/music_assistant/translations/ga.json +24 -1
  544. homeassistant/components/music_assistant/translations/it.json +26 -1
  545. homeassistant/components/music_assistant/translations/nl.json +3 -1
  546. homeassistant/components/music_assistant/translations/ru.json +23 -1
  547. homeassistant/components/music_assistant/translations/sv.json +3 -1
  548. homeassistant/components/music_assistant/translations/tr.json +24 -1
  549. homeassistant/components/music_assistant/translations/zh-Hans.json +16 -0
  550. homeassistant/components/nasweb/translations/tr.json +7 -0
  551. homeassistant/components/neato/translations/es.json +5 -0
  552. homeassistant/components/neato/translations/ga.json +5 -0
  553. homeassistant/components/neato/translations/tr.json +5 -0
  554. homeassistant/components/nederlandse_spoorwegen/translations/es.json +10 -0
  555. homeassistant/components/nederlandse_spoorwegen/translations/tr.json +25 -0
  556. homeassistant/components/nest/manifest.json +1 -1
  557. homeassistant/components/nest/translations/es.json +12 -0
  558. homeassistant/components/nest/translations/tr.json +12 -0
  559. homeassistant/components/netgear/translations/sr-Latn.json +3 -0
  560. homeassistant/components/nextdns/translations/tr.json +14 -1
  561. homeassistant/components/nightscout/translations/tr.json +4 -0
  562. homeassistant/components/niko_home_control/translations/el.json +18 -0
  563. homeassistant/components/niko_home_control/translations/es.json +3 -1
  564. homeassistant/components/niko_home_control/translations/tr.json +10 -1
  565. homeassistant/components/nina/translations/el.json +6 -0
  566. homeassistant/components/nina/translations/en-GB.json +8 -0
  567. homeassistant/components/nina/translations/es.json +8 -0
  568. homeassistant/components/nina/translations/ga.json +8 -0
  569. homeassistant/components/nina/translations/tr.json +54 -0
  570. homeassistant/components/nina/translations/zh-Hans.json +2 -0
  571. homeassistant/components/nintendo_parental_controls/translations/tr.json +68 -0
  572. homeassistant/components/notify/translations/sr-Latn.json +3 -0
  573. homeassistant/components/ntfy/translations/tr.json +78 -0
  574. homeassistant/components/nuki/manifest.json +1 -0
  575. homeassistant/components/number/translations/sr-Latn.json +181 -0
  576. homeassistant/components/number/translations/tr.json +6 -0
  577. homeassistant/components/octoprint/translations/tr.json +10 -0
  578. homeassistant/components/onboarding/const.py +16 -1
  579. homeassistant/components/onboarding/views.py +2 -2
  580. homeassistant/components/onedrive/translations/es.json +3 -0
  581. homeassistant/components/onewire/translations/tr.json +10 -0
  582. homeassistant/components/openai_conversation/translations/tr.json +6 -1
  583. homeassistant/components/openrgb/translations/tr.json +84 -0
  584. homeassistant/components/opentherm_gw/services.py +17 -2
  585. homeassistant/components/opentherm_gw/strings.json +3 -3
  586. homeassistant/components/opentherm_gw/translations/cs.json +3 -3
  587. homeassistant/components/opentherm_gw/translations/de.json +3 -3
  588. homeassistant/components/opentherm_gw/translations/el.json +3 -3
  589. homeassistant/components/opentherm_gw/translations/en-GB.json +3 -3
  590. homeassistant/components/opentherm_gw/translations/en.json +3 -3
  591. homeassistant/components/opentherm_gw/translations/es.json +3 -3
  592. homeassistant/components/opentherm_gw/translations/et.json +3 -3
  593. homeassistant/components/opentherm_gw/translations/ga.json +0 -3
  594. homeassistant/components/opentherm_gw/translations/hu.json +0 -3
  595. homeassistant/components/opentherm_gw/translations/it.json +0 -2
  596. homeassistant/components/opentherm_gw/translations/ja.json +0 -3
  597. homeassistant/components/opentherm_gw/translations/lt.json +3 -3
  598. homeassistant/components/opentherm_gw/translations/nl.json +0 -2
  599. homeassistant/components/opentherm_gw/translations/pt.json +3 -3
  600. homeassistant/components/opentherm_gw/translations/ru.json +3 -3
  601. homeassistant/components/opentherm_gw/translations/sk.json +3 -3
  602. homeassistant/components/opentherm_gw/translations/sv.json +0 -3
  603. homeassistant/components/opentherm_gw/translations/tr.json +0 -3
  604. homeassistant/components/opentherm_gw/translations/zh-Hans.json +3 -3
  605. homeassistant/components/opentherm_gw/translations/zh-Hant.json +3 -3
  606. homeassistant/components/openweathermap/translations/tr.json +49 -0
  607. homeassistant/components/opower/translations/tr.json +33 -1
  608. homeassistant/components/oralb/translations/tr.json +29 -2
  609. homeassistant/components/ping/manifest.json +1 -0
  610. homeassistant/components/playstation_network/translations/tr.json +56 -0
  611. homeassistant/components/plugwise/translations/es.json +2 -0
  612. homeassistant/components/plugwise/translations/sr-Latn.json +12 -0
  613. homeassistant/components/plugwise/translations/tr.json +11 -1
  614. homeassistant/components/plum_lightpad/translations/tr.json +8 -1
  615. homeassistant/components/point/translations/es.json +5 -0
  616. homeassistant/components/pooldose/translations/en-GB.json +11 -0
  617. homeassistant/components/pooldose/translations/es.json +68 -0
  618. homeassistant/components/pooldose/translations/ga.json +11 -0
  619. homeassistant/components/pooldose/translations/it.json +11 -0
  620. homeassistant/components/pooldose/translations/tr.json +84 -1
  621. homeassistant/components/pooldose/translations/zh-Hans.json +6 -0
  622. homeassistant/components/portainer/translations/tr.json +82 -0
  623. homeassistant/components/probe_plus/translations/tr.json +5 -0
  624. homeassistant/components/prowl/translations/tr.json +21 -0
  625. homeassistant/components/ps4/translations/tr.json +6 -0
  626. homeassistant/components/qbittorrent/translations/tr.json +4 -0
  627. homeassistant/components/qbus/translations/tr.json +10 -0
  628. homeassistant/components/random/translations/es.json +1 -0
  629. homeassistant/components/random/translations/sr-Latn.json +119 -6
  630. homeassistant/components/random/translations/tr.json +2 -0
  631. homeassistant/components/remote/translations/mk.json +10 -0
  632. homeassistant/components/renault/translations/tr.json +12 -0
  633. homeassistant/components/reolink/manifest.json +1 -0
  634. homeassistant/components/reolink/translations/pl.json +10 -1
  635. homeassistant/components/reolink/translations/tr.json +67 -1
  636. homeassistant/components/rest/manifest.json +1 -0
  637. homeassistant/components/ridwell/translations/tr.json +22 -0
  638. homeassistant/components/ring/manifest.json +1 -0
  639. homeassistant/components/roborock/manifest.json +2 -1
  640. homeassistant/components/roborock/translations/tr.json +9 -1
  641. homeassistant/components/roomba/translations/tr.json +6 -0
  642. homeassistant/components/satel_integra/translations/sr-Latn.json +2 -1
  643. homeassistant/components/satel_integra/translations/tr.json +131 -0
  644. homeassistant/components/saunum/translations/el.json +7 -1
  645. homeassistant/components/saunum/translations/en-GB.json +11 -1
  646. homeassistant/components/saunum/translations/es.json +38 -1
  647. homeassistant/components/saunum/translations/et.json +11 -1
  648. homeassistant/components/saunum/translations/ga.json +38 -1
  649. homeassistant/components/saunum/translations/mk.json +5 -0
  650. homeassistant/components/saunum/translations/ru.json +9 -0
  651. homeassistant/components/saunum/translations/sr-Latn.json +9 -0
  652. homeassistant/components/saunum/translations/tr.json +11 -1
  653. homeassistant/components/schedule/translations/sr-Latn.json +18 -1
  654. homeassistant/components/scrape/translations/es.json +1 -0
  655. homeassistant/components/scrape/translations/sr-Latn.json +63 -2
  656. homeassistant/components/scrape/translations/tr.json +4 -0
  657. homeassistant/components/script/translations/mk.json +10 -0
  658. homeassistant/components/sensibo/translations/sr-Latn.json +19 -0
  659. homeassistant/components/sensor/translations/sr-Latn.json +141 -5
  660. homeassistant/components/sensor/translations/tr.json +10 -0
  661. homeassistant/components/senz/manifest.json +1 -0
  662. homeassistant/components/senz/translations/es.json +17 -1
  663. homeassistant/components/sfr_box/translations/tr.json +4 -0
  664. homeassistant/components/sftp_storage/translations/tr.json +22 -0
  665. homeassistant/components/shelly/manifest.json +1 -1
  666. homeassistant/components/shelly/sensor.py +0 -2
  667. homeassistant/components/shelly/strings.json +8 -0
  668. homeassistant/components/shelly/switch.py +0 -1
  669. homeassistant/components/shelly/translations/bg.json +5 -0
  670. homeassistant/components/shelly/translations/cs.json +8 -0
  671. homeassistant/components/shelly/translations/de.json +8 -0
  672. homeassistant/components/shelly/translations/en-GB.json +8 -0
  673. homeassistant/components/shelly/translations/en.json +8 -0
  674. homeassistant/components/shelly/translations/es.json +192 -2
  675. homeassistant/components/shelly/translations/et.json +10 -1
  676. homeassistant/components/shelly/translations/fr.json +10 -0
  677. homeassistant/components/shelly/translations/ga.json +46 -0
  678. homeassistant/components/shelly/translations/it.json +13 -2
  679. homeassistant/components/shelly/translations/lt.json +8 -0
  680. homeassistant/components/shelly/translations/mk.json +3 -0
  681. homeassistant/components/shelly/translations/nl.json +7 -0
  682. homeassistant/components/shelly/translations/pl.json +8 -0
  683. homeassistant/components/shelly/translations/pt.json +8 -0
  684. homeassistant/components/shelly/translations/ru.json +5 -0
  685. homeassistant/components/shelly/translations/sk.json +8 -0
  686. homeassistant/components/shelly/translations/tr.json +171 -5
  687. homeassistant/components/shelly/translations/zh-Hans.json +8 -0
  688. homeassistant/components/shelly/translations/zh-Hant.json +8 -0
  689. homeassistant/components/shelly/valve.py +1 -1
  690. homeassistant/components/siren/translations/mk.json +4 -2
  691. homeassistant/components/sleep_as_android/translations/tr.json +68 -0
  692. homeassistant/components/smarla/translations/tr.json +15 -0
  693. homeassistant/components/smartthings/manifest.json +1 -0
  694. homeassistant/components/smartthings/translations/es.json +74 -0
  695. homeassistant/components/smartthings/translations/nl.json +13 -0
  696. homeassistant/components/smartthings/translations/tr.json +20 -0
  697. homeassistant/components/smhi/translations/tr.json +19 -0
  698. homeassistant/components/snoo/translations/tr.json +8 -0
  699. homeassistant/components/solaredge/translations/tr.json +64 -3
  700. homeassistant/components/sonos/manifest.json +1 -0
  701. homeassistant/components/speedtestdotnet/manifest.json +1 -0
  702. homeassistant/components/spotify/translations/es.json +5 -0
  703. homeassistant/components/sql/translations/es.json +1 -0
  704. homeassistant/components/sql/translations/sr-Latn.json +61 -2
  705. homeassistant/components/sql/translations/tr.json +83 -0
  706. homeassistant/components/squeezebox/translations/mk.json +5 -0
  707. homeassistant/components/squeezebox/translations/tr.json +63 -0
  708. homeassistant/components/starline/translations/sr-Latn.json +7 -0
  709. homeassistant/components/statistics/translations/sr-Latn.json +118 -2
  710. homeassistant/components/switch/translations/mk.json +5 -1
  711. homeassistant/components/switch/translations/sr-Latn.json +2 -1
  712. homeassistant/components/switch_as_x/translations/sr-Latn.json +27 -3
  713. homeassistant/components/switchbot/manifest.json +1 -0
  714. homeassistant/components/switchbot/translations/el.json +2 -1
  715. homeassistant/components/switchbot/translations/tr.json +34 -0
  716. homeassistant/components/switchbot_cloud/translations/tr.json +20 -0
  717. homeassistant/components/synology_dsm/translations/sr-Latn.json +3 -0
  718. homeassistant/components/system_bridge/translations/tr.json +3 -0
  719. homeassistant/components/systemmonitor/translations/tr.json +6 -0
  720. homeassistant/components/tautulli/translations/de.json +1 -1
  721. homeassistant/components/telegram/translations/de.json +1 -1
  722. homeassistant/components/telegram/translations/tr.json +6 -0
  723. homeassistant/components/telegram_bot/translations/tr.json +203 -4
  724. homeassistant/components/template/__init__.py +11 -0
  725. homeassistant/components/template/helpers.py +2 -0
  726. homeassistant/components/template/translations/de.json +4 -4
  727. homeassistant/components/template/translations/el.json +4 -0
  728. homeassistant/components/template/translations/es.json +5 -0
  729. homeassistant/components/template/translations/ga.json +4 -0
  730. homeassistant/components/template/translations/it.json +4 -0
  731. homeassistant/components/template/translations/pl.json +37 -0
  732. homeassistant/components/template/translations/ru.json +4 -0
  733. homeassistant/components/template/translations/sr-Latn.json +933 -72
  734. homeassistant/components/template/translations/tr.json +172 -2
  735. homeassistant/components/template/translations/zh-Hans.json +4 -0
  736. homeassistant/components/tesla_fleet/manifest.json +1 -0
  737. homeassistant/components/tesla_fleet/translations/es.json +5 -0
  738. homeassistant/components/tesla_fleet/translations/sr-Latn.json +5 -0
  739. homeassistant/components/tesla_wall_connector/translations/es.json +3 -0
  740. homeassistant/components/tesla_wall_connector/translations/ga.json +3 -0
  741. homeassistant/components/teslemetry/manifest.json +1 -0
  742. homeassistant/components/teslemetry/translations/sr-Latn.json +5 -0
  743. homeassistant/components/teslemetry/translations/tr.json +77 -1
  744. homeassistant/components/tessie/manifest.json +1 -0
  745. homeassistant/components/tessie/translations/sr-Latn.json +5 -0
  746. homeassistant/components/tessie/translations/tr.json +3 -0
  747. homeassistant/components/text/strings.json +2 -3
  748. homeassistant/components/text/translations/bg.json +1 -8
  749. homeassistant/components/text/translations/cs.json +1 -8
  750. homeassistant/components/text/translations/de.json +2 -3
  751. homeassistant/components/text/translations/en.json +2 -3
  752. homeassistant/components/text/translations/es.json +7 -1
  753. homeassistant/components/text/translations/et.json +7 -1
  754. homeassistant/components/text/translations/lt.json +1 -8
  755. homeassistant/components/text/translations/pt.json +1 -8
  756. homeassistant/components/text/translations/sk.json +1 -8
  757. homeassistant/components/text/translations/sr-Latn.json +4 -2
  758. homeassistant/components/text/translations/zh-Hant.json +2 -3
  759. homeassistant/components/tod/translations/sr-Latn.json +16 -1
  760. homeassistant/components/togrill/translations/tr.json +58 -0
  761. homeassistant/components/tolo/translations/tr.json +2 -1
  762. homeassistant/components/tomorrowio/translations/sr-Latn.json +24 -0
  763. homeassistant/components/tplink/manifest.json +1 -0
  764. homeassistant/components/traccar_server/translations/tr.json +12 -0
  765. homeassistant/components/transmission/translations/tr.json +24 -0
  766. homeassistant/components/trend/translations/sr-Latn.json +21 -0
  767. homeassistant/components/tuya/__init__.py +12 -4
  768. homeassistant/components/tuya/binary_sensor.py +2 -2
  769. homeassistant/components/tuya/humidifier.py +3 -3
  770. homeassistant/components/tuya/models.py +18 -20
  771. homeassistant/components/tuya/translations/es.json +32 -0
  772. homeassistant/components/tuya/translations/ga.json +6 -0
  773. homeassistant/components/tuya/translations/sr-Latn.json +45 -0
  774. homeassistant/components/tuya/translations/tr.json +72 -0
  775. homeassistant/components/tuya/util.py +11 -9
  776. homeassistant/components/twitch/translations/es.json +5 -0
  777. homeassistant/components/ukraine_alarm/translations/tr.json +2 -1
  778. homeassistant/components/unifi/light.py +62 -29
  779. homeassistant/components/unifi/translations/es.json +3 -0
  780. homeassistant/components/unifi/translations/tr.json +5 -0
  781. homeassistant/components/unifiprotect/camera.py +5 -1
  782. homeassistant/components/unifiprotect/manifest.json +1 -1
  783. homeassistant/components/unifiprotect/translations/bg.json +0 -7
  784. homeassistant/components/unifiprotect/translations/cs.json +1 -1
  785. homeassistant/components/unifiprotect/translations/de.json +1 -1
  786. homeassistant/components/unifiprotect/translations/el.json +0 -10
  787. homeassistant/components/unifiprotect/translations/en-GB.json +11 -1
  788. homeassistant/components/unifiprotect/translations/en.json +1 -1
  789. homeassistant/components/unifiprotect/translations/es.json +11 -1
  790. homeassistant/components/unifiprotect/translations/fi.json +0 -7
  791. homeassistant/components/unifiprotect/translations/ga.json +10 -10
  792. homeassistant/components/unifiprotect/translations/lt.json +0 -10
  793. homeassistant/components/unifiprotect/translations/nl.json +0 -3
  794. homeassistant/components/unifiprotect/translations/pt.json +0 -10
  795. homeassistant/components/unifiprotect/translations/sk.json +1 -1
  796. homeassistant/components/unifiprotect/translations/sr-Latn.json +11 -0
  797. homeassistant/components/unifiprotect/translations/sv.json +3 -0
  798. homeassistant/components/unifiprotect/translations/tr.json +10 -0
  799. homeassistant/components/unifiprotect/translations/zh-Hans.json +2 -3
  800. homeassistant/components/unifiprotect/translations/zh-Hant.json +1 -1
  801. homeassistant/components/update/translations/sr-Latn.json +51 -1
  802. homeassistant/components/uptime_kuma/translations/tr.json +13 -0
  803. homeassistant/components/utility_meter/translations/sr-Latn.json +63 -2
  804. homeassistant/components/vacuum/strings.json +8 -12
  805. homeassistant/components/vacuum/translations/cs.json +4 -16
  806. homeassistant/components/vacuum/translations/de.json +7 -11
  807. homeassistant/components/vacuum/translations/en-GB.json +48 -1
  808. homeassistant/components/vacuum/translations/en.json +8 -12
  809. homeassistant/components/vacuum/translations/es.json +56 -1
  810. homeassistant/components/vacuum/translations/et.json +51 -1
  811. homeassistant/components/vacuum/translations/ga.json +48 -1
  812. homeassistant/components/vacuum/translations/lt.json +4 -16
  813. homeassistant/components/vacuum/translations/mk.json +10 -0
  814. homeassistant/components/vacuum/translations/pt.json +4 -16
  815. homeassistant/components/vacuum/translations/ru.json +48 -1
  816. homeassistant/components/vacuum/translations/sk.json +4 -16
  817. homeassistant/components/vacuum/translations/sv.json +13 -1
  818. homeassistant/components/vacuum/translations/tr.json +48 -1
  819. homeassistant/components/vacuum/translations/zh-Hans.json +6 -2
  820. homeassistant/components/vacuum/translations/zh-Hant.json +8 -12
  821. homeassistant/components/vegehub/translations/tr.json +5 -0
  822. homeassistant/components/velux/translations/tr.json +12 -0
  823. homeassistant/components/vesync/manifest.json +1 -1
  824. homeassistant/components/vesync/translations/tr.json +11 -0
  825. homeassistant/components/vicare/translations/es.json +54 -0
  826. homeassistant/components/vicare/translations/sr-Latn.json +10 -0
  827. homeassistant/components/vicare/translations/tr.json +21 -0
  828. homeassistant/components/victron_ble/translations/es.json +234 -0
  829. homeassistant/components/victron_remote_monitoring/translations/tr.json +102 -0
  830. homeassistant/components/volvo/translations/es.json +6 -0
  831. homeassistant/components/volvo/translations/tr.json +142 -0
  832. homeassistant/components/volvooncall/translations/tr.json +18 -1
  833. homeassistant/components/waqi/translations/sr-Latn.json +32 -0
  834. homeassistant/components/waqi/translations/tr.json +40 -0
  835. homeassistant/components/water_heater/translations/mk.json +10 -0
  836. homeassistant/components/water_heater/translations/sr-Latn.json +2 -1
  837. homeassistant/components/weatherflow/translations/tr.json +8 -0
  838. homeassistant/components/webostv/manifest.json +1 -0
  839. homeassistant/components/whirlpool/translations/tr.json +81 -0
  840. homeassistant/components/withings/translations/es.json +5 -0
  841. homeassistant/components/withings/translations/sr-Latn.json +5 -0
  842. homeassistant/components/wled/translations/cs.json +6 -1
  843. homeassistant/components/wled/translations/el.json +20 -1
  844. homeassistant/components/wled/translations/en-GB.json +6 -1
  845. homeassistant/components/wled/translations/es.json +6 -1
  846. homeassistant/components/wled/translations/ga.json +6 -1
  847. homeassistant/components/wled/translations/it.json +6 -1
  848. homeassistant/components/wled/translations/lt.json +6 -1
  849. homeassistant/components/wled/translations/nl.json +2 -1
  850. homeassistant/components/wled/translations/pl.json +8 -1
  851. homeassistant/components/wled/translations/pt.json +6 -1
  852. homeassistant/components/wled/translations/ru.json +20 -1
  853. homeassistant/components/wled/translations/tr.json +26 -1
  854. homeassistant/components/wled/translations/zh-Hans.json +6 -1
  855. homeassistant/components/wled/translations/zh-Hant.json +6 -1
  856. homeassistant/components/workday/translations/tr.json +5 -0
  857. homeassistant/components/xbox/translations/es.json +16 -1
  858. homeassistant/components/xbox/translations/ga.json +10 -1
  859. homeassistant/components/xbox/translations/tr.json +111 -0
  860. homeassistant/components/xiaomi_ble/manifest.json +1 -0
  861. homeassistant/components/yardian/translations/tr.json +16 -0
  862. homeassistant/components/yolink/translations/tr.json +14 -0
  863. homeassistant/components/youtube/manifest.json +1 -1
  864. homeassistant/components/youtube/translations/es.json +5 -0
  865. homeassistant/components/zeroconf/translations/tr.json +14 -0
  866. homeassistant/components/zha/manifest.json +1 -0
  867. homeassistant/components/zha/translations/de.json +1 -1
  868. homeassistant/components/zha/translations/en-GB.json +44 -0
  869. homeassistant/components/zha/translations/es.json +44 -0
  870. homeassistant/components/zha/translations/ga.json +44 -0
  871. homeassistant/components/zha/translations/it.json +44 -0
  872. homeassistant/components/zha/translations/mk.json +18 -1
  873. homeassistant/components/zha/translations/sr-Latn.json +3 -0
  874. homeassistant/components/zha/translations/tr.json +213 -2
  875. homeassistant/components/zha/translations/zh-Hans.json +12 -0
  876. homeassistant/components/zwave_js/translations/tr.json +17 -0
  877. homeassistant/const.py +2 -1
  878. homeassistant/generated/integrations.json +19 -19
  879. homeassistant/helpers/area_registry.py +8 -1
  880. homeassistant/helpers/condition.py +16 -1
  881. homeassistant/helpers/entity.py +3 -1
  882. homeassistant/helpers/floor_registry.py +12 -1
  883. homeassistant/helpers/trigger.py +16 -1
  884. homeassistant/package_constraints.txt +2 -2
  885. {homeassistant-2025.12.0b2.dist-info → homeassistant-2025.12.0b5.dist-info}/METADATA +1 -1
  886. {homeassistant-2025.12.0b2.dist-info → homeassistant-2025.12.0b5.dist-info}/RECORD +891 -808
  887. homeassistant/components/cover/trigger.py +0 -116
  888. homeassistant/components/cover/triggers.yaml +0 -79
  889. {homeassistant-2025.12.0b2.dist-info → homeassistant-2025.12.0b5.dist-info}/WHEEL +0 -0
  890. {homeassistant-2025.12.0b2.dist-info → homeassistant-2025.12.0b5.dist-info}/entry_points.txt +0 -0
  891. {homeassistant-2025.12.0b2.dist-info → homeassistant-2025.12.0b5.dist-info}/licenses/LICENSE.md +0 -0
  892. {homeassistant-2025.12.0b2.dist-info → homeassistant-2025.12.0b5.dist-info}/licenses/homeassistant/backports/LICENSE.Python +0 -0
  893. {homeassistant-2025.12.0b2.dist-info → homeassistant-2025.12.0b5.dist-info}/top_level.txt +0 -0
@@ -1,17 +1,162 @@
1
1
  {
2
2
  "config": {
3
+ "abort": {
4
+ "addon_already_running": "{addon_name} eklentisi zaten \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan ba\u015flat\u0131lamad\u0131.",
5
+ "addon_info_failed": "{addon_name} eklenti bilgisi al\u0131namad\u0131.",
6
+ "addon_install_failed": "{addon_name} eklentisi y\u00fcklenemedi.",
7
+ "addon_set_config_failed": "{addon_name} yap\u0131land\u0131rmas\u0131 ayarlanamad\u0131.",
8
+ "addon_start_failed": "{addon_name} eklentisi ba\u015flat\u0131lamad\u0131.",
9
+ "not_hassio": "Donan\u0131m se\u00e7enekleri yaln\u0131zca Home Assistant OS kurulumlar\u0131nda yap\u0131land\u0131r\u0131labilir.",
10
+ "otbr_addon_already_running": "OpenThread Border Router eklentisi zaten \u00e7al\u0131\u015f\u0131yor, tekrar y\u00fcklenemez.",
11
+ "otbr_still_using_stick": "Bu {model} OpenThread Border Router eklentisi taraf\u0131ndan kullan\u0131l\u0131yor. Thread a\u011f\u0131n\u0131 kullan\u0131yorsan\u0131z alternatif border router'lar\u0131n\u0131z oldu\u011fundan emin olun. Eklentiyi kald\u0131r\u0131n ve tekrar deneyin.",
12
+ "unsupported_firmware": "{model} cihaz\u0131n\u0131zdaki radyo yaz\u0131l\u0131m\u0131 belirlenemedi. \u015eu anda cihazla ileti\u015fim kurmaya \u00e7al\u0131\u015fan ba\u015fka bir entegrasyon veya eklenti olmad\u0131\u011f\u0131ndan emin olun. Home Assistant OS'yi sanal bir makinede veya Docker'da \u00e7al\u0131\u015ft\u0131r\u0131yorsan\u0131z, l\u00fctfen cihaz i\u00e7in izinlerin do\u011fru \u015fekilde ayarland\u0131\u011f\u0131ndan emin olun.",
13
+ "zha_migration_failed": "ZHA ge\u00e7i\u015fi ba\u015far\u0131l\u0131 olmad\u0131.",
14
+ "zha_still_using_stick": "Bu {model} Zigbee Ev Otomasyonu entegrasyonu taraf\u0131ndan kullan\u0131l\u0131yor. L\u00fctfen Zigbee a\u011f\u0131n\u0131z\u0131 ba\u015fka bir adapt\u00f6re ta\u015f\u0131y\u0131n veya entegrasyonu silin ve tekrar deneyin."
15
+ },
16
+ "flow_title": "{model}",
17
+ "progress": {
18
+ "install_addon": "{addon_name} eklentisinin kurulumu tamamlanana kadar l\u00fctfen bekleyin. Bu birka\u00e7 dakika s\u00fcrebilir.",
19
+ "install_firmware": "Kurulum {firmware_name} firmware. \n \n Bu i\u015flem tamamlanana kadar donan\u0131m\u0131n\u0131zda veya yaz\u0131l\u0131m\u0131n\u0131zda herhangi bir de\u011fi\u015fiklik yapmay\u0131n.",
20
+ "install_otbr_addon": "Eklenti y\u00fckleniyor"
21
+ },
3
22
  "step": {
23
+ "install_thread_firmware": {
24
+ "title": "Ba\u011fda\u015ft\u0131r\u0131c\u0131 g\u00fcncelleniyor"
25
+ },
26
+ "install_zigbee_firmware": {
27
+ "title": "Ba\u011fda\u015ft\u0131r\u0131c\u0131 g\u00fcncelleniyor"
28
+ },
29
+ "pick_firmware": {
30
+ "menu_option_descriptions": {
31
+ "pick_firmware_thread": "Genellikle Matter over Thread cihazlar\u0131nda kullan\u0131l\u0131r.",
32
+ "pick_firmware_thread_migrate": "Bu, Thread Border Router'\u0131n\u0131z\u0131 yeni adapt\u00f6re ta\u015f\u0131yacakt\u0131r.",
33
+ "pick_firmware_zigbee": "En yayg\u0131n protokol.",
34
+ "pick_firmware_zigbee_migrate": "Bu, Zigbee a\u011f\u0131n\u0131z\u0131 yeni adapt\u00f6re ta\u015f\u0131yacakt\u0131r."
35
+ },
36
+ "menu_options": {
37
+ "pick_firmware_thread_migrate": "Thread'i yeni bir adapt\u00f6re ta\u015f\u0131y\u0131n",
38
+ "pick_firmware_zigbee_migrate": "Zigbee'yi yeni bir adapt\u00f6re ta\u015f\u0131y\u0131n"
39
+ }
40
+ },
4
41
  "show_z2m_docs_url": {
5
42
  "description": "Senin {model} \u015eu anda en son Zigbee ayg\u0131t yaz\u0131l\u0131m\u0131n\u0131 \u00e7al\u0131\u015ft\u0131r\u0131yor. \n L\u00fctfen EmberZNet ba\u011fda\u015ft\u0131r\u0131c\u0131lar\u0131 i\u00e7in Zigbee2MQTT belgelerini okuyun ve yap\u0131land\u0131rmay\u0131 kopyalay\u0131n. {model}: {z2m_docs_url}",
6
43
  "title": "Zigbee2MQTT'yi kurun"
44
+ },
45
+ "zigbee_installation_type": {
46
+ "description": "Zigbee adapt\u00f6r\u00fc i\u00e7in kurulum t\u00fcr\u00fcn\u00fc se\u00e7in.",
47
+ "menu_option_descriptions": {
48
+ "zigbee_intent_custom": "\u00d6rne\u011fin Zigbee2MQTT ile Zigbee'yi manuel olarak kurun ve yap\u0131land\u0131r\u0131n.",
49
+ "zigbee_intent_recommended": "Zigbee'yi otomatik olarak kurun ve yap\u0131land\u0131r\u0131n."
50
+ },
51
+ "menu_options": {
52
+ "zigbee_intent_custom": "Ki\u015fiselle\u015ftirilmi\u015f",
53
+ "zigbee_intent_recommended": "\u00d6nerilen kurulum"
54
+ },
55
+ "title": "Zigbee'yi kurun"
56
+ },
57
+ "zigbee_integration": {
58
+ "menu_option_descriptions": {
59
+ "zigbee_integration_other": "\u00d6rne\u011fin adapt\u00f6r\u00fc Zigbee2MQTT ile kullanmak istiyorsan\u0131z.",
60
+ "zigbee_integration_zha": "Home Assistant'\u0131n Zigbee a\u011f\u0131n\u0131 kontrol etmesini sa\u011flar."
61
+ },
62
+ "menu_options": {
63
+ "zigbee_integration_other": "Di\u011fer",
64
+ "zigbee_integration_zha": "Zigbee Ev Otomasyonu"
65
+ },
66
+ "title": "Zigbee y\u00f6ntemini se\u00e7in"
67
+ }
68
+ }
69
+ },
70
+ "entity": {
71
+ "switch": {
72
+ "beta_firmware": {
73
+ "name": "Beta \u00fcr\u00fcn yaz\u0131l\u0131m\u0131 g\u00fcncellemeleri"
7
74
  }
8
75
  }
9
76
  },
10
77
  "options": {
78
+ "abort": {
79
+ "zha_migration_failed": "ZHA ge\u00e7i\u015fi ba\u015far\u0131l\u0131 olmad\u0131.",
80
+ "zha_still_using_stick": "Bu {model} Zigbee Ev Otomasyonu entegrasyonu taraf\u0131ndan kullan\u0131l\u0131yor. L\u00fctfen Zigbee a\u011f\u0131n\u0131z\u0131 ba\u015fka bir adapt\u00f6re ta\u015f\u0131y\u0131n veya entegrasyonu silin ve tekrar deneyin."
81
+ },
82
+ "error": {
83
+ "unknown": "Beklenmeyen hata"
84
+ },
85
+ "progress": {
86
+ "install_addon": "{addon_name} eklentisinin kurulumu tamamlanana kadar l\u00fctfen bekleyin. Bu birka\u00e7 dakika s\u00fcrebilir.",
87
+ "install_firmware": "Kurulum {firmware_name} firmware. \n \n Bu i\u015flem tamamlanana kadar donan\u0131m\u0131n\u0131zda veya yaz\u0131l\u0131m\u0131n\u0131zda herhangi bir de\u011fi\u015fiklik yapmay\u0131n.",
88
+ "install_otbr_addon": "Eklenti y\u00fckleniyor",
89
+ "start_addon": "{addon_name} eklentisinin ba\u015flat\u0131lmas\u0131 tamamlanana kadar l\u00fctfen bekleyin. Bu birka\u00e7 saniye s\u00fcrebilir.",
90
+ "start_otbr_addon": "Eklenti ba\u015flat\u0131l\u0131yor"
91
+ },
11
92
  "step": {
93
+ "addon_installed_other_device": {
94
+ "title": "Ba\u015fka bir cihaz i\u00e7in \u00e7oklu protokol deste\u011fi zaten etkin"
95
+ },
96
+ "addon_menu": {
97
+ "menu_options": {
98
+ "reconfigure_addon": "IEEE 802.15.4 radyo \u00e7oklu protokol deste\u011fini yeniden yap\u0131land\u0131r\u0131n",
99
+ "uninstall_addon": "IEEE 802.15.4 radyo \u00e7oklu protokol deste\u011fini kald\u0131r\u0131n"
100
+ }
101
+ },
102
+ "addon_not_installed": {
103
+ "data": {
104
+ "enable_multi_pan": "\u00c7oklu protokol deste\u011fini etkinle\u015ftir"
105
+ },
106
+ "description": "\u00c7oklu protokol deste\u011fi etkinle\u015ftirildi\u011finde, {hardware_name} cihaz\u0131n\u0131n IEEE 802.15.4 radyosu ayn\u0131 anda hem Zigbee hem de Thread (Matter taraf\u0131ndan kullan\u0131l\u0131r) i\u00e7in kullan\u0131labilir. Telsiz zaten ZHA Zigbee entegrasyonu taraf\u0131ndan kullan\u0131l\u0131yorsa, ZHA \u00e7oklu protokol bellenimini kullanmak \u00fczere yeniden yap\u0131land\u0131r\u0131lacakt\u0131r. \n\n Not: Bu deneysel bir \u00f6zelliktir.",
107
+ "title": "IEEE 802.15.4 radyosunda \u00e7oklu protokol deste\u011fini etkinle\u015ftirin"
108
+ },
109
+ "change_channel": {
110
+ "data": {
111
+ "channel": "Kanal"
112
+ },
113
+ "description": "Zigbee ve Thread a\u011flar\u0131n\u0131z i\u00e7in bir kanal de\u011fi\u015fikli\u011fi ba\u015flat\u0131n. \n\n Not: Bu geli\u015fmi\u015f bir i\u015flemdir ve yeni kanal t\u0131kan\u0131rsa Thread ve Zigbee a\u011flar\u0131n\u0131z\u0131 \u00e7al\u0131\u015fmaz hale getirebilir. Mevcut a\u011f ko\u015fullar\u0131na ba\u011fl\u0131 olarak, cihazlar\u0131n\u0131z\u0131n \u00e7o\u011fu yeni kanala ta\u015f\u0131nmayabilir ve tekrar \u00e7al\u0131\u015fmaya ba\u015flamadan \u00f6nce yeniden kat\u0131lmalar\u0131 gerekebilir. Dikkatle kullan\u0131n. \n\n **G\u00f6nder**'i se\u00e7ti\u011finizde, kanal de\u011fi\u015fikli\u011fi arka planda sessizce ba\u015flar ve birka\u00e7 dakika sonra tamamlan\u0131r.",
114
+ "title": "IEEE 802.15.4 radyo \u00e7oklu protokol deste\u011fini yeniden yap\u0131land\u0131r\u0131n"
115
+ },
116
+ "confirm_otbr": {
117
+ "title": "OpenThread Border Router kurulumu tamamland\u0131"
118
+ },
119
+ "confirm_zigbee": {
120
+ "title": "Zigbee kurulumu tamamland\u0131"
121
+ },
122
+ "install_addon": {
123
+ "title": "Silicon Labs Multiprotocol eklenti kurulumu ba\u015flad\u0131"
124
+ },
125
+ "install_thread_firmware": {
126
+ "title": "Ba\u011fda\u015ft\u0131r\u0131c\u0131 g\u00fcncelleniyor"
127
+ },
128
+ "install_zigbee_firmware": {
129
+ "title": "Ba\u011fda\u015ft\u0131r\u0131c\u0131 g\u00fcncelleniyor"
130
+ },
131
+ "notify_channel_change": {
132
+ "description": "Bir Zigbee ve Konu kanal\u0131 de\u011fi\u015fikli\u011fi ba\u015flat\u0131ld\u0131 ve {delay_minutes} dakika i\u00e7inde tamamlanacak.",
133
+ "title": "Kanal de\u011fi\u015fikli\u011fi ba\u015flat\u0131ld\u0131"
134
+ },
135
+ "notify_unknown_multipan_user": {
136
+ "description": "Home Assistant, OTBR ve ZHA i\u00e7in kanallar\u0131 otomatik olarak de\u011fi\u015ftirebilir. Radyo kullanmak i\u00e7in ba\u015fka bir entegrasyon yap\u0131land\u0131rd\u0131ysan\u0131z, \u00f6rne\u011fin Zigbee2MQTT, bu k\u0131lavuzu tamamlad\u0131ktan sonra o entegrasyondaki kanal\u0131 yeniden yap\u0131land\u0131rman\u0131z gerekecektir.",
137
+ "title": "Manuel yap\u0131land\u0131rma gerekebilir"
138
+ },
139
+ "otbr_failed": {
140
+ "description": "OpenThread Border Router eklentisi kurulumu ba\u015far\u0131s\u0131z oldu. Ba\u015fka hi\u00e7bir yaz\u0131l\u0131m\u0131n {model} ile ileti\u015fim kurmaya \u00e7al\u0131\u015fmad\u0131\u011f\u0131ndan, \u0130nternete eri\u015fiminiz oldu\u011fundan ve di\u011fer eklentileri kurabildi\u011finizden emin olun ve tekrar deneyin. Sorun devam ederse Supervisor g\u00fcnl\u00fcklerini kontrol edin."
141
+ },
142
+ "pick_firmware": {
143
+ "menu_option_descriptions": {
144
+ "pick_firmware_thread": "Genellikle Matter over Thread cihazlar\u0131nda kullan\u0131l\u0131r.",
145
+ "pick_firmware_thread_migrate": "Bu, Thread Border Router'\u0131n\u0131z\u0131 yeni adapt\u00f6re ta\u015f\u0131yacakt\u0131r.",
146
+ "pick_firmware_zigbee": "En yayg\u0131n protokol.",
147
+ "pick_firmware_zigbee_migrate": "Bu, Zigbee a\u011f\u0131n\u0131z\u0131 yeni adapt\u00f6re ta\u015f\u0131yacakt\u0131r."
148
+ },
149
+ "menu_options": {
150
+ "pick_firmware_thread_migrate": "Thread'i yeni bir adapt\u00f6re ta\u015f\u0131y\u0131n",
151
+ "pick_firmware_zigbee_migrate": "Zigbee'yi yeni bir adapt\u00f6re ta\u015f\u0131y\u0131n"
152
+ }
153
+ },
12
154
  "show_z2m_docs_url": {
13
155
  "description": "Senin {model} \u015eu anda en son Zigbee ayg\u0131t yaz\u0131l\u0131m\u0131n\u0131 \u00e7al\u0131\u015ft\u0131r\u0131yor. \n L\u00fctfen EmberZNet ba\u011fda\u015ft\u0131r\u0131c\u0131lar\u0131 i\u00e7in Zigbee2MQTT belgelerini okuyun ve yap\u0131land\u0131rmay\u0131 kopyalay\u0131n. {model}: {z2m_docs_url}",
14
156
  "title": "Zigbee2MQTT'yi kurun"
157
+ },
158
+ "zigbee_integration": {
159
+ "title": "Zigbee y\u00f6ntemini se\u00e7in"
15
160
  }
16
161
  }
17
162
  }
@@ -33,13 +33,14 @@ from homeassistant.exceptions import HomeAssistantError
33
33
  from homeassistant.helpers.aiohttp_client import async_get_clientsession
34
34
  from homeassistant.helpers.hassio import is_hassio
35
35
 
36
- from .const import OTBR_DOMAIN, Z2M_EMBER_DOCS_URL, ZHA_DOMAIN
36
+ from .const import DOMAIN, OTBR_DOMAIN, Z2M_EMBER_DOCS_URL, ZHA_DOMAIN
37
37
  from .util import (
38
38
  ApplicationType,
39
39
  FirmwareInfo,
40
40
  OwningAddon,
41
41
  OwningIntegration,
42
42
  ResetTarget,
43
+ async_firmware_flashing_context,
43
44
  async_flash_silabs_firmware,
44
45
  get_otbr_addon_manager,
45
46
  guess_firmware_info,
@@ -228,83 +229,95 @@ class BaseFirmwareInstallFlow(ConfigEntryBaseFlow, ABC):
228
229
  # Keep track of the firmware we're working with, for error messages
229
230
  self.installing_firmware_name = firmware_name
230
231
 
231
- # Installing new firmware is only truly required if the wrong type is
232
- # installed: upgrading to the latest release of the current firmware type
233
- # isn't strictly necessary for functionality.
234
- self._probed_firmware_info = await probe_silabs_firmware_info(
235
- self._device,
236
- bootloader_reset_methods=self.BOOTLOADER_RESET_METHODS,
237
- application_probe_methods=self.APPLICATION_PROBE_METHODS,
238
- )
239
-
240
- firmware_install_required = self._probed_firmware_info is None or (
241
- self._probed_firmware_info.firmware_type != expected_installed_firmware_type
242
- )
243
-
244
- session = async_get_clientsession(self.hass)
245
- client = FirmwareUpdateClient(fw_update_url, session)
246
-
247
- try:
248
- manifest = await client.async_update_data()
249
- fw_manifest = next(
250
- fw for fw in manifest.firmwares if fw.filename.startswith(fw_type)
232
+ # For the duration of firmware flashing, hint to other integrations (i.e. ZHA)
233
+ # that the hardware is in use and should not be accessed. This is separate from
234
+ # locking the serial port itself, since a momentary release of the port may
235
+ # still allow for ZHA to reclaim the device.
236
+ async with async_firmware_flashing_context(self.hass, self._device, DOMAIN):
237
+ # Installing new firmware is only truly required if the wrong type is
238
+ # installed: upgrading to the latest release of the current firmware type
239
+ # isn't strictly necessary for functionality.
240
+ self._probed_firmware_info = await probe_silabs_firmware_info(
241
+ self._device,
242
+ bootloader_reset_methods=self.BOOTLOADER_RESET_METHODS,
243
+ application_probe_methods=self.APPLICATION_PROBE_METHODS,
251
244
  )
252
- except (StopIteration, TimeoutError, ClientError, ManifestMissing) as err:
253
- _LOGGER.warning("Failed to fetch firmware update manifest", exc_info=True)
254
245
 
255
- # Not having internet access should not prevent setup
256
- if not firmware_install_required:
257
- _LOGGER.debug("Skipping firmware upgrade due to index download failure")
258
- return
259
-
260
- raise AbortFlow(
261
- reason="fw_download_failed",
262
- description_placeholders=self._get_translation_placeholders(),
263
- ) from err
264
-
265
- if not firmware_install_required:
266
- assert self._probed_firmware_info is not None
246
+ firmware_install_required = self._probed_firmware_info is None or (
247
+ self._probed_firmware_info.firmware_type
248
+ != expected_installed_firmware_type
249
+ )
267
250
 
268
- # Make sure we do not downgrade the firmware
269
- fw_metadata = NabuCasaMetadata.from_json(fw_manifest.metadata)
270
- fw_version = fw_metadata.get_public_version()
271
- probed_fw_version = Version(self._probed_firmware_info.firmware_version)
251
+ session = async_get_clientsession(self.hass)
252
+ client = FirmwareUpdateClient(fw_update_url, session)
272
253
 
273
- if probed_fw_version >= fw_version:
274
- _LOGGER.debug(
275
- "Not downgrading firmware, installed %s is newer than available %s",
276
- probed_fw_version,
277
- fw_version,
254
+ try:
255
+ manifest = await client.async_update_data()
256
+ fw_manifest = next(
257
+ fw for fw in manifest.firmwares if fw.filename.startswith(fw_type)
258
+ )
259
+ except (StopIteration, TimeoutError, ClientError, ManifestMissing) as err:
260
+ _LOGGER.warning(
261
+ "Failed to fetch firmware update manifest", exc_info=True
278
262
  )
279
- return
280
263
 
281
- try:
282
- fw_data = await client.async_fetch_firmware(fw_manifest)
283
- except (TimeoutError, ClientError, ValueError) as err:
284
- _LOGGER.warning("Failed to fetch firmware update", exc_info=True)
264
+ # Not having internet access should not prevent setup
265
+ if not firmware_install_required:
266
+ _LOGGER.debug(
267
+ "Skipping firmware upgrade due to index download failure"
268
+ )
269
+ return
270
+
271
+ raise AbortFlow(
272
+ reason="fw_download_failed",
273
+ description_placeholders=self._get_translation_placeholders(),
274
+ ) from err
285
275
 
286
- # If we cannot download new firmware, we shouldn't block setup
287
276
  if not firmware_install_required:
288
- _LOGGER.debug("Skipping firmware upgrade due to image download failure")
289
- return
277
+ assert self._probed_firmware_info is not None
278
+
279
+ # Make sure we do not downgrade the firmware
280
+ fw_metadata = NabuCasaMetadata.from_json(fw_manifest.metadata)
281
+ fw_version = fw_metadata.get_public_version()
282
+ probed_fw_version = Version(self._probed_firmware_info.firmware_version)
283
+
284
+ if probed_fw_version >= fw_version:
285
+ _LOGGER.debug(
286
+ "Not downgrading firmware, installed %s is newer than available %s",
287
+ probed_fw_version,
288
+ fw_version,
289
+ )
290
+ return
290
291
 
291
- # Otherwise, fail
292
- raise AbortFlow(
293
- reason="fw_download_failed",
294
- description_placeholders=self._get_translation_placeholders(),
295
- ) from err
292
+ try:
293
+ fw_data = await client.async_fetch_firmware(fw_manifest)
294
+ except (TimeoutError, ClientError, ValueError) as err:
295
+ _LOGGER.warning("Failed to fetch firmware update", exc_info=True)
296
296
 
297
- self._probed_firmware_info = await async_flash_silabs_firmware(
298
- hass=self.hass,
299
- device=self._device,
300
- fw_data=fw_data,
301
- expected_installed_firmware_type=expected_installed_firmware_type,
302
- bootloader_reset_methods=self.BOOTLOADER_RESET_METHODS,
303
- application_probe_methods=self.APPLICATION_PROBE_METHODS,
304
- progress_callback=lambda offset, total: self.async_update_progress(
305
- offset / total
306
- ),
307
- )
297
+ # If we cannot download new firmware, we shouldn't block setup
298
+ if not firmware_install_required:
299
+ _LOGGER.debug(
300
+ "Skipping firmware upgrade due to image download failure"
301
+ )
302
+ return
303
+
304
+ # Otherwise, fail
305
+ raise AbortFlow(
306
+ reason="fw_download_failed",
307
+ description_placeholders=self._get_translation_placeholders(),
308
+ ) from err
309
+
310
+ self._probed_firmware_info = await async_flash_silabs_firmware(
311
+ hass=self.hass,
312
+ device=self._device,
313
+ fw_data=fw_data,
314
+ expected_installed_firmware_type=expected_installed_firmware_type,
315
+ bootloader_reset_methods=self.BOOTLOADER_RESET_METHODS,
316
+ application_probe_methods=self.APPLICATION_PROBE_METHODS,
317
+ progress_callback=lambda offset, total: self.async_update_progress(
318
+ offset / total
319
+ ),
320
+ )
308
321
 
309
322
  async def _configure_and_start_otbr_addon(self) -> None:
310
323
  """Configure and start the OTBR addon."""
@@ -53,6 +53,10 @@
53
53
  },
54
54
  "title": "Elige tu protocolo"
55
55
  },
56
+ "show_z2m_docs_url": {
57
+ "description": "Tu {model} ahora est\u00e1 ejecutando el \u00faltimo firmware Zigbee. \nPor favor, lee la documentaci\u00f3n de Zigbee2MQTT para los adaptadores EmberZNet y copia la configuraci\u00f3n para tu {model}: {z2m_docs_url}",
58
+ "title": "Configurar Zigbee2MQTT"
59
+ },
56
60
  "start_otbr_addon": {
57
61
  "title": "Configuraci\u00f3n de Thread"
58
62
  },
@@ -44,6 +44,10 @@
44
44
  "pick_firmware_zigbee_migrate": "Aistrigh Zigbee chuig oiri\u00fant\u00f3ir nua"
45
45
  }
46
46
  },
47
+ "show_z2m_docs_url": {
48
+ "description": "T\u00e1 an fhirmchl\u00e1r Zigbee is d\u00e9ana\u00ed \u00e1 rith ar do {model} anois.\nL\u00e9igh an doicim\u00e9ad\u00fa Zigbee2MQTT le haghaidh oiri\u00fanaitheoir\u00ed EmberZNet agus c\u00f3ipe\u00e1il an chumra\u00edocht do do {model}: {z2m_docs_url}",
49
+ "title": "Socraigh Zigbee2MQTT"
50
+ },
47
51
  "zigbee_installation_type": {
48
52
  "description": "Roghnaigh an cine\u00e1l suite\u00e1la don oiri\u00fant\u00f3ir Zigbee.",
49
53
  "menu_option_descriptions": {
@@ -8,7 +8,9 @@
8
8
  "zha_still_using_stick": "Bu {model} Zigbee Ev Otomasyonu entegrasyonu taraf\u0131ndan kullan\u0131l\u0131yor. L\u00fctfen Zigbee a\u011f\u0131n\u0131z\u0131 ba\u015fka bir adapt\u00f6re ta\u015f\u0131y\u0131n veya entegrasyonu silin ve tekrar deneyin."
9
9
  },
10
10
  "progress": {
11
- "install_firmware": "Kurulum {firmware_name} firmware. \n \n Bu i\u015flem tamamlanana kadar donan\u0131m\u0131n\u0131zda veya yaz\u0131l\u0131m\u0131n\u0131zda herhangi bir de\u011fi\u015fiklik yapmay\u0131n."
11
+ "install_firmware": "Kurulum {firmware_name} firmware. \n \n Bu i\u015flem tamamlanana kadar donan\u0131m\u0131n\u0131zda veya yaz\u0131l\u0131m\u0131n\u0131zda herhangi bir de\u011fi\u015fiklik yapmay\u0131n.",
12
+ "install_otbr_addon": "Eklenti y\u00fckleniyor",
13
+ "start_otbr_addon": "Eklenti ba\u015flat\u0131l\u0131yor"
12
14
  },
13
15
  "step": {
14
16
  "confirm_otbr": {
@@ -17,12 +19,53 @@
17
19
  "confirm_zigbee": {
18
20
  "title": "Zigbee kurulumu tamamland\u0131"
19
21
  },
22
+ "install_thread_firmware": {
23
+ "title": "Ba\u011fda\u015ft\u0131r\u0131c\u0131 g\u00fcncelleniyor"
24
+ },
25
+ "install_zigbee_firmware": {
26
+ "title": "Ba\u011fda\u015ft\u0131r\u0131c\u0131 g\u00fcncelleniyor"
27
+ },
20
28
  "otbr_failed": {
21
29
  "description": "OpenThread Border Router eklentisi kurulumu ba\u015far\u0131s\u0131z oldu. Ba\u015fka hi\u00e7bir yaz\u0131l\u0131m\u0131n {model} ile ileti\u015fim kurmaya \u00e7al\u0131\u015fmad\u0131\u011f\u0131ndan, \u0130nternete eri\u015fiminiz oldu\u011fundan ve di\u011fer eklentileri kurabildi\u011finizden emin olun ve tekrar deneyin. Sorun devam ederse Supervisor g\u00fcnl\u00fcklerini kontrol edin."
22
30
  },
31
+ "pick_firmware": {
32
+ "menu_option_descriptions": {
33
+ "pick_firmware_thread": "Genellikle Matter over Thread cihazlar\u0131nda kullan\u0131l\u0131r.",
34
+ "pick_firmware_thread_migrate": "Bu, Thread Border Router'\u0131n\u0131z\u0131 yeni adapt\u00f6re ta\u015f\u0131yacakt\u0131r.",
35
+ "pick_firmware_zigbee": "En yayg\u0131n protokol.",
36
+ "pick_firmware_zigbee_migrate": "Bu, Zigbee a\u011f\u0131n\u0131z\u0131 yeni adapt\u00f6re ta\u015f\u0131yacakt\u0131r."
37
+ },
38
+ "menu_options": {
39
+ "pick_firmware_thread_migrate": "Thread'i yeni bir adapt\u00f6re ta\u015f\u0131y\u0131n",
40
+ "pick_firmware_zigbee_migrate": "Zigbee'yi yeni bir adapt\u00f6re ta\u015f\u0131y\u0131n"
41
+ }
42
+ },
23
43
  "show_z2m_docs_url": {
24
44
  "description": "Senin {model} \u015eu anda en son Zigbee ayg\u0131t yaz\u0131l\u0131m\u0131n\u0131 \u00e7al\u0131\u015ft\u0131r\u0131yor. \n L\u00fctfen EmberZNet ba\u011fda\u015ft\u0131r\u0131c\u0131lar\u0131 i\u00e7in Zigbee2MQTT belgelerini okuyun ve yap\u0131land\u0131rmay\u0131 kopyalay\u0131n. {model}: {z2m_docs_url}",
25
45
  "title": "Zigbee2MQTT'yi kurun"
46
+ },
47
+ "zigbee_installation_type": {
48
+ "description": "Zigbee adapt\u00f6r\u00fc i\u00e7in kurulum t\u00fcr\u00fcn\u00fc se\u00e7in.",
49
+ "menu_option_descriptions": {
50
+ "zigbee_intent_custom": "\u00d6rne\u011fin Zigbee2MQTT ile Zigbee'yi manuel olarak kurun ve yap\u0131land\u0131r\u0131n.",
51
+ "zigbee_intent_recommended": "Zigbee'yi otomatik olarak kurun ve yap\u0131land\u0131r\u0131n."
52
+ },
53
+ "menu_options": {
54
+ "zigbee_intent_custom": "Ki\u015fiselle\u015ftirilmi\u015f",
55
+ "zigbee_intent_recommended": "\u00d6nerilen kurulum"
56
+ },
57
+ "title": "Zigbee'yi kurun"
58
+ },
59
+ "zigbee_integration": {
60
+ "menu_option_descriptions": {
61
+ "zigbee_integration_other": "\u00d6rne\u011fin adapt\u00f6r\u00fc Zigbee2MQTT ile kullanmak istiyorsan\u0131z.",
62
+ "zigbee_integration_zha": "Home Assistant'\u0131n Zigbee a\u011f\u0131n\u0131 kontrol etmesini sa\u011flar."
63
+ },
64
+ "menu_options": {
65
+ "zigbee_integration_other": "Di\u011fer",
66
+ "zigbee_integration_zha": "Zigbee Ev Otomasyonu"
67
+ },
68
+ "title": "Zigbee y\u00f6ntemini se\u00e7in"
26
69
  }
27
70
  }
28
71
  }
@@ -26,6 +26,7 @@ from .util import (
26
26
  ApplicationType,
27
27
  FirmwareInfo,
28
28
  ResetTarget,
29
+ async_firmware_flashing_context,
29
30
  async_flash_silabs_firmware,
30
31
  )
31
32
 
@@ -274,16 +275,18 @@ class BaseFirmwareUpdateEntity(
274
275
  )
275
276
 
276
277
  try:
277
- firmware_info = await async_flash_silabs_firmware(
278
- hass=self.hass,
279
- device=self._current_device,
280
- fw_data=fw_data,
281
- expected_installed_firmware_type=self.entity_description.expected_firmware_type,
282
- bootloader_reset_methods=self.BOOTLOADER_RESET_METHODS,
283
- application_probe_methods=self.APPLICATION_PROBE_METHODS,
284
- progress_callback=self._update_progress,
285
- domain=self._config_entry.domain,
286
- )
278
+ async with async_firmware_flashing_context(
279
+ self.hass, self._current_device, self._config_entry.domain
280
+ ):
281
+ firmware_info = await async_flash_silabs_firmware(
282
+ hass=self.hass,
283
+ device=self._current_device,
284
+ fw_data=fw_data,
285
+ expected_installed_firmware_type=self.entity_description.expected_firmware_type,
286
+ bootloader_reset_methods=self.BOOTLOADER_RESET_METHODS,
287
+ application_probe_methods=self.APPLICATION_PROBE_METHODS,
288
+ progress_callback=self._update_progress,
289
+ )
287
290
  finally:
288
291
  self._attr_in_progress = False
289
292
  self.async_write_ha_state()
@@ -26,7 +26,6 @@ from homeassistant.helpers.singleton import singleton
26
26
 
27
27
  from . import DATA_COMPONENT
28
28
  from .const import (
29
- DOMAIN,
30
29
  OTBR_ADDON_MANAGER_DATA,
31
30
  OTBR_ADDON_NAME,
32
31
  OTBR_ADDON_SLUG,
@@ -366,6 +365,22 @@ async def probe_silabs_firmware_type(
366
365
  return fw_info.firmware_type
367
366
 
368
367
 
368
+ @asynccontextmanager
369
+ async def async_firmware_flashing_context(
370
+ hass: HomeAssistant, device: str, source_domain: str
371
+ ) -> AsyncIterator[None]:
372
+ """Register a device as having its firmware being actively interacted with."""
373
+ async with async_firmware_update_context(hass, device, source_domain):
374
+ firmware_info = await guess_firmware_info(hass, device)
375
+ _LOGGER.debug("Guessed firmware info before update: %s", firmware_info)
376
+
377
+ async with AsyncExitStack() as stack:
378
+ for owner in firmware_info.owners:
379
+ await stack.enter_async_context(owner.temporarily_stop(hass))
380
+
381
+ yield
382
+
383
+
369
384
  async def async_flash_silabs_firmware(
370
385
  hass: HomeAssistant,
371
386
  device: str,
@@ -374,10 +389,11 @@ async def async_flash_silabs_firmware(
374
389
  bootloader_reset_methods: Sequence[ResetTarget],
375
390
  application_probe_methods: Sequence[tuple[ApplicationType, int]],
376
391
  progress_callback: Callable[[int, int], None] | None = None,
377
- *,
378
- domain: str = DOMAIN,
379
392
  ) -> FirmwareInfo:
380
- """Flash firmware to the SiLabs device."""
393
+ """Flash firmware to the SiLabs device.
394
+
395
+ This function is meant to be used within a firmware update context.
396
+ """
381
397
  if not any(
382
398
  method == expected_installed_firmware_type
383
399
  for method, _ in application_probe_methods
@@ -387,54 +403,44 @@ async def async_flash_silabs_firmware(
387
403
  f" not in application probe methods {application_probe_methods!r}"
388
404
  )
389
405
 
390
- async with async_firmware_update_context(hass, device, domain):
391
- firmware_info = await guess_firmware_info(hass, device)
392
- _LOGGER.debug("Identified firmware info: %s", firmware_info)
393
-
394
- fw_image = await hass.async_add_executor_job(parse_firmware_image, fw_data)
395
-
396
- flasher = Flasher(
397
- device=device,
398
- probe_methods=tuple(
399
- (m.as_flasher_application_type(), baudrate)
400
- for m, baudrate in application_probe_methods
401
- ),
402
- bootloader_reset=tuple(
403
- m.as_flasher_reset_target() for m in bootloader_reset_methods
404
- ),
405
- )
406
+ fw_image = await hass.async_add_executor_job(parse_firmware_image, fw_data)
406
407
 
407
- async with AsyncExitStack() as stack:
408
- for owner in firmware_info.owners:
409
- await stack.enter_async_context(owner.temporarily_stop(hass))
408
+ flasher = Flasher(
409
+ device=device,
410
+ probe_methods=tuple(
411
+ (m.as_flasher_application_type(), baudrate)
412
+ for m, baudrate in application_probe_methods
413
+ ),
414
+ bootloader_reset=tuple(
415
+ m.as_flasher_reset_target() for m in bootloader_reset_methods
416
+ ),
417
+ )
418
+
419
+ try:
420
+ # Enter the bootloader with indeterminate progress
421
+ await flasher.enter_bootloader()
422
+
423
+ # Flash the firmware, with progress
424
+ await flasher.flash_firmware(fw_image, progress_callback=progress_callback)
425
+ except PermissionError as err:
426
+ raise HomeAssistantError(
427
+ "Failed to flash firmware: Device is used by another application"
428
+ ) from err
429
+ except Exception as err:
430
+ raise HomeAssistantError("Failed to flash firmware") from err
431
+
432
+ probed_firmware_info = await probe_silabs_firmware_info(
433
+ device,
434
+ bootloader_reset_methods=bootloader_reset_methods,
435
+ # Only probe for the expected installed firmware type
436
+ application_probe_methods=[
437
+ (method, baudrate)
438
+ for method, baudrate in application_probe_methods
439
+ if method == expected_installed_firmware_type
440
+ ],
441
+ )
442
+
443
+ if probed_firmware_info is None:
444
+ raise HomeAssistantError("Failed to probe the firmware after flashing")
410
445
 
411
- try:
412
- # Enter the bootloader with indeterminate progress
413
- await flasher.enter_bootloader()
414
-
415
- # Flash the firmware, with progress
416
- await flasher.flash_firmware(
417
- fw_image, progress_callback=progress_callback
418
- )
419
- except PermissionError as err:
420
- raise HomeAssistantError(
421
- "Failed to flash firmware: Device is used by another application"
422
- ) from err
423
- except Exception as err:
424
- raise HomeAssistantError("Failed to flash firmware") from err
425
-
426
- probed_firmware_info = await probe_silabs_firmware_info(
427
- device,
428
- bootloader_reset_methods=bootloader_reset_methods,
429
- # Only probe for the expected installed firmware type
430
- application_probe_methods=[
431
- (method, baudrate)
432
- for method, baudrate in application_probe_methods
433
- if method == expected_installed_firmware_type
434
- ],
435
- )
436
-
437
- if probed_firmware_info is None:
438
- raise HomeAssistantError("Failed to probe the firmware after flashing")
439
-
440
- return probed_firmware_info
446
+ return probed_firmware_info
@@ -62,6 +62,10 @@
62
62
  },
63
63
  "title": "Elige tu protocolo"
64
64
  },
65
+ "show_z2m_docs_url": {
66
+ "description": "Tu {model} ahora est\u00e1 ejecutando el \u00faltimo firmware Zigbee. \nPor favor, lee la documentaci\u00f3n de Zigbee2MQTT para los adaptadores EmberZNet y copia la configuraci\u00f3n para tu {model}: {z2m_docs_url}",
67
+ "title": "Configurar Zigbee2MQTT"
68
+ },
65
69
  "start_otbr_addon": {
66
70
  "title": "Configuraci\u00f3n de Thread"
67
71
  },
@@ -204,6 +208,10 @@
204
208
  "reconfigure_addon": {
205
209
  "title": "Volver a configurar el soporte multiprotocolo de radio IEEE 802.15.4"
206
210
  },
211
+ "show_z2m_docs_url": {
212
+ "description": "Tu {model} ahora est\u00e1 ejecutando el \u00faltimo firmware Zigbee. \nPor favor, lee la documentaci\u00f3n de Zigbee2MQTT para los adaptadores EmberZNet y copia la configuraci\u00f3n para tu {model}: {z2m_docs_url}",
213
+ "title": "Configurar Zigbee2MQTT"
214
+ },
207
215
  "start_addon": {
208
216
  "title": "El complemento Silicon Labs Multiprotocol se est\u00e1 iniciando."
209
217
  },