homeassistant 2025.12.0b8__py3-none-any.whl → 2025.12.1__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 (650) hide show
  1. homeassistant/components/airobot/translations/he.json +25 -0
  2. homeassistant/components/airobot/translations/pt.json +5 -1
  3. homeassistant/components/alarm_control_panel/translations/cs.json +18 -6
  4. homeassistant/components/alarm_control_panel/translations/he.json +86 -1
  5. homeassistant/components/alarm_control_panel/translations/pt.json +21 -7
  6. homeassistant/components/alarm_control_panel/translations/zh-Hans.json +4 -2
  7. homeassistant/components/alert/translations/he.json +1 -1
  8. homeassistant/components/anglian_water/config_flow.py +4 -18
  9. homeassistant/components/anglian_water/manifest.json +1 -0
  10. homeassistant/components/anglian_water/translations/he.json +20 -0
  11. homeassistant/components/anglian_water/translations/pt.json +2 -1
  12. homeassistant/components/anglian_water/translations/sv.json +8 -2
  13. homeassistant/components/anova/translations/he.json +1 -1
  14. homeassistant/components/anthropic/translations/he.json +31 -0
  15. homeassistant/components/apcupsd/translations/sk.json +5 -5
  16. homeassistant/components/aprilaire/translations/he.json +4 -4
  17. homeassistant/components/assist_satellite/translations/cs.json +12 -4
  18. homeassistant/components/assist_satellite/translations/he.json +55 -2
  19. homeassistant/components/assist_satellite/translations/pt.json +12 -4
  20. homeassistant/components/assist_satellite/translations/zh-Hans.json +4 -2
  21. homeassistant/components/automation/translations/cs.json +8 -0
  22. homeassistant/components/automation/translations/pt.json +8 -0
  23. homeassistant/components/automation/translations/sr-Latn.json +1 -1
  24. homeassistant/components/backup/translations/he.json +1 -1
  25. homeassistant/components/bang_olufsen/translations/he.json +901 -0
  26. homeassistant/components/bayesian/translations/sk.json +3 -3
  27. homeassistant/components/binary_sensor/translations/cs.json +36 -1
  28. homeassistant/components/binary_sensor/translations/et.json +4 -0
  29. homeassistant/components/binary_sensor/translations/ga.json +36 -1
  30. homeassistant/components/binary_sensor/translations/he.json +36 -1
  31. homeassistant/components/binary_sensor/translations/pt.json +36 -1
  32. homeassistant/components/binary_sensor/translations/ru.json +36 -1
  33. homeassistant/components/binary_sensor/translations/sv.json +23 -1
  34. homeassistant/components/binary_sensor/translations/zh-Hans.json +29 -1
  35. homeassistant/components/blebox/translations/sr-Latn.json +1 -0
  36. homeassistant/components/bsblan/translations/sr-Latn.json +4 -0
  37. homeassistant/components/camera/translations/he.json +1 -1
  38. homeassistant/components/climate/translations/cs.json +15 -5
  39. homeassistant/components/climate/translations/he.json +65 -2
  40. homeassistant/components/climate/translations/pt.json +15 -5
  41. homeassistant/components/climate/translations/ru.json +21 -11
  42. homeassistant/components/cloud/entity.py +1 -1
  43. homeassistant/components/cloud/manifest.json +1 -1
  44. homeassistant/components/cloud/translations/he.json +7 -0
  45. homeassistant/components/deluge/translations/he.json +1 -1
  46. homeassistant/components/derivative/translations/he.json +5 -0
  47. homeassistant/components/doorbird/device.py +11 -7
  48. homeassistant/components/duckdns/translations/he.json +10 -0
  49. homeassistant/components/duckdns/translations/ru.json +12 -0
  50. homeassistant/components/ecovacs/manifest.json +1 -1
  51. homeassistant/components/ecovacs/translations/he.json +1 -1
  52. homeassistant/components/energyid/translations/he.json +11 -0
  53. homeassistant/components/energyid/translations/sv.json +2 -1
  54. homeassistant/components/enphase_envoy/translations/he.json +1 -1
  55. homeassistant/components/esphome/translations/he.json +1 -0
  56. homeassistant/components/essent/translations/he.json +9 -0
  57. homeassistant/components/essent/translations/nl.json +32 -0
  58. homeassistant/components/evohome/manifest.json +1 -1
  59. homeassistant/components/fan/translations/cs.json +6 -2
  60. homeassistant/components/fan/translations/he.json +34 -1
  61. homeassistant/components/fan/translations/nl.json +6 -1
  62. homeassistant/components/fan/translations/pt.json +6 -2
  63. homeassistant/components/fan/translations/ru.json +37 -1
  64. homeassistant/components/forked_daapd/translations/sr-Latn.json +8 -0
  65. homeassistant/components/fritzbox_callmonitor/translations/he.json +1 -1
  66. homeassistant/components/fronius/translations/he.json +1 -1
  67. homeassistant/components/frontend/manifest.json +1 -1
  68. homeassistant/components/frontend/translations/cs.json +2 -2
  69. homeassistant/components/frontend/translations/de.json +2 -2
  70. homeassistant/components/frontend/translations/he.json +8 -0
  71. homeassistant/components/google_air_quality/strings.json +7 -2
  72. homeassistant/components/google_air_quality/translations/bg.json +3 -2
  73. homeassistant/components/google_air_quality/translations/cs.json +7 -2
  74. homeassistant/components/google_air_quality/translations/de.json +7 -2
  75. homeassistant/components/google_air_quality/translations/el.json +3 -2
  76. homeassistant/components/google_air_quality/translations/en-GB.json +7 -2
  77. homeassistant/components/google_air_quality/translations/en.json +7 -2
  78. homeassistant/components/google_air_quality/translations/es.json +7 -2
  79. homeassistant/components/google_air_quality/translations/et.json +7 -2
  80. homeassistant/components/google_air_quality/translations/fr.json +14 -0
  81. homeassistant/components/google_air_quality/translations/ga.json +7 -2
  82. homeassistant/components/google_air_quality/translations/he.json +239 -0
  83. homeassistant/components/google_air_quality/translations/lt.json +0 -9
  84. homeassistant/components/google_air_quality/translations/nl.json +42 -2
  85. homeassistant/components/google_air_quality/translations/pt.json +7 -2
  86. homeassistant/components/google_air_quality/translations/ru.json +2 -9
  87. homeassistant/components/google_air_quality/translations/sk.json +7 -2
  88. homeassistant/components/google_air_quality/translations/sv.json +11 -4
  89. homeassistant/components/google_air_quality/translations/tr.json +0 -9
  90. homeassistant/components/google_air_quality/translations/zh-Hans.json +7 -4
  91. homeassistant/components/google_air_quality/translations/zh-Hant.json +7 -2
  92. homeassistant/components/google_assistant/translations/sr-Latn.json +1 -1
  93. homeassistant/components/google_generative_ai_conversation/__init__.py +1 -0
  94. homeassistant/components/google_generative_ai_conversation/const.py +1 -1
  95. homeassistant/components/google_generative_ai_conversation/strings.json +1 -1
  96. homeassistant/components/google_generative_ai_conversation/translations/bg.json +0 -3
  97. homeassistant/components/google_generative_ai_conversation/translations/cs.json +1 -1
  98. homeassistant/components/google_generative_ai_conversation/translations/de.json +1 -1
  99. homeassistant/components/google_generative_ai_conversation/translations/el.json +0 -1
  100. homeassistant/components/google_generative_ai_conversation/translations/en-GB.json +1 -1
  101. homeassistant/components/google_generative_ai_conversation/translations/en.json +1 -1
  102. homeassistant/components/google_generative_ai_conversation/translations/es.json +1 -1
  103. homeassistant/components/google_generative_ai_conversation/translations/et.json +1 -1
  104. homeassistant/components/google_generative_ai_conversation/translations/fr.json +0 -1
  105. homeassistant/components/google_generative_ai_conversation/translations/ga.json +0 -1
  106. homeassistant/components/google_generative_ai_conversation/translations/he.json +0 -1
  107. homeassistant/components/google_generative_ai_conversation/translations/hu.json +0 -1
  108. homeassistant/components/google_generative_ai_conversation/translations/lt.json +0 -1
  109. homeassistant/components/google_generative_ai_conversation/translations/nl.json +0 -1
  110. homeassistant/components/google_generative_ai_conversation/translations/pt-BR.json +0 -1
  111. homeassistant/components/google_generative_ai_conversation/translations/pt.json +1 -1
  112. homeassistant/components/google_generative_ai_conversation/translations/ru.json +0 -1
  113. homeassistant/components/google_generative_ai_conversation/translations/sk.json +0 -1
  114. homeassistant/components/google_generative_ai_conversation/translations/sl.json +0 -1
  115. homeassistant/components/google_generative_ai_conversation/translations/sv.json +0 -1
  116. homeassistant/components/google_generative_ai_conversation/translations/tr.json +0 -1
  117. homeassistant/components/google_generative_ai_conversation/translations/uk.json +0 -1
  118. homeassistant/components/google_generative_ai_conversation/translations/zh-Hans.json +0 -1
  119. homeassistant/components/google_generative_ai_conversation/translations/zh-Hant.json +0 -1
  120. homeassistant/components/google_photos/services.py +1 -0
  121. homeassistant/components/google_photos/strings.json +1 -1
  122. homeassistant/components/google_photos/translations/bg.json +0 -1
  123. homeassistant/components/google_photos/translations/ca.json +0 -1
  124. homeassistant/components/google_photos/translations/cs.json +1 -1
  125. homeassistant/components/google_photos/translations/de.json +1 -1
  126. homeassistant/components/google_photos/translations/el.json +0 -1
  127. homeassistant/components/google_photos/translations/en-GB.json +1 -1
  128. homeassistant/components/google_photos/translations/en.json +1 -1
  129. homeassistant/components/google_photos/translations/es.json +1 -1
  130. homeassistant/components/google_photos/translations/et.json +1 -1
  131. homeassistant/components/google_photos/translations/fr.json +0 -1
  132. homeassistant/components/google_photos/translations/ga.json +0 -1
  133. homeassistant/components/google_photos/translations/he.json +0 -1
  134. homeassistant/components/google_photos/translations/hu.json +0 -1
  135. homeassistant/components/google_photos/translations/id.json +0 -1
  136. homeassistant/components/google_photos/translations/it.json +0 -1
  137. homeassistant/components/google_photos/translations/ja.json +0 -1
  138. homeassistant/components/google_photos/translations/lt.json +0 -1
  139. homeassistant/components/google_photos/translations/nl.json +0 -1
  140. homeassistant/components/google_photos/translations/pt-BR.json +0 -1
  141. homeassistant/components/google_photos/translations/pt.json +1 -1
  142. homeassistant/components/google_photos/translations/ru.json +0 -1
  143. homeassistant/components/google_photos/translations/sk.json +0 -1
  144. homeassistant/components/google_photos/translations/sv.json +0 -1
  145. homeassistant/components/google_photos/translations/tr.json +0 -1
  146. homeassistant/components/google_photos/translations/uk.json +0 -1
  147. homeassistant/components/google_photos/translations/zh-Hans.json +0 -1
  148. homeassistant/components/google_photos/translations/zh-Hant.json +0 -1
  149. homeassistant/components/google_weather/translations/he.json +102 -0
  150. homeassistant/components/hanna/translations/he.json +20 -0
  151. homeassistant/components/hassio/translations/cs.json +1 -0
  152. homeassistant/components/hassio/translations/et.json +1 -0
  153. homeassistant/components/hassio/translations/pt.json +1 -0
  154. homeassistant/components/home_connect/translations/de.json +2 -2
  155. homeassistant/components/home_connect/translations/he.json +3 -0
  156. homeassistant/components/homekit_controller/translations/he.json +1 -1
  157. homeassistant/components/hue_ble/translations/he.json +11 -0
  158. homeassistant/components/hue_ble/translations/nl.json +3 -0
  159. homeassistant/components/hue_ble/translations/pt.json +2 -1
  160. homeassistant/components/hue_ble/translations/sv.json +8 -0
  161. homeassistant/components/humidifier/translations/he.json +1 -1
  162. homeassistant/components/integration/translations/pl.json +1 -1
  163. homeassistant/components/ipp/translations/he.json +1 -1
  164. homeassistant/components/iron_os/translations/he.json +1 -1
  165. homeassistant/components/kitchen_sink/translations/cs.json +2 -2
  166. homeassistant/components/kitchen_sink/translations/de.json +4 -4
  167. homeassistant/components/kitchen_sink/translations/el.json +5 -0
  168. homeassistant/components/kitchen_sink/translations/en-GB.json +2 -2
  169. homeassistant/components/kitchen_sink/translations/en.json +2 -2
  170. homeassistant/components/kitchen_sink/translations/es.json +2 -2
  171. homeassistant/components/kitchen_sink/translations/et.json +1 -1
  172. homeassistant/components/kitchen_sink/translations/ga.json +0 -2
  173. homeassistant/components/kitchen_sink/translations/it.json +0 -2
  174. homeassistant/components/kitchen_sink/translations/lt.json +0 -2
  175. homeassistant/components/kitchen_sink/translations/nl.json +4 -0
  176. homeassistant/components/kitchen_sink/translations/pt.json +2 -2
  177. homeassistant/components/kitchen_sink/translations/sk.json +2 -2
  178. homeassistant/components/kitchen_sink/translations/tr.json +0 -2
  179. homeassistant/components/kitchen_sink/translations/zh-Hans.json +0 -2
  180. homeassistant/components/labs/__init__.py +2 -54
  181. homeassistant/components/labs/helpers.py +63 -0
  182. homeassistant/components/labs/websocket_api.py +51 -0
  183. homeassistant/components/lametric/services.py +1 -0
  184. homeassistant/components/lametric/strings.json +1 -1
  185. homeassistant/components/lametric/translations/ca.json +0 -3
  186. homeassistant/components/lametric/translations/cs.json +1 -1
  187. homeassistant/components/lametric/translations/de.json +1 -1
  188. homeassistant/components/lametric/translations/el.json +0 -1
  189. homeassistant/components/lametric/translations/en-GB.json +1 -1
  190. homeassistant/components/lametric/translations/en.json +1 -1
  191. homeassistant/components/lametric/translations/es.json +1 -1
  192. homeassistant/components/lametric/translations/et.json +0 -1
  193. homeassistant/components/lametric/translations/fi.json +0 -3
  194. homeassistant/components/lametric/translations/ga.json +0 -1
  195. homeassistant/components/lametric/translations/gl.json +0 -3
  196. homeassistant/components/lametric/translations/hu.json +0 -1
  197. homeassistant/components/lametric/translations/it.json +0 -3
  198. homeassistant/components/lametric/translations/ja.json +0 -1
  199. homeassistant/components/lametric/translations/ko.json +0 -3
  200. homeassistant/components/lametric/translations/lt.json +0 -1
  201. homeassistant/components/lametric/translations/nl.json +0 -3
  202. homeassistant/components/lametric/translations/pt-BR.json +0 -3
  203. homeassistant/components/lametric/translations/pt.json +0 -1
  204. homeassistant/components/lametric/translations/ru.json +0 -1
  205. homeassistant/components/lametric/translations/sk.json +0 -1
  206. homeassistant/components/lametric/translations/sv.json +0 -1
  207. homeassistant/components/lametric/translations/tr.json +0 -1
  208. homeassistant/components/lametric/translations/vi.json +0 -3
  209. homeassistant/components/lametric/translations/zh-Hans.json +0 -1
  210. homeassistant/components/lametric/translations/zh-Hant.json +0 -1
  211. homeassistant/components/lawn_mower/translations/cs.json +12 -4
  212. homeassistant/components/lawn_mower/translations/he.json +38 -0
  213. homeassistant/components/lawn_mower/translations/pt.json +20 -12
  214. homeassistant/components/lawn_mower/translations/ru.json +56 -1
  215. homeassistant/components/light/translations/cs.json +6 -2
  216. homeassistant/components/light/translations/he.json +69 -2
  217. homeassistant/components/light/translations/nl.json +6 -1
  218. homeassistant/components/light/translations/pt.json +6 -2
  219. homeassistant/components/light/translations/ru.json +15 -11
  220. homeassistant/components/matter/translations/he.json +56 -2
  221. homeassistant/components/media_player/translations/cs.json +3 -1
  222. homeassistant/components/media_player/translations/he.json +27 -4
  223. homeassistant/components/media_player/translations/pt.json +3 -1
  224. homeassistant/components/media_player/translations/ru.json +24 -1
  225. homeassistant/components/miele/translations/ga.json +1 -0
  226. homeassistant/components/miele/translations/he.json +4 -1
  227. homeassistant/components/miele/translations/it.json +15 -1
  228. homeassistant/components/miele/translations/pt.json +1 -0
  229. homeassistant/components/miele/translations/zh-Hans.json +1 -0
  230. homeassistant/components/mqtt/translations/cs.json +3 -1
  231. homeassistant/components/mqtt/translations/he.json +35 -1
  232. homeassistant/components/mqtt/translations/pt.json +3 -1
  233. homeassistant/components/music_assistant/translations/he.json +8 -1
  234. homeassistant/components/myuplink/translations/he.json +5 -0
  235. homeassistant/components/neato/translations/he.json +5 -0
  236. homeassistant/components/netatmo/translations/he.json +5 -0
  237. homeassistant/components/niko_home_control/translations/he.json +3 -1
  238. homeassistant/components/nina/translations/he.json +12 -1
  239. homeassistant/components/ntfy/translations/cs.json +1 -1
  240. homeassistant/components/ntfy/translations/de.json +1 -1
  241. homeassistant/components/ntfy/translations/el.json +0 -3
  242. homeassistant/components/ntfy/translations/en-GB.json +1 -1
  243. homeassistant/components/ntfy/translations/en.json +1 -1
  244. homeassistant/components/ntfy/translations/es.json +1 -1
  245. homeassistant/components/ntfy/translations/et.json +1 -1
  246. homeassistant/components/ntfy/translations/lt.json +0 -1
  247. homeassistant/components/ntfy/translations/pt.json +1 -1
  248. homeassistant/components/ntfy/translations/ru.json +0 -1
  249. homeassistant/components/ntfy/translations/sk.json +1 -1
  250. homeassistant/components/ntfy/translations/sv.json +0 -1
  251. homeassistant/components/ntfy/translations/tr.json +0 -1
  252. homeassistant/components/ntfy/translations/zh-Hans.json +0 -1
  253. homeassistant/components/ntfy/translations/zh-Hant.json +1 -1
  254. homeassistant/components/onedrive/services.py +1 -0
  255. homeassistant/components/onedrive/strings.json +1 -1
  256. homeassistant/components/onedrive/translations/cs.json +1 -1
  257. homeassistant/components/onedrive/translations/de.json +1 -1
  258. homeassistant/components/onedrive/translations/el.json +0 -1
  259. homeassistant/components/onedrive/translations/en-GB.json +1 -1
  260. homeassistant/components/onedrive/translations/en.json +1 -1
  261. homeassistant/components/onedrive/translations/es.json +1 -1
  262. homeassistant/components/onedrive/translations/et.json +1 -1
  263. homeassistant/components/onedrive/translations/ga.json +0 -1
  264. homeassistant/components/onedrive/translations/he.json +3 -1
  265. homeassistant/components/onedrive/translations/hu.json +0 -1
  266. homeassistant/components/onedrive/translations/it.json +0 -1
  267. homeassistant/components/onedrive/translations/ja.json +0 -1
  268. homeassistant/components/onedrive/translations/lt.json +0 -1
  269. homeassistant/components/onedrive/translations/nl.json +0 -1
  270. homeassistant/components/onedrive/translations/pt.json +1 -1
  271. homeassistant/components/onedrive/translations/ru.json +0 -1
  272. homeassistant/components/onedrive/translations/sk.json +0 -1
  273. homeassistant/components/onedrive/translations/sl.json +0 -1
  274. homeassistant/components/onedrive/translations/sv.json +0 -1
  275. homeassistant/components/onedrive/translations/tr.json +0 -1
  276. homeassistant/components/onedrive/translations/zh-Hans.json +0 -1
  277. homeassistant/components/onedrive/translations/zh-Hant.json +0 -1
  278. homeassistant/components/oralb/manifest.json +1 -1
  279. homeassistant/components/oralb/translations/he.json +1 -1
  280. homeassistant/components/pilight/__init__.py +13 -1
  281. homeassistant/components/pilight/strings.json +1 -1
  282. homeassistant/components/pilight/translations/cs.json +1 -1
  283. homeassistant/components/pilight/translations/de.json +1 -1
  284. homeassistant/components/pilight/translations/el.json +0 -1
  285. homeassistant/components/pilight/translations/en-GB.json +1 -1
  286. homeassistant/components/pilight/translations/en.json +1 -1
  287. homeassistant/components/pilight/translations/es.json +1 -1
  288. homeassistant/components/pilight/translations/et.json +1 -1
  289. homeassistant/components/pilight/translations/fi.json +0 -1
  290. homeassistant/components/pilight/translations/ga.json +0 -1
  291. homeassistant/components/pilight/translations/hu.json +0 -1
  292. homeassistant/components/pilight/translations/it.json +0 -1
  293. homeassistant/components/pilight/translations/ja.json +0 -1
  294. homeassistant/components/pilight/translations/ko.json +0 -1
  295. homeassistant/components/pilight/translations/lt.json +0 -1
  296. homeassistant/components/pilight/translations/pt.json +1 -1
  297. homeassistant/components/pilight/translations/ru.json +0 -1
  298. homeassistant/components/pilight/translations/sk.json +1 -1
  299. homeassistant/components/pilight/translations/sv.json +0 -1
  300. homeassistant/components/pilight/translations/tr.json +0 -1
  301. homeassistant/components/pilight/translations/zh-Hans.json +0 -1
  302. homeassistant/components/pilight/translations/zh-Hant.json +1 -1
  303. homeassistant/components/playstation_network/coordinator.py +14 -7
  304. homeassistant/components/plugwise/translations/he.json +26 -0
  305. homeassistant/components/plugwise/translations/ru.json +12 -0
  306. homeassistant/components/point/translations/he.json +5 -0
  307. homeassistant/components/pooldose/translations/he.json +11 -0
  308. homeassistant/components/prusalink/translations/he.json +1 -1
  309. homeassistant/components/qbittorrent/translations/he.json +1 -1
  310. homeassistant/components/rainmachine/__init__.py +13 -2
  311. homeassistant/components/rainmachine/strings.json +1 -1
  312. homeassistant/components/rainmachine/translations/cs.json +1 -1
  313. homeassistant/components/rainmachine/translations/de.json +1 -1
  314. homeassistant/components/rainmachine/translations/en-GB.json +1 -1
  315. homeassistant/components/rainmachine/translations/en.json +1 -1
  316. homeassistant/components/rainmachine/translations/es.json +1 -1
  317. homeassistant/components/rainmachine/translations/et.json +1 -1
  318. homeassistant/components/rainmachine/translations/lt.json +0 -1
  319. homeassistant/components/rainmachine/translations/pt.json +1 -1
  320. homeassistant/components/rainmachine/translations/ru.json +1 -0
  321. homeassistant/components/rainmachine/translations/sk.json +1 -1
  322. homeassistant/components/rainmachine/translations/zh-Hans.json +0 -1
  323. homeassistant/components/rainmachine/translations/zh-Hant.json +1 -1
  324. homeassistant/components/reolink/host.py +4 -0
  325. homeassistant/components/reolink/manifest.json +1 -1
  326. homeassistant/components/reolink/strings.json +2 -2
  327. homeassistant/components/reolink/translations/ca.json +0 -2
  328. homeassistant/components/reolink/translations/cs.json +2 -2
  329. homeassistant/components/reolink/translations/de.json +2 -2
  330. homeassistant/components/reolink/translations/el.json +0 -2
  331. homeassistant/components/reolink/translations/en-GB.json +2 -2
  332. homeassistant/components/reolink/translations/en.json +2 -2
  333. homeassistant/components/reolink/translations/es.json +0 -2
  334. homeassistant/components/reolink/translations/et.json +2 -2
  335. homeassistant/components/reolink/translations/fi.json +0 -2
  336. homeassistant/components/reolink/translations/fr.json +0 -2
  337. homeassistant/components/reolink/translations/ga.json +0 -2
  338. homeassistant/components/reolink/translations/hr.json +0 -5
  339. homeassistant/components/reolink/translations/hu.json +0 -2
  340. homeassistant/components/reolink/translations/id.json +0 -2
  341. homeassistant/components/reolink/translations/it.json +0 -2
  342. homeassistant/components/reolink/translations/ja.json +0 -2
  343. homeassistant/components/reolink/translations/ko.json +0 -2
  344. homeassistant/components/reolink/translations/lt.json +0 -2
  345. homeassistant/components/reolink/translations/nb.json +0 -1
  346. homeassistant/components/reolink/translations/nl.json +0 -2
  347. homeassistant/components/reolink/translations/pl.json +0 -1
  348. homeassistant/components/reolink/translations/pt-BR.json +0 -2
  349. homeassistant/components/reolink/translations/pt.json +2 -2
  350. homeassistant/components/reolink/translations/ro.json +0 -2
  351. homeassistant/components/reolink/translations/ru.json +0 -2
  352. homeassistant/components/reolink/translations/sk.json +2 -2
  353. homeassistant/components/reolink/translations/sv.json +0 -2
  354. homeassistant/components/reolink/translations/tr.json +0 -2
  355. homeassistant/components/reolink/translations/uk.json +0 -2
  356. homeassistant/components/reolink/translations/zh-Hans.json +0 -2
  357. homeassistant/components/reolink/translations/zh-Hant.json +2 -2
  358. homeassistant/components/rituals_perfume_genie/__init__.py +47 -7
  359. homeassistant/components/rituals_perfume_genie/config_flow.py +79 -32
  360. homeassistant/components/rituals_perfume_genie/const.py +1 -0
  361. homeassistant/components/rituals_perfume_genie/coordinator.py +39 -4
  362. homeassistant/components/rituals_perfume_genie/manifest.json +2 -2
  363. homeassistant/components/rituals_perfume_genie/strings.json +8 -1
  364. homeassistant/components/rituals_perfume_genie/translations/bg.json +0 -3
  365. homeassistant/components/rituals_perfume_genie/translations/ca.json +0 -3
  366. homeassistant/components/rituals_perfume_genie/translations/cs.json +8 -1
  367. homeassistant/components/rituals_perfume_genie/translations/da.json +0 -3
  368. homeassistant/components/rituals_perfume_genie/translations/de.json +8 -1
  369. homeassistant/components/rituals_perfume_genie/translations/el.json +0 -3
  370. homeassistant/components/rituals_perfume_genie/translations/en-GB.json +8 -1
  371. homeassistant/components/rituals_perfume_genie/translations/en.json +8 -1
  372. homeassistant/components/rituals_perfume_genie/translations/es.json +8 -1
  373. homeassistant/components/rituals_perfume_genie/translations/et.json +7 -1
  374. homeassistant/components/rituals_perfume_genie/translations/fi.json +0 -3
  375. homeassistant/components/rituals_perfume_genie/translations/fr.json +0 -3
  376. homeassistant/components/rituals_perfume_genie/translations/ga.json +0 -3
  377. homeassistant/components/rituals_perfume_genie/translations/he.json +0 -3
  378. homeassistant/components/rituals_perfume_genie/translations/hu.json +0 -3
  379. homeassistant/components/rituals_perfume_genie/translations/id.json +0 -3
  380. homeassistant/components/rituals_perfume_genie/translations/it.json +0 -3
  381. homeassistant/components/rituals_perfume_genie/translations/ja.json +0 -3
  382. homeassistant/components/rituals_perfume_genie/translations/ko.json +0 -3
  383. homeassistant/components/rituals_perfume_genie/translations/lt.json +0 -3
  384. homeassistant/components/rituals_perfume_genie/translations/lv.json +0 -5
  385. homeassistant/components/rituals_perfume_genie/translations/nb.json +0 -3
  386. homeassistant/components/rituals_perfume_genie/translations/nl.json +0 -3
  387. homeassistant/components/rituals_perfume_genie/translations/pl.json +0 -3
  388. homeassistant/components/rituals_perfume_genie/translations/pt-BR.json +0 -3
  389. homeassistant/components/rituals_perfume_genie/translations/pt.json +8 -1
  390. homeassistant/components/rituals_perfume_genie/translations/ro.json +0 -3
  391. homeassistant/components/rituals_perfume_genie/translations/ru.json +0 -3
  392. homeassistant/components/rituals_perfume_genie/translations/sk.json +8 -1
  393. homeassistant/components/rituals_perfume_genie/translations/sl.json +0 -3
  394. homeassistant/components/rituals_perfume_genie/translations/sv.json +0 -3
  395. homeassistant/components/rituals_perfume_genie/translations/tr.json +0 -3
  396. homeassistant/components/rituals_perfume_genie/translations/uk.json +0 -3
  397. homeassistant/components/rituals_perfume_genie/translations/zh-Hans.json +0 -3
  398. homeassistant/components/rituals_perfume_genie/translations/zh-Hant.json +0 -3
  399. homeassistant/components/roborock/__init__.py +20 -1
  400. homeassistant/components/roborock/manifest.json +1 -1
  401. homeassistant/components/roborock/translations/he.json +1 -1
  402. homeassistant/components/saunum/translations/he.json +31 -0
  403. homeassistant/components/scene/translations/cs.json +3 -3
  404. homeassistant/components/senz/translations/he.json +11 -1
  405. homeassistant/components/sfr_box/translations/he.json +1 -1
  406. homeassistant/components/sharkiq/manifest.json +1 -1
  407. homeassistant/components/shelly/button.py +11 -2
  408. homeassistant/components/shelly/translations/ga.json +8 -0
  409. homeassistant/components/shelly/translations/he.json +132 -0
  410. homeassistant/components/sleep_as_android/translations/es.json +3 -0
  411. homeassistant/components/smartthings/translations/he.json +19 -1
  412. homeassistant/components/spotify/translations/he.json +5 -0
  413. homeassistant/components/starlink/coordinator.py +0 -1
  414. homeassistant/components/starlink/sensor.py +6 -3
  415. homeassistant/components/switchbot/translations/he.json +12 -0
  416. homeassistant/components/telegram_bot/__init__.py +3 -0
  417. homeassistant/components/telegram_bot/config_flow.py +9 -5
  418. homeassistant/components/telegram_bot/strings.json +9 -9
  419. homeassistant/components/telegram_bot/translations/bg.json +0 -7
  420. homeassistant/components/telegram_bot/translations/ca.json +0 -12
  421. homeassistant/components/telegram_bot/translations/cs.json +15 -15
  422. homeassistant/components/telegram_bot/translations/de.json +15 -15
  423. homeassistant/components/telegram_bot/translations/el.json +0 -18
  424. homeassistant/components/telegram_bot/translations/en-GB.json +15 -15
  425. homeassistant/components/telegram_bot/translations/en.json +15 -15
  426. homeassistant/components/telegram_bot/translations/es.json +2 -15
  427. homeassistant/components/telegram_bot/translations/et.json +15 -15
  428. homeassistant/components/telegram_bot/translations/fi.json +0 -12
  429. homeassistant/components/telegram_bot/translations/ga.json +0 -19
  430. homeassistant/components/telegram_bot/translations/gl.json +0 -3
  431. homeassistant/components/telegram_bot/translations/he.json +0 -12
  432. homeassistant/components/telegram_bot/translations/hu.json +0 -18
  433. homeassistant/components/telegram_bot/translations/it.json +0 -18
  434. homeassistant/components/telegram_bot/translations/ja.json +0 -18
  435. homeassistant/components/telegram_bot/translations/ko.json +0 -12
  436. homeassistant/components/telegram_bot/translations/lt.json +0 -19
  437. homeassistant/components/telegram_bot/translations/mk.json +0 -1
  438. homeassistant/components/telegram_bot/translations/nb.json +0 -12
  439. homeassistant/components/telegram_bot/translations/nl.json +0 -18
  440. homeassistant/components/telegram_bot/translations/pt.json +15 -15
  441. homeassistant/components/telegram_bot/translations/ru.json +13 -19
  442. homeassistant/components/telegram_bot/translations/sk.json +15 -15
  443. homeassistant/components/telegram_bot/translations/sr-Latn.json +0 -12
  444. homeassistant/components/telegram_bot/translations/sv.json +0 -19
  445. homeassistant/components/telegram_bot/translations/tr.json +0 -13
  446. homeassistant/components/telegram_bot/translations/zh-Hans.json +0 -19
  447. homeassistant/components/telegram_bot/translations/zh-Hant.json +13 -19
  448. homeassistant/components/template/helpers.py +20 -10
  449. homeassistant/components/template/light.py +12 -18
  450. homeassistant/components/template/strings.json +1 -1
  451. homeassistant/components/template/translations/cs.json +1 -1
  452. homeassistant/components/template/translations/de.json +1 -1
  453. homeassistant/components/template/translations/el.json +0 -1
  454. homeassistant/components/template/translations/en-GB.json +1 -1
  455. homeassistant/components/template/translations/en.json +1 -1
  456. homeassistant/components/template/translations/es.json +0 -1
  457. homeassistant/components/template/translations/et.json +1 -1
  458. homeassistant/components/template/translations/ga.json +0 -1
  459. homeassistant/components/template/translations/he.json +3 -0
  460. homeassistant/components/template/translations/it.json +0 -1
  461. homeassistant/components/template/translations/lt.json +0 -1
  462. homeassistant/components/template/translations/pl.json +0 -1
  463. homeassistant/components/template/translations/pt.json +1 -1
  464. homeassistant/components/template/translations/sk.json +1 -1
  465. homeassistant/components/template/translations/sr-Latn.json +0 -1
  466. homeassistant/components/template/translations/tr.json +0 -1
  467. homeassistant/components/template/translations/zh-Hans.json +0 -1
  468. homeassistant/components/template/translations/zh-Hant.json +0 -1
  469. homeassistant/components/tesla_fleet/translations/he.json +5 -0
  470. homeassistant/components/teslemetry/services.py +3 -0
  471. homeassistant/components/teslemetry/strings.json +1 -1
  472. homeassistant/components/teslemetry/translations/bg.json +0 -1
  473. homeassistant/components/teslemetry/translations/cs.json +1 -1
  474. homeassistant/components/teslemetry/translations/de.json +1 -1
  475. homeassistant/components/teslemetry/translations/el.json +0 -1
  476. homeassistant/components/teslemetry/translations/en-GB.json +1 -1
  477. homeassistant/components/teslemetry/translations/en.json +1 -1
  478. homeassistant/components/teslemetry/translations/es.json +1 -1
  479. homeassistant/components/teslemetry/translations/et.json +1 -1
  480. homeassistant/components/teslemetry/translations/ga.json +0 -1
  481. homeassistant/components/teslemetry/translations/he.json +2 -2
  482. homeassistant/components/teslemetry/translations/hr.json +0 -1
  483. homeassistant/components/teslemetry/translations/hu.json +0 -1
  484. homeassistant/components/teslemetry/translations/ja.json +0 -1
  485. homeassistant/components/teslemetry/translations/lt.json +0 -1
  486. homeassistant/components/teslemetry/translations/pt.json +1 -1
  487. homeassistant/components/teslemetry/translations/ru.json +1 -1
  488. homeassistant/components/teslemetry/translations/sk.json +1 -1
  489. homeassistant/components/teslemetry/translations/sv.json +0 -1
  490. homeassistant/components/teslemetry/translations/tr.json +0 -1
  491. homeassistant/components/teslemetry/translations/zh-Hans.json +0 -1
  492. homeassistant/components/teslemetry/translations/zh-Hant.json +1 -1
  493. homeassistant/components/text/translations/cs.json +7 -1
  494. homeassistant/components/text/translations/he.json +7 -1
  495. homeassistant/components/text/translations/pt.json +7 -1
  496. homeassistant/components/text/translations/ru.json +7 -1
  497. homeassistant/components/timer/translations/he.json +1 -1
  498. homeassistant/components/toon/translations/he.json +5 -0
  499. homeassistant/components/transmission/translations/he.json +1 -1
  500. homeassistant/components/tuya/climate.py +12 -0
  501. homeassistant/components/tuya/translations/he.json +10 -0
  502. homeassistant/components/twitch/translations/he.json +5 -0
  503. homeassistant/components/unifiprotect/manifest.json +1 -1
  504. homeassistant/components/unifiprotect/translations/pt.json +10 -0
  505. homeassistant/components/unifiprotect/translations/zh-Hans.json +2 -1
  506. homeassistant/components/vacuum/translations/cs.json +12 -4
  507. homeassistant/components/vacuum/translations/he.json +57 -2
  508. homeassistant/components/vacuum/translations/pt.json +12 -4
  509. homeassistant/components/vacuum/translations/ru.json +20 -12
  510. homeassistant/components/vacuum/translations/sv.json +14 -0
  511. homeassistant/components/venstar/translations/he.json +1 -1
  512. homeassistant/components/vesync/binary_sensor.py +1 -1
  513. homeassistant/components/vicare/translations/he.json +10 -0
  514. homeassistant/components/victron_ble/translations/he.json +17 -0
  515. homeassistant/components/volvo/translations/he.json +6 -1
  516. homeassistant/components/weheat/translations/he.json +5 -0
  517. homeassistant/components/withings/translations/he.json +5 -0
  518. homeassistant/components/wled/translations/cs.json +10 -2
  519. homeassistant/components/wled/translations/et.json +10 -2
  520. homeassistant/components/wled/translations/ga.json +10 -2
  521. homeassistant/components/wled/translations/he.json +8 -2
  522. homeassistant/components/wled/translations/pt.json +10 -2
  523. homeassistant/components/wled/translations/ru.json +10 -2
  524. homeassistant/components/wled/translations/zh-Hans.json +10 -2
  525. homeassistant/components/xbox/browse_media.py +3 -1
  526. homeassistant/components/xbox/entity.py +10 -6
  527. homeassistant/components/xbox/media_source.py +2 -1
  528. homeassistant/components/xbox/sensor.py +3 -2
  529. homeassistant/components/xbox/translations/de.json +1 -1
  530. homeassistant/components/xbox/translations/he.json +10 -1
  531. homeassistant/components/xiaomi_aqara/config_flow.py +19 -3
  532. homeassistant/components/xiaomi_aqara/strings.json +2 -2
  533. homeassistant/components/xiaomi_aqara/translations/ca.json +0 -2
  534. homeassistant/components/xiaomi_aqara/translations/cs.json +2 -2
  535. homeassistant/components/xiaomi_aqara/translations/da.json +0 -4
  536. homeassistant/components/xiaomi_aqara/translations/de.json +2 -2
  537. homeassistant/components/xiaomi_aqara/translations/el.json +0 -2
  538. homeassistant/components/xiaomi_aqara/translations/en-GB.json +2 -2
  539. homeassistant/components/xiaomi_aqara/translations/en.json +2 -2
  540. homeassistant/components/xiaomi_aqara/translations/es.json +2 -2
  541. homeassistant/components/xiaomi_aqara/translations/et.json +2 -2
  542. homeassistant/components/xiaomi_aqara/translations/fi.json +0 -2
  543. homeassistant/components/xiaomi_aqara/translations/fr.json +0 -2
  544. homeassistant/components/xiaomi_aqara/translations/ga.json +0 -2
  545. homeassistant/components/xiaomi_aqara/translations/gl.json +1 -2
  546. homeassistant/components/xiaomi_aqara/translations/he.json +0 -2
  547. homeassistant/components/xiaomi_aqara/translations/hu.json +0 -2
  548. homeassistant/components/xiaomi_aqara/translations/id.json +0 -2
  549. homeassistant/components/xiaomi_aqara/translations/it.json +0 -2
  550. homeassistant/components/xiaomi_aqara/translations/ja.json +0 -2
  551. homeassistant/components/xiaomi_aqara/translations/ko.json +0 -2
  552. homeassistant/components/xiaomi_aqara/translations/lb.json +1 -2
  553. homeassistant/components/xiaomi_aqara/translations/lt.json +0 -2
  554. homeassistant/components/xiaomi_aqara/translations/nb.json +0 -1
  555. homeassistant/components/xiaomi_aqara/translations/nl.json +0 -2
  556. homeassistant/components/xiaomi_aqara/translations/pl.json +0 -2
  557. homeassistant/components/xiaomi_aqara/translations/pt-BR.json +0 -2
  558. homeassistant/components/xiaomi_aqara/translations/pt.json +2 -2
  559. homeassistant/components/xiaomi_aqara/translations/ro.json +0 -2
  560. homeassistant/components/xiaomi_aqara/translations/ru.json +2 -2
  561. homeassistant/components/xiaomi_aqara/translations/sk.json +2 -2
  562. homeassistant/components/xiaomi_aqara/translations/sl.json +0 -2
  563. homeassistant/components/xiaomi_aqara/translations/sr-Latn.json +6 -0
  564. homeassistant/components/xiaomi_aqara/translations/sv.json +0 -2
  565. homeassistant/components/xiaomi_aqara/translations/tr.json +0 -2
  566. homeassistant/components/xiaomi_aqara/translations/uk.json +0 -2
  567. homeassistant/components/xiaomi_aqara/translations/vi.json +0 -2
  568. homeassistant/components/xiaomi_aqara/translations/zh-Hans.json +0 -2
  569. homeassistant/components/xiaomi_aqara/translations/zh-Hant.json +2 -2
  570. homeassistant/components/yeelight/light.py +9 -1
  571. homeassistant/components/yeelight/strings.json +2 -2
  572. homeassistant/components/yeelight/translations/cs.json +3 -3
  573. homeassistant/components/yeelight/translations/de.json +3 -3
  574. homeassistant/components/yeelight/translations/el.json +0 -3
  575. homeassistant/components/yeelight/translations/en-GB.json +3 -3
  576. homeassistant/components/yeelight/translations/en.json +3 -3
  577. homeassistant/components/yeelight/translations/es.json +3 -3
  578. homeassistant/components/yeelight/translations/et.json +3 -3
  579. homeassistant/components/yeelight/translations/fi.json +0 -2
  580. homeassistant/components/yeelight/translations/fr.json +0 -3
  581. homeassistant/components/yeelight/translations/ga.json +0 -3
  582. homeassistant/components/yeelight/translations/gl.json +0 -2
  583. homeassistant/components/yeelight/translations/he.json +0 -3
  584. homeassistant/components/yeelight/translations/hu.json +0 -3
  585. homeassistant/components/yeelight/translations/it.json +0 -2
  586. homeassistant/components/yeelight/translations/ja.json +0 -3
  587. homeassistant/components/yeelight/translations/ko.json +0 -2
  588. homeassistant/components/yeelight/translations/lt.json +0 -3
  589. homeassistant/components/yeelight/translations/pt.json +3 -3
  590. homeassistant/components/yeelight/translations/ru.json +0 -3
  591. homeassistant/components/yeelight/translations/sk.json +3 -3
  592. homeassistant/components/yeelight/translations/sv.json +0 -3
  593. homeassistant/components/yeelight/translations/tr.json +0 -3
  594. homeassistant/components/yeelight/translations/vi.json +0 -2
  595. homeassistant/components/yeelight/translations/zh-Hans.json +0 -3
  596. homeassistant/components/yeelight/translations/zh-Hant.json +3 -3
  597. homeassistant/components/yolink/translations/he.json +5 -0
  598. homeassistant/components/youtube/translations/he.json +5 -0
  599. homeassistant/components/zha/config_flow.py +7 -0
  600. homeassistant/components/zha/strings.json +5 -3
  601. homeassistant/components/zha/translations/cs.json +6 -4
  602. homeassistant/components/zha/translations/de.json +6 -4
  603. homeassistant/components/zha/translations/el.json +0 -8
  604. homeassistant/components/zha/translations/en-GB.json +6 -4
  605. homeassistant/components/zha/translations/en.json +6 -4
  606. homeassistant/components/zha/translations/es.json +6 -4
  607. homeassistant/components/zha/translations/et.json +6 -4
  608. homeassistant/components/zha/translations/fr.json +0 -3
  609. homeassistant/components/zha/translations/ga.json +2 -0
  610. homeassistant/components/zha/translations/he.json +1 -1
  611. homeassistant/components/zha/translations/hu.json +0 -3
  612. homeassistant/components/zha/translations/lt.json +0 -8
  613. homeassistant/components/zha/translations/nl.json +8 -0
  614. homeassistant/components/zha/translations/pt.json +6 -4
  615. homeassistant/components/zha/translations/ru.json +46 -8
  616. homeassistant/components/zha/translations/sk.json +6 -4
  617. homeassistant/components/zha/translations/sv.json +2 -0
  618. homeassistant/components/zha/translations/zh-Hans.json +2 -8
  619. homeassistant/components/zha/translations/zh-Hant.json +2 -8
  620. homeassistant/components/zwave_js/services.py +3 -0
  621. homeassistant/components/zwave_js/strings.json +2 -2
  622. homeassistant/components/zwave_js/translations/cs.json +2 -2
  623. homeassistant/components/zwave_js/translations/de.json +2 -2
  624. homeassistant/components/zwave_js/translations/el.json +0 -2
  625. homeassistant/components/zwave_js/translations/en-GB.json +2 -2
  626. homeassistant/components/zwave_js/translations/en.json +2 -2
  627. homeassistant/components/zwave_js/translations/es.json +2 -2
  628. homeassistant/components/zwave_js/translations/et.json +2 -2
  629. homeassistant/components/zwave_js/translations/ga.json +0 -2
  630. homeassistant/components/zwave_js/translations/hu.json +0 -2
  631. homeassistant/components/zwave_js/translations/ja.json +0 -2
  632. homeassistant/components/zwave_js/translations/lt.json +0 -2
  633. homeassistant/components/zwave_js/translations/pt.json +2 -2
  634. homeassistant/components/zwave_js/translations/ru.json +0 -2
  635. homeassistant/components/zwave_js/translations/sk.json +2 -2
  636. homeassistant/components/zwave_js/translations/sv.json +0 -2
  637. homeassistant/components/zwave_js/translations/tr.json +0 -2
  638. homeassistant/components/zwave_js/translations/vi.json +0 -2
  639. homeassistant/components/zwave_js/translations/zh-Hans.json +0 -2
  640. homeassistant/components/zwave_js/translations/zh-Hant.json +2 -2
  641. homeassistant/const.py +1 -1
  642. homeassistant/loader.py +6 -0
  643. homeassistant/package_constraints.txt +2 -2
  644. {homeassistant-2025.12.0b8.dist-info → homeassistant-2025.12.1.dist-info}/METADATA +2 -2
  645. {homeassistant-2025.12.0b8.dist-info → homeassistant-2025.12.1.dist-info}/RECORD +650 -635
  646. {homeassistant-2025.12.0b8.dist-info → homeassistant-2025.12.1.dist-info}/WHEEL +0 -0
  647. {homeassistant-2025.12.0b8.dist-info → homeassistant-2025.12.1.dist-info}/entry_points.txt +0 -0
  648. {homeassistant-2025.12.0b8.dist-info → homeassistant-2025.12.1.dist-info}/licenses/LICENSE.md +0 -0
  649. {homeassistant-2025.12.0b8.dist-info → homeassistant-2025.12.1.dist-info}/licenses/homeassistant/backports/LICENSE.Python +0 -0
  650. {homeassistant-2025.12.0b8.dist-info → homeassistant-2025.12.1.dist-info}/top_level.txt +0 -0
@@ -7,11 +7,10 @@ in the Home Assistant Labs UI for users to enable or disable.
7
7
 
8
8
  from __future__ import annotations
9
9
 
10
- from collections.abc import Callable
11
10
  import logging
12
11
 
13
12
  from homeassistant.const import EVENT_LABS_UPDATED
14
- from homeassistant.core import Event, HomeAssistant, callback
13
+ from homeassistant.core import HomeAssistant
15
14
  from homeassistant.generated.labs import LABS_PREVIEW_FEATURES
16
15
  from homeassistant.helpers import config_validation as cv
17
16
  from homeassistant.helpers.storage import Store
@@ -19,6 +18,7 @@ from homeassistant.helpers.typing import ConfigType
19
18
  from homeassistant.loader import async_get_custom_components
20
19
 
21
20
  from .const import DOMAIN, LABS_DATA, STORAGE_KEY, STORAGE_VERSION
21
+ from .helpers import async_is_preview_feature_enabled, async_listen
22
22
  from .models import (
23
23
  EventLabsUpdatedData,
24
24
  LabPreviewFeature,
@@ -135,55 +135,3 @@ async def _async_scan_all_preview_features(
135
135
 
136
136
  _LOGGER.debug("Loaded %d total lab preview features", len(preview_features))
137
137
  return preview_features
138
-
139
-
140
- @callback
141
- def async_is_preview_feature_enabled(
142
- hass: HomeAssistant, domain: str, preview_feature: str
143
- ) -> bool:
144
- """Check if a lab preview feature is enabled.
145
-
146
- Args:
147
- hass: HomeAssistant instance
148
- domain: Integration domain
149
- preview_feature: Preview feature name
150
-
151
- Returns:
152
- True if the preview feature is enabled, False otherwise
153
- """
154
- if LABS_DATA not in hass.data:
155
- return False
156
-
157
- labs_data = hass.data[LABS_DATA]
158
- return (domain, preview_feature) in labs_data.data.preview_feature_status
159
-
160
-
161
- @callback
162
- def async_listen(
163
- hass: HomeAssistant,
164
- domain: str,
165
- preview_feature: str,
166
- listener: Callable[[], None],
167
- ) -> Callable[[], None]:
168
- """Listen for changes to a specific preview feature.
169
-
170
- Args:
171
- hass: HomeAssistant instance
172
- domain: Integration domain
173
- preview_feature: Preview feature name
174
- listener: Callback to invoke when the preview feature is toggled
175
-
176
- Returns:
177
- Callable to unsubscribe from the listener
178
- """
179
-
180
- @callback
181
- def _async_feature_updated(event: Event[EventLabsUpdatedData]) -> None:
182
- """Handle labs feature update event."""
183
- if (
184
- event.data["domain"] == domain
185
- and event.data["preview_feature"] == preview_feature
186
- ):
187
- listener()
188
-
189
- return hass.bus.async_listen(EVENT_LABS_UPDATED, _async_feature_updated)
@@ -0,0 +1,63 @@
1
+ """Helper functions for the Home Assistant Labs integration."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from collections.abc import Callable
6
+
7
+ from homeassistant.const import EVENT_LABS_UPDATED
8
+ from homeassistant.core import Event, HomeAssistant, callback
9
+
10
+ from .const import LABS_DATA
11
+ from .models import EventLabsUpdatedData
12
+
13
+
14
+ @callback
15
+ def async_is_preview_feature_enabled(
16
+ hass: HomeAssistant, domain: str, preview_feature: str
17
+ ) -> bool:
18
+ """Check if a lab preview feature is enabled.
19
+
20
+ Args:
21
+ hass: HomeAssistant instance
22
+ domain: Integration domain
23
+ preview_feature: Preview feature name
24
+
25
+ Returns:
26
+ True if the preview feature is enabled, False otherwise
27
+ """
28
+ if LABS_DATA not in hass.data:
29
+ return False
30
+
31
+ labs_data = hass.data[LABS_DATA]
32
+ return (domain, preview_feature) in labs_data.data.preview_feature_status
33
+
34
+
35
+ @callback
36
+ def async_listen(
37
+ hass: HomeAssistant,
38
+ domain: str,
39
+ preview_feature: str,
40
+ listener: Callable[[], None],
41
+ ) -> Callable[[], None]:
42
+ """Listen for changes to a specific preview feature.
43
+
44
+ Args:
45
+ hass: HomeAssistant instance
46
+ domain: Integration domain
47
+ preview_feature: Preview feature name
48
+ listener: Callback to invoke when the preview feature is toggled
49
+
50
+ Returns:
51
+ Callable to unsubscribe from the listener
52
+ """
53
+
54
+ @callback
55
+ def _async_feature_updated(event: Event[EventLabsUpdatedData]) -> None:
56
+ """Handle labs feature update event."""
57
+ if (
58
+ event.data["domain"] == domain
59
+ and event.data["preview_feature"] == preview_feature
60
+ ):
61
+ listener()
62
+
63
+ return hass.bus.async_listen(EVENT_LABS_UPDATED, _async_feature_updated)
@@ -12,6 +12,7 @@ from homeassistant.const import EVENT_LABS_UPDATED
12
12
  from homeassistant.core import HomeAssistant, callback
13
13
 
14
14
  from .const import LABS_DATA
15
+ from .helpers import async_is_preview_feature_enabled, async_listen
15
16
  from .models import EventLabsUpdatedData
16
17
 
17
18
 
@@ -20,6 +21,7 @@ def async_setup(hass: HomeAssistant) -> None:
20
21
  """Set up the number websocket API."""
21
22
  websocket_api.async_register_command(hass, websocket_list_preview_features)
22
23
  websocket_api.async_register_command(hass, websocket_update_preview_feature)
24
+ websocket_api.async_register_command(hass, websocket_subscribe_feature)
23
25
 
24
26
 
25
27
  @callback
@@ -108,3 +110,52 @@ async def websocket_update_preview_feature(
108
110
  hass.bus.async_fire(EVENT_LABS_UPDATED, event_data)
109
111
 
110
112
  connection.send_result(msg["id"])
113
+
114
+
115
+ @callback
116
+ @websocket_api.websocket_command(
117
+ {
118
+ vol.Required("type"): "labs/subscribe",
119
+ vol.Required("domain"): str,
120
+ vol.Required("preview_feature"): str,
121
+ }
122
+ )
123
+ def websocket_subscribe_feature(
124
+ hass: HomeAssistant,
125
+ connection: websocket_api.ActiveConnection,
126
+ msg: dict[str, Any],
127
+ ) -> None:
128
+ """Subscribe to a specific lab preview feature updates."""
129
+ domain = msg["domain"]
130
+ preview_feature_key = msg["preview_feature"]
131
+ labs_data = hass.data[LABS_DATA]
132
+
133
+ preview_feature_id = f"{domain}.{preview_feature_key}"
134
+
135
+ if preview_feature_id not in labs_data.preview_features:
136
+ connection.send_error(
137
+ msg["id"],
138
+ websocket_api.ERR_NOT_FOUND,
139
+ f"Preview feature {preview_feature_id} not found",
140
+ )
141
+ return
142
+
143
+ preview_feature = labs_data.preview_features[preview_feature_id]
144
+
145
+ @callback
146
+ def send_event() -> None:
147
+ """Send feature state to client."""
148
+ enabled = async_is_preview_feature_enabled(hass, domain, preview_feature_key)
149
+ connection.send_message(
150
+ websocket_api.event_message(
151
+ msg["id"],
152
+ preview_feature.to_dict(enabled=enabled),
153
+ )
154
+ )
155
+
156
+ connection.subscriptions[msg["id"]] = async_listen(
157
+ hass, domain, preview_feature_key, send_event
158
+ )
159
+
160
+ connection.send_result(msg["id"])
161
+ send_event()
@@ -108,6 +108,7 @@ def async_setup_services(hass: HomeAssistant) -> None:
108
108
  SERVICE_MESSAGE,
109
109
  _async_service_message,
110
110
  schema=SERVICE_MESSAGE_SCHEMA,
111
+ description_placeholders={"icons_url": "https://developer.lametric.com/icons"},
111
112
  )
112
113
 
113
114
 
@@ -211,7 +211,7 @@
211
211
  "name": "[%key:common::config_flow::data::device%]"
212
212
  },
213
213
  "icon": {
214
- "description": "The ID number of the icon or animation to display. List of all icons and their IDs can be found at: https://developer.lametric.com/icons.",
214
+ "description": "The ID number of the icon or animation to display. List of all icons and their IDs can be found at: {icons_url}.",
215
215
  "name": "Icon ID"
216
216
  },
217
217
  "icon_type": {
@@ -190,9 +190,6 @@
190
190
  "description": "Dispositiu LaMetric on mostrar el missatge.",
191
191
  "name": "Dispositiu"
192
192
  },
193
- "icon": {
194
- "description": "N\u00famero d'identificaci\u00f3 de la icona o animaci\u00f3 a mostrar. Pots trobar la llista de totes les icones i els IDs a: https://developer.lametric.com/icons."
195
- },
196
193
  "icon_type": {
197
194
  "description": "Tipus d'icona a mostrar. Indica la naturalesa de la notificaci\u00f3.",
198
195
  "name": "Tipus d'icona"
@@ -210,7 +210,7 @@
210
210
  "name": "Za\u0159\u00edzen\u00ed"
211
211
  },
212
212
  "icon": {
213
- "description": "ID \u010d\u00edslo ikony nebo animace, kter\u00e1 se m\u00e1 zobrazit. Seznam v\u0161ech ikon a jejich ID naleznete na: https://developer.lametric.com/icons.",
213
+ "description": "ID \u010d\u00edslo ikony nebo animace, kter\u00e1 se m\u00e1 zobrazit. Seznam v\u0161ech ikon a jejich ID naleznete na: {icons_url}.",
214
214
  "name": "ID ikony"
215
215
  },
216
216
  "icon_type": {
@@ -210,7 +210,7 @@
210
210
  "name": "Ger\u00e4t"
211
211
  },
212
212
  "icon": {
213
- "description": "Die ID-Nummer des anzuzeigenden Symbols oder der Animation. Eine Liste aller Symbole und ihrer IDs findest du unter: https://developer.lametric.com/icons.",
213
+ "description": "Die ID-Nummer des anzuzeigenden Symbols oder der Animation. Eine Liste aller Symbole und ihrer IDs findest du unter: {icons_url}.",
214
214
  "name": "Symbol-ID"
215
215
  },
216
216
  "icon_type": {
@@ -206,7 +206,6 @@
206
206
  "name": "\u03a3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae"
207
207
  },
208
208
  "icon": {
209
- "description": "\u039f \u03b1\u03c1\u03b9\u03b8\u03bc\u03cc\u03c2 ID \u03c4\u03bf\u03c5 \u03b5\u03b9\u03ba\u03bf\u03bd\u03b9\u03b4\u03af\u03bf\u03c5 \u03ae \u03c4\u03bf\u03c5 \u03ba\u03b9\u03bd\u03bf\u03cd\u03bc\u03b5\u03bd\u03bf\u03c5 \u03c3\u03c7\u03b5\u03b4\u03af\u03bf\u03c5 \u03c0\u03bf\u03c5 \u03b8\u03b1 \u03b5\u03bc\u03c6\u03b1\u03bd\u03b9\u03c3\u03c4\u03b5\u03af. \u039f \u03ba\u03b1\u03c4\u03ac\u03bb\u03bf\u03b3\u03bf\u03c2 \u03cc\u03bb\u03c9\u03bd \u03c4\u03c9\u03bd \u03b5\u03b9\u03ba\u03bf\u03bd\u03b9\u03b4\u03af\u03c9\u03bd \u03ba\u03b1\u03b9 \u03c4\u03c9\u03bd ID \u03c4\u03bf\u03c5\u03c2 \u03b2\u03c1\u03af\u03c3\u03ba\u03b5\u03c4\u03b1\u03b9 \u03c3\u03c4\u03b7 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7: https://developer.lametric.com/icons.",
210
209
  "name": "ID \u03b5\u03b9\u03ba\u03bf\u03bd\u03b9\u03b4\u03af\u03bf\u03c5"
211
210
  },
212
211
  "icon_type": {
@@ -210,7 +210,7 @@
210
210
  "name": "Device"
211
211
  },
212
212
  "icon": {
213
- "description": "The ID number of the icon or animation to display. List of all icons and their IDs can be found at: https://developer.lametric.com/icons.",
213
+ "description": "The ID number of the icon or animation to display. List of all icons and their IDs can be found at: {icons_url}.",
214
214
  "name": "Icon ID"
215
215
  },
216
216
  "icon_type": {
@@ -211,7 +211,7 @@
211
211
  "name": "Device"
212
212
  },
213
213
  "icon": {
214
- "description": "The ID number of the icon or animation to display. List of all icons and their IDs can be found at: https://developer.lametric.com/icons.",
214
+ "description": "The ID number of the icon or animation to display. List of all icons and their IDs can be found at: {icons_url}.",
215
215
  "name": "Icon ID"
216
216
  },
217
217
  "icon_type": {
@@ -210,7 +210,7 @@
210
210
  "name": "Dispositivo"
211
211
  },
212
212
  "icon": {
213
- "description": "El n\u00famero de ID del icono o la animaci\u00f3n que se mostrar\u00e1. La lista de todos los \u00edconos y sus ID se puede encontrar en: https://developer.lametric.com/icons.",
213
+ "description": "El n\u00famero de ID del icono o animaci\u00f3n que se mostrar\u00e1. La lista de todos los iconos y sus identificaciones se encuentra en: {icons_url}.",
214
214
  "name": "ID de icono"
215
215
  },
216
216
  "icon_type": {
@@ -210,7 +210,6 @@
210
210
  "name": "Seade"
211
211
  },
212
212
  "icon": {
213
- "description": "Kuvatava ikooni v\u00f5i animatsiooni ID-number. K\u00f5igi ikoonide ja nende ID-de loendi leiab aadressilt: https://developer.lametric.com/icons.",
214
213
  "name": "Ikooni ID"
215
214
  },
216
215
  "icon_type": {
@@ -181,9 +181,6 @@
181
181
  "description": "LaMetric-laite, jolla viesti n\u00e4ytet\u00e4\u00e4n.",
182
182
  "name": "Laite"
183
183
  },
184
- "icon": {
185
- "description": "N\u00e4ytett\u00e4v\u00e4n kuvakkeen tai animaation tunnusnumero. Luettelo kaikista kuvakkeista ja niiden tunnuksista l\u00f6ytyy osoitteesta: https://developer.lametric.com/icons."
186
- },
187
184
  "icon_type": {
188
185
  "description": "N\u00e4ytett\u00e4v\u00e4n kuvakkeen tyyppi, joka ilmaisee ilmoituksen luonteen.",
189
186
  "name": "Kuvakkeen tyyppi"
@@ -206,7 +206,6 @@
206
206
  "name": "Gl\u00e9as"
207
207
  },
208
208
  "icon": {
209
- "description": "Uimhir aitheantais an deilbh\u00edn n\u00f3 an bheochana at\u00e1 le taispe\u00e1int. Is f\u00e9idir liosta de na deilbh\u00edn\u00ed uile agus a n-aitheantais a fh\u00e1il ag: https://developer.lametric.com/icons.",
210
209
  "name": "Aitheantas Deilbh\u00edn"
211
210
  },
212
211
  "icon_type": {
@@ -92,9 +92,6 @@
92
92
  "description": "O dispositivo LaMetric para mostrar a mensaxe.",
93
93
  "name": "Dispositivo"
94
94
  },
95
- "icon": {
96
- "description": "O n\u00famero de ID da icona ou a animaci\u00f3n a mostrar. A lista de todas as iconas e os seus IDs p\u00f3dese atopar en: https://developer.lametric.com/icons."
97
- },
98
95
  "message": {
99
96
  "description": "A mensaxe a mostrar.",
100
97
  "name": "Mensaxe"
@@ -208,7 +208,6 @@
208
208
  "name": "Eszk\u00f6z"
209
209
  },
210
210
  "icon": {
211
- "description": "Az ikon vagy anim\u00e1ci\u00f3 azonos\u00edt\u00f3sz\u00e1ma, amelyet meg kell jelen\u00edteni. Az \u00f6sszes ikon \u00e9s azonos\u00edt\u00f3ik list\u00e1ja megtal\u00e1lhat\u00f3 itt: https://developer.lametric.com/icons.",
212
211
  "name": "Ikon azonos\u00edt\u00f3"
213
212
  },
214
213
  "icon_type": {
@@ -202,9 +202,6 @@
202
202
  "description": "Il dispositivo LaMetric su cui visualizzare il messaggio.",
203
203
  "name": "Dispositivo"
204
204
  },
205
- "icon": {
206
- "description": "Il numero ID dell'icona o dell'animazione da visualizzare. L'elenco di tutte le icone e dei relativi ID \u00e8 disponibile all'indirizzo: https://developer.lametric.com/icons."
207
- },
208
205
  "icon_type": {
209
206
  "description": "Il tipo di icona da visualizzare, che indica la natura della notifica.",
210
207
  "name": "Tipo di icona"
@@ -201,7 +201,6 @@
201
201
  "name": "\u30c7\u30d0\u30a4\u30b9"
202
202
  },
203
203
  "icon": {
204
- "description": "\u8868\u793a\u3059\u308b\u30a2\u30a4\u30b3\u30f3\u307e\u305f\u306f\u30a2\u30cb\u30e1\u30fc\u30b7\u30e7\u30f3\u306e ID \u756a\u53f7\u3002\u3059\u3079\u3066\u306e\u30a2\u30a4\u30b3\u30f3\u3068\u305d\u306e ID \u306e\u30ea\u30b9\u30c8\u306f\u3001https://developer.lametric.com/icons \u3067\u3054\u89a7\u3044\u305f\u3060\u3051\u307e\u3059\u3002",
205
204
  "name": "\u30a2\u30a4\u30b3\u30f3ID"
206
205
  },
207
206
  "icon_type": {
@@ -181,9 +181,6 @@
181
181
  "description": "\uba54\uc2dc\uc9c0\ub97c \ud45c\uc2dc\ud560 LaMetric \uae30\uae30",
182
182
  "name": "\uae30\uae30"
183
183
  },
184
- "icon": {
185
- "description": "\ud45c\uc2dc\ud560 \uc544\uc774\ucf58 \ub610\ub294 \uc560\ub2c8\uba54\uc774\uc158\uc758 ID \ubc88\ud638\uc785\ub2c8\ub2e4. \ubaa8\ub4e0 \uc544\uc774\ucf58 \ubc0f \ud574\ub2f9 ID \ubaa9\ub85d\uc740 https://developer.lametric.com/icons \uc5d0\uc11c \ucc3e\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4."
186
- },
187
184
  "icon_type": {
188
185
  "description": "\uc54c\ub9bc\uc758 \ud2b9\uc131\uc744 \ub098\ud0c0\ub0b4\ub294 \ud45c\uc2dc\ud560 \uc544\uc774\ucf58 \uc720\ud615",
189
186
  "name": "\uc544\uc774\ucf58 \uc720\ud615"
@@ -210,7 +210,6 @@
210
210
  "name": "Prietaisas"
211
211
  },
212
212
  "icon": {
213
- "description": "Rodomos piktogramos arba animacijos ID numeris. Vis\u0173 piktogram\u0173 ir j\u0173 ID s\u0105ra\u0161\u0105 galite rasti adresu https://developer.lametric.com/icons.",
214
213
  "name": "Piktogramos ID"
215
214
  },
216
215
  "icon_type": {
@@ -199,9 +199,6 @@
199
199
  "device_id": {
200
200
  "description": "Het LaMetric-apparaat waarop het bericht moet worden weergegeven."
201
201
  },
202
- "icon": {
203
- "description": "Het ID-nummer van het pictogram of de animatie om weer te geven. Een lijst van alle pictogrammen en hun ID's is te vinden op: https://developer.lametric.com/icons."
204
- },
205
202
  "icon_type": {
206
203
  "description": "Het type pictogram dat wordt weergegeven dat de aard van de melding aangeeft.",
207
204
  "name": "Type pictogram"
@@ -184,9 +184,6 @@
184
184
  "device_id": {
185
185
  "description": "O dispositivo LaMetric no qual exibir a mensagem."
186
186
  },
187
- "icon": {
188
- "description": "O n\u00famero de ID do \u00edcone ou anima\u00e7\u00e3o a ser exibida. A lista de todos os \u00edcones e seus IDs pode ser encontrada em: https://developer.lametric.com/icons."
189
- },
190
187
  "icon_type": {
191
188
  "description": "O tipo de \u00edcone a ser exibido, indicando a natureza da notifica\u00e7\u00e3o.",
192
189
  "name": "Tipo de \u00edcone"
@@ -210,7 +210,6 @@
210
210
  "name": "Dispositivo"
211
211
  },
212
212
  "icon": {
213
- "description": "O n\u00famero de identifica\u00e7\u00e3o do \u00edcone ou anima\u00e7\u00e3o a apresentar. A lista de todos os \u00edcones e respetivos IDs pode ser consultada em: https://developer.lametric.com/icons.",
214
213
  "name": "ID do \u00edcone"
215
214
  },
216
215
  "icon_type": {
@@ -209,7 +209,6 @@
209
209
  "name": "\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e"
210
210
  },
211
211
  "icon": {
212
- "description": "\u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u043d\u043e\u043c\u0435\u0440 \u0438\u043a\u043e\u043d\u043a\u0438 \u0438\u043b\u0438 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f. \u0421\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u0438\u043a\u043e\u043d\u043e\u043a \u0438 \u0438\u0445 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443: https://developer.lametric.com/icons.",
213
212
  "name": "\u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0438\u043a\u043e\u043d\u043a\u0438"
214
213
  },
215
214
  "icon_type": {
@@ -210,7 +210,6 @@
210
210
  "name": "Zariadenie"
211
211
  },
212
212
  "icon": {
213
- "description": "Identifika\u010dn\u00e9 \u010d\u00edslo ikony alebo anim\u00e1cie, ktor\u00e1 sa m\u00e1 zobrazi\u0165. Zoznam v\u0161etk\u00fdch ikon a ich ID n\u00e1jdete na adrese: https://developer.lametric.com/icons.",
214
213
  "name": "ID ikony"
215
214
  },
216
215
  "icon_type": {
@@ -209,7 +209,6 @@
209
209
  "name": "Enhet"
210
210
  },
211
211
  "icon": {
212
- "description": "ID-numret f\u00f6r den ikon eller animation som ska visas. En lista \u00f6ver alla ikoner och deras ID-nummer finns p\u00e5: https://developer.lametric.com/icons.",
213
212
  "name": "Ikon-ID"
214
213
  },
215
214
  "icon_type": {
@@ -201,7 +201,6 @@
201
201
  "name": "Cihaz"
202
202
  },
203
203
  "icon": {
204
- "description": "G\u00f6r\u00fcnt\u00fclenecek simge veya animasyonun kimlik numaras\u0131. T\u00fcm simgelerin ve kimliklerinin listesi \u015fu adreste bulunabilir: https://developer.lametric.com/icons.",
205
204
  "name": "Simge Kimli\u011fi"
206
205
  },
207
206
  "icon_type": {
@@ -181,9 +181,6 @@
181
181
  "description": "Thi\u1ebft b\u1ecb LaMetric \u0111\u1ec3 hi\u1ec3n th\u1ecb th\u00f4ng b\u00e1o.",
182
182
  "name": "Thi\u1ebft b\u1ecb"
183
183
  },
184
- "icon": {
185
- "description": "S\u1ed1 ID c\u1ee7a bi\u1ec3u t\u01b0\u1ee3ng ho\u1eb7c h\u00ecnh \u1ea3nh \u0111\u1ed9ng s\u1ebd hi\u1ec3n th\u1ecb. B\u1ea1n c\u00f3 th\u1ec3 t\u00ecm th\u1ea5y danh s\u00e1ch t\u1ea5t c\u1ea3 c\u00e1c bi\u1ec3u t\u01b0\u1ee3ng v\u00e0 ID c\u1ee7a ch\u00fang t\u1ea1i: https://developer.lametric.com/icons."
186
- },
187
184
  "icon_type": {
188
185
  "description": "Lo\u1ea1i bi\u1ec3u t\u01b0\u1ee3ng hi\u1ec3n th\u1ecb, cho bi\u1ebft t\u00ednh ch\u1ea5t c\u1ee7a th\u00f4ng b\u00e1o.",
189
186
  "name": "Lo\u1ea1i bi\u1ec3u t\u01b0\u1ee3ng"
@@ -210,7 +210,6 @@
210
210
  "name": "\u8bbe\u5907"
211
211
  },
212
212
  "icon": {
213
- "description": "\u8981\u663e\u793a\u7684\u56fe\u6807\u6216\u52a8\u753b\u7684\u7f16\u53f7\u3002\u6240\u6709\u56fe\u6807\u53ca\u5176\u7f16\u53f7\u7684\u5217\u8868\u53ef\u5728\u4ee5\u4e0b\u4f4d\u7f6e\u627e\u5230\uff1ahttps://developer.lametric.com/icons \u3002",
214
213
  "name": "\u56fe\u6807\u6807\u8bc6\u7b26"
215
214
  },
216
215
  "icon_type": {
@@ -210,7 +210,6 @@
210
210
  "name": "\u88dd\u7f6e"
211
211
  },
212
212
  "icon": {
213
- "description": "\u6240\u8981\u986f\u793a\u7684\u5716\u793a\u6216\u52d5\u756b ID \u865f\u78bc\u3002\u6240\u6709\u5716\u793a\u53ca\u5176 ID \u5217\u8868\u53ef\u4ee5\u65bc\u4e0b\u65b9\u4f4d\u5740\u627e\u5230\uff1ahttps://developer.lametric.com/icons.",
214
213
  "name": "\u5716\u793a ID"
215
214
  },
216
215
  "icon_type": {
@@ -41,36 +41,44 @@
41
41
  "title": "Seka\u010dka na tr\u00e1vu",
42
42
  "triggers": {
43
43
  "docked": {
44
+ "description": "Spust\u00ed se pot\u00e9, co se jedna nebo v\u00edce seka\u010dek na tr\u00e1vu vr\u00e1t\u00ed do doku.",
44
45
  "fields": {
45
46
  "behavior": {
46
47
  "description": "Chov\u00e1n\u00ed c\u00edlov\u00fdch seka\u010dek na tr\u00e1vu p\u0159i spu\u0161t\u011bn\u00ed.",
47
48
  "name": "Chov\u00e1n\u00ed"
48
49
  }
49
- }
50
+ },
51
+ "name": "Seka\u010dka na tr\u00e1vu se vr\u00e1tila do doku"
50
52
  },
51
53
  "errored": {
54
+ "description": "Spust\u00ed se pot\u00e9, co u jedn\u00e9 nebo v\u00edce seka\u010dek na tr\u00e1vu dojde k chyb\u011b.",
52
55
  "fields": {
53
56
  "behavior": {
54
57
  "description": "Chov\u00e1n\u00ed c\u00edlov\u00fdch seka\u010dek na tr\u00e1vu p\u0159i spu\u0161t\u011bn\u00ed.",
55
58
  "name": "Chov\u00e1n\u00ed"
56
59
  }
57
- }
60
+ },
61
+ "name": "P\u0159i chyb\u011b seka\u010dky"
58
62
  },
59
63
  "paused_mowing": {
64
+ "description": "Spou\u0161t\u00ed se pot\u00e9, co jedna nebo v\u00edce seka\u010dek na tr\u00e1vu pozastav\u00ed sek\u00e1n\u00ed.",
60
65
  "fields": {
61
66
  "behavior": {
62
67
  "description": "Chov\u00e1n\u00ed c\u00edlov\u00fdch seka\u010dek na tr\u00e1vu p\u0159i spu\u0161t\u011bn\u00ed.",
63
68
  "name": "Chov\u00e1n\u00ed"
64
69
  }
65
- }
70
+ },
71
+ "name": "Seka\u010dka na tr\u00e1vu pozastavila sek\u00e1n\u00ed"
66
72
  },
67
73
  "started_mowing": {
74
+ "description": "Spust\u00ed se pot\u00e9, co jedna nebo v\u00edce seka\u010dek na tr\u00e1vu za\u010dnou sekat.",
68
75
  "fields": {
69
76
  "behavior": {
70
77
  "description": "Chov\u00e1n\u00ed c\u00edlov\u00fdch seka\u010dek na tr\u00e1vu p\u0159i spu\u0161t\u011bn\u00ed.",
71
78
  "name": "Chov\u00e1n\u00ed"
72
79
  }
73
- }
80
+ },
81
+ "name": "Seka\u010dka na tr\u00e1vu za\u010dala sekat"
74
82
  }
75
83
  }
76
84
  }
@@ -1,4 +1,8 @@
1
1
  {
2
+ "common": {
3
+ "trigger_behavior_description": "\u05d4\u05ea\u05e0\u05d4\u05d2\u05d5\u05ea \u05de\u05db\u05e1\u05d7\u05d5\u05ea \u05d4\u05d3\u05e9\u05d0 \u05d4\u05de\u05d9\u05d5\u05e2\u05d3\u05d5\u05ea \u05dc\u05d4\u05e4\u05e2\u05dc\u05d4.",
4
+ "trigger_behavior_name": "\u05d4\u05ea\u05e0\u05d4\u05d2\u05d5\u05ea"
5
+ },
2
6
  "entity_component": {
3
7
  "_": {
4
8
  "state": {
@@ -7,5 +11,39 @@
7
11
  "returning": "\u05d7\u05d5\u05d6\u05e8"
8
12
  }
9
13
  }
14
+ },
15
+ "triggers": {
16
+ "docked": {
17
+ "fields": {
18
+ "behavior": {
19
+ "description": "\u05d4\u05ea\u05e0\u05d4\u05d2\u05d5\u05ea \u05de\u05db\u05e1\u05d7\u05d5\u05ea \u05d4\u05d3\u05e9\u05d0 \u05d4\u05de\u05d9\u05d5\u05e2\u05d3\u05d5\u05ea \u05dc\u05d4\u05e4\u05e2\u05dc\u05d4.",
20
+ "name": "\u05d4\u05ea\u05e0\u05d4\u05d2\u05d5\u05ea"
21
+ }
22
+ }
23
+ },
24
+ "errored": {
25
+ "fields": {
26
+ "behavior": {
27
+ "description": "\u05d4\u05ea\u05e0\u05d4\u05d2\u05d5\u05ea \u05de\u05db\u05e1\u05d7\u05d5\u05ea \u05d4\u05d3\u05e9\u05d0 \u05d4\u05de\u05d9\u05d5\u05e2\u05d3\u05d5\u05ea \u05dc\u05d4\u05e4\u05e2\u05dc\u05d4.",
28
+ "name": "\u05d4\u05ea\u05e0\u05d4\u05d2\u05d5\u05ea"
29
+ }
30
+ }
31
+ },
32
+ "paused_mowing": {
33
+ "fields": {
34
+ "behavior": {
35
+ "description": "\u05d4\u05ea\u05e0\u05d4\u05d2\u05d5\u05ea \u05de\u05db\u05e1\u05d7\u05d5\u05ea \u05d4\u05d3\u05e9\u05d0 \u05d4\u05de\u05d9\u05d5\u05e2\u05d3\u05d5\u05ea \u05dc\u05d4\u05e4\u05e2\u05dc\u05d4.",
36
+ "name": "\u05d4\u05ea\u05e0\u05d4\u05d2\u05d5\u05ea"
37
+ }
38
+ }
39
+ },
40
+ "started_mowing": {
41
+ "fields": {
42
+ "behavior": {
43
+ "description": "\u05d4\u05ea\u05e0\u05d4\u05d2\u05d5\u05ea \u05de\u05db\u05e1\u05d7\u05d5\u05ea \u05d4\u05d3\u05e9\u05d0 \u05d4\u05de\u05d9\u05d5\u05e2\u05d3\u05d5\u05ea \u05dc\u05d4\u05e4\u05e2\u05dc\u05d4.",
44
+ "name": "\u05d4\u05ea\u05e0\u05d4\u05d2\u05d5\u05ea"
45
+ }
46
+ }
47
+ }
10
48
  }
11
49
  }