homeassistant 2025.7.4__py3-none-any.whl → 2025.8.0b0__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 (2985) hide show
  1. homeassistant/bootstrap.py +31 -38
  2. homeassistant/brands/frient.json +5 -0
  3. homeassistant/brands/third_reality.json +1 -1
  4. homeassistant/brands/ubiquiti.json +1 -1
  5. homeassistant/components/accuweather/translations/ga.json +6 -0
  6. homeassistant/components/aemet/translations/de.json +1 -1
  7. homeassistant/components/ai_task/__init__.py +34 -2
  8. homeassistant/components/ai_task/const.py +6 -0
  9. homeassistant/components/ai_task/entity.py +7 -4
  10. homeassistant/components/ai_task/manifest.json +2 -1
  11. homeassistant/components/ai_task/services.yaml +17 -3
  12. homeassistant/components/ai_task/strings.json +8 -0
  13. homeassistant/components/ai_task/task.py +100 -6
  14. homeassistant/components/ai_task/translations/bg.json +11 -1
  15. homeassistant/components/ai_task/translations/cs.json +8 -0
  16. homeassistant/components/ai_task/translations/de.json +8 -0
  17. homeassistant/components/ai_task/translations/el.json +8 -0
  18. homeassistant/components/ai_task/translations/en-GB.json +8 -0
  19. homeassistant/components/ai_task/translations/en.json +8 -0
  20. homeassistant/components/ai_task/translations/es.json +8 -0
  21. homeassistant/components/ai_task/translations/et.json +8 -0
  22. homeassistant/components/ai_task/translations/fr.json +7 -0
  23. homeassistant/components/ai_task/translations/ga.json +8 -0
  24. homeassistant/components/ai_task/translations/ja.json +8 -0
  25. homeassistant/components/ai_task/translations/lt.json +8 -0
  26. homeassistant/components/ai_task/translations/nl.json +3 -0
  27. homeassistant/components/ai_task/translations/pt.json +8 -0
  28. homeassistant/components/ai_task/translations/ru.json +7 -0
  29. homeassistant/components/ai_task/translations/sk.json +8 -0
  30. homeassistant/components/ai_task/translations/zh-Hans.json +8 -0
  31. homeassistant/components/ai_task/translations/zh-Hant.json +8 -0
  32. homeassistant/components/airgradient/manifest.json +1 -0
  33. homeassistant/components/airgradient/quality_scale.yaml +14 -18
  34. homeassistant/components/airgradient/translations/ga.json +15 -0
  35. homeassistant/components/airly/translations/de.json +1 -1
  36. homeassistant/components/airnow/__init__.py +0 -8
  37. homeassistant/components/airnow/config_flow.py +2 -2
  38. homeassistant/components/airnow/translations/de.json +1 -1
  39. homeassistant/components/airos/__init__.py +42 -0
  40. homeassistant/components/airos/config_flow.py +82 -0
  41. homeassistant/components/airos/const.py +9 -0
  42. homeassistant/components/airos/coordinator.py +66 -0
  43. homeassistant/components/airos/entity.py +36 -0
  44. homeassistant/components/airos/manifest.json +10 -0
  45. homeassistant/components/airos/quality_scale.yaml +72 -0
  46. homeassistant/components/airos/sensor.py +152 -0
  47. homeassistant/components/airos/strings.json +87 -0
  48. homeassistant/components/airos/translations/bg.json +75 -0
  49. homeassistant/components/airos/translations/cs.json +87 -0
  50. homeassistant/components/airos/translations/de.json +87 -0
  51. homeassistant/components/airos/translations/en.json +87 -0
  52. homeassistant/components/airos/translations/es.json +87 -0
  53. homeassistant/components/airos/translations/et.json +87 -0
  54. homeassistant/components/airos/translations/ga.json +70 -0
  55. homeassistant/components/airos/translations/zh-Hans.json +87 -0
  56. homeassistant/components/airos/translations/zh-Hant.json +87 -0
  57. homeassistant/components/airq/const.py +0 -1
  58. homeassistant/components/airq/icons.json +0 -3
  59. homeassistant/components/airq/sensor.py +3 -5
  60. homeassistant/components/airq/strings.json +0 -3
  61. homeassistant/components/airq/translations/bg.json +0 -3
  62. homeassistant/components/airq/translations/ca.json +0 -3
  63. homeassistant/components/airq/translations/cs.json +0 -3
  64. homeassistant/components/airq/translations/de.json +0 -3
  65. homeassistant/components/airq/translations/el.json +0 -3
  66. homeassistant/components/airq/translations/en-GB.json +0 -3
  67. homeassistant/components/airq/translations/en.json +0 -3
  68. homeassistant/components/airq/translations/es.json +0 -3
  69. homeassistant/components/airq/translations/et.json +0 -3
  70. homeassistant/components/airq/translations/fi.json +0 -3
  71. homeassistant/components/airq/translations/fr.json +0 -3
  72. homeassistant/components/airq/translations/ga.json +16 -0
  73. homeassistant/components/airq/translations/hu.json +0 -3
  74. homeassistant/components/airq/translations/id.json +0 -3
  75. homeassistant/components/airq/translations/it.json +0 -3
  76. homeassistant/components/airq/translations/ja.json +0 -3
  77. homeassistant/components/airq/translations/ko.json +0 -3
  78. homeassistant/components/airq/translations/lt.json +0 -3
  79. homeassistant/components/airq/translations/nl.json +0 -3
  80. homeassistant/components/airq/translations/pl.json +0 -3
  81. homeassistant/components/airq/translations/pt-BR.json +0 -3
  82. homeassistant/components/airq/translations/pt.json +0 -3
  83. homeassistant/components/airq/translations/ro.json +0 -3
  84. homeassistant/components/airq/translations/ru.json +0 -3
  85. homeassistant/components/airq/translations/sk.json +0 -3
  86. homeassistant/components/airq/translations/sv.json +0 -3
  87. homeassistant/components/airq/translations/tr.json +0 -3
  88. homeassistant/components/airq/translations/uk.json +0 -3
  89. homeassistant/components/airq/translations/zh-Hans.json +0 -3
  90. homeassistant/components/airq/translations/zh-Hant.json +0 -3
  91. homeassistant/components/airthings/config_flow.py +2 -3
  92. homeassistant/components/airthings/sensor.py +2 -2
  93. homeassistant/components/airzone_cloud/manifest.json +1 -1
  94. homeassistant/components/alexa_devices/__init__.py +15 -6
  95. homeassistant/components/alexa_devices/config_flow.py +75 -9
  96. homeassistant/components/alexa_devices/coordinator.py +22 -5
  97. homeassistant/components/alexa_devices/icons.json +8 -0
  98. homeassistant/components/alexa_devices/manifest.json +2 -2
  99. homeassistant/components/alexa_devices/quality_scale.yaml +14 -16
  100. homeassistant/components/alexa_devices/services.py +121 -0
  101. homeassistant/components/alexa_devices/services.yaml +504 -0
  102. homeassistant/components/alexa_devices/strings.json +536 -3
  103. homeassistant/components/alexa_devices/translations/bg.json +11 -0
  104. homeassistant/components/alexa_devices/translations/ca.json +6 -0
  105. homeassistant/components/alexa_devices/translations/cs.json +14 -2
  106. homeassistant/components/alexa_devices/translations/de.json +62 -3
  107. homeassistant/components/alexa_devices/translations/el.json +15 -3
  108. homeassistant/components/alexa_devices/translations/en-GB.json +14 -2
  109. homeassistant/components/alexa_devices/translations/en.json +536 -3
  110. homeassistant/components/alexa_devices/translations/es.json +14 -2
  111. homeassistant/components/alexa_devices/translations/et.json +14 -2
  112. homeassistant/components/alexa_devices/translations/ga.json +398 -2
  113. homeassistant/components/alexa_devices/translations/he.json +6 -0
  114. homeassistant/components/alexa_devices/translations/hu.json +0 -8
  115. homeassistant/components/alexa_devices/translations/it.json +0 -8
  116. homeassistant/components/alexa_devices/translations/ja.json +14 -2
  117. homeassistant/components/alexa_devices/translations/lt.json +14 -2
  118. homeassistant/components/alexa_devices/translations/mk.json +5 -1
  119. homeassistant/components/alexa_devices/translations/nl.json +6 -8
  120. homeassistant/components/alexa_devices/translations/pt.json +14 -2
  121. homeassistant/components/alexa_devices/translations/ru.json +20 -0
  122. homeassistant/components/alexa_devices/translations/sk.json +14 -2
  123. homeassistant/components/alexa_devices/translations/sv.json +11 -8
  124. homeassistant/components/alexa_devices/translations/zh-Hans.json +14 -2
  125. homeassistant/components/alexa_devices/translations/zh-Hant.json +14 -2
  126. homeassistant/components/alexa_devices/utils.py +2 -2
  127. homeassistant/components/amberelectric/__init__.py +12 -1
  128. homeassistant/components/amberelectric/const.py +11 -1
  129. homeassistant/components/amberelectric/coordinator.py +2 -23
  130. homeassistant/components/amberelectric/helpers.py +25 -0
  131. homeassistant/components/amberelectric/icons.json +5 -0
  132. homeassistant/components/amberelectric/sensor.py +2 -6
  133. homeassistant/components/amberelectric/services.py +121 -0
  134. homeassistant/components/amberelectric/services.yaml +16 -0
  135. homeassistant/components/amberelectric/strings.json +46 -10
  136. homeassistant/components/amberelectric/translations/cs.json +36 -0
  137. homeassistant/components/amberelectric/translations/de.json +37 -1
  138. homeassistant/components/amberelectric/translations/el.json +36 -0
  139. homeassistant/components/amberelectric/translations/en-GB.json +36 -0
  140. homeassistant/components/amberelectric/translations/en.json +36 -0
  141. homeassistant/components/amberelectric/translations/es.json +36 -0
  142. homeassistant/components/amberelectric/translations/et.json +36 -0
  143. homeassistant/components/amberelectric/translations/ga.json +36 -0
  144. homeassistant/components/amberelectric/translations/lt.json +36 -0
  145. homeassistant/components/amberelectric/translations/mk.json +19 -1
  146. homeassistant/components/amberelectric/translations/nb.json +14 -0
  147. homeassistant/components/amberelectric/translations/sk.json +36 -0
  148. homeassistant/components/amberelectric/translations/zh-Hans.json +36 -0
  149. homeassistant/components/amberelectric/translations/zh-Hant.json +36 -0
  150. homeassistant/components/amcrest/manifest.json +1 -1
  151. homeassistant/components/analytics/__init__.py +3 -0
  152. homeassistant/components/analytics/analytics.py +87 -2
  153. homeassistant/components/analytics/http.py +27 -0
  154. homeassistant/components/analytics/manifest.json +1 -1
  155. homeassistant/components/analytics_insights/__init__.py +0 -8
  156. homeassistant/components/analytics_insights/config_flow.py +6 -2
  157. homeassistant/components/androidtv/media_player.py +1 -1
  158. homeassistant/components/androidtv_remote/__init__.py +6 -21
  159. homeassistant/components/androidtv_remote/config_flow.py +35 -18
  160. homeassistant/components/androidtv_remote/diagnostics.py +1 -1
  161. homeassistant/components/androidtv_remote/entity.py +4 -2
  162. homeassistant/components/androidtv_remote/helpers.py +4 -2
  163. homeassistant/components/androidtv_remote/manifest.json +1 -1
  164. homeassistant/components/androidtv_remote/media_player.py +10 -10
  165. homeassistant/components/androidtv_remote/remote.py +3 -2
  166. homeassistant/components/androidtv_remote/strings.json +26 -3
  167. homeassistant/components/androidtv_remote/translations/bg.json +7 -1
  168. homeassistant/components/androidtv_remote/translations/ca.json +7 -1
  169. homeassistant/components/androidtv_remote/translations/cs.json +25 -2
  170. homeassistant/components/androidtv_remote/translations/de.json +25 -2
  171. homeassistant/components/androidtv_remote/translations/el.json +25 -2
  172. homeassistant/components/androidtv_remote/translations/en-GB.json +25 -2
  173. homeassistant/components/androidtv_remote/translations/en.json +25 -2
  174. homeassistant/components/androidtv_remote/translations/es.json +25 -2
  175. homeassistant/components/androidtv_remote/translations/et.json +25 -2
  176. homeassistant/components/androidtv_remote/translations/ga.json +32 -1
  177. homeassistant/components/androidtv_remote/translations/he.json +25 -2
  178. homeassistant/components/androidtv_remote/translations/ja.json +19 -1
  179. homeassistant/components/androidtv_remote/translations/lt.json +25 -2
  180. homeassistant/components/androidtv_remote/translations/nl.json +7 -1
  181. homeassistant/components/androidtv_remote/translations/pt.json +25 -2
  182. homeassistant/components/androidtv_remote/translations/sk.json +25 -2
  183. homeassistant/components/androidtv_remote/translations/sv.json +7 -1
  184. homeassistant/components/androidtv_remote/translations/zh-Hans.json +25 -2
  185. homeassistant/components/androidtv_remote/translations/zh-Hant.json +25 -2
  186. homeassistant/components/anova/translations/ga.json +23 -0
  187. homeassistant/components/anthemav/strings.json +1 -1
  188. homeassistant/components/anthropic/__init__.py +9 -0
  189. homeassistant/components/anthropic/const.py +2 -2
  190. homeassistant/components/anthropic/conversation.py +9 -405
  191. homeassistant/components/anthropic/entity.py +395 -0
  192. homeassistant/components/anthropic/strings.json +1 -1
  193. homeassistant/components/anthropic/translations/ga.json +1 -0
  194. homeassistant/components/apcupsd/translations/es.json +3 -3
  195. homeassistant/components/apple_tv/manifest.json +1 -1
  196. homeassistant/components/apple_tv/media_player.py +2 -2
  197. homeassistant/components/aprilaire/translations/ga.json +18 -0
  198. homeassistant/components/apsystems/translations/ga.json +29 -0
  199. homeassistant/components/arcam_fmj/manifest.json +1 -1
  200. homeassistant/components/assist_pipeline/__init__.py +0 -4
  201. homeassistant/components/assist_pipeline/const.py +0 -1
  202. homeassistant/components/assist_pipeline/pipeline.py +1 -46
  203. homeassistant/components/assist_satellite/__init__.py +4 -4
  204. homeassistant/components/assist_satellite/services.yaml +4 -3
  205. homeassistant/components/august/manifest.json +1 -1
  206. homeassistant/components/august/translations/ga.json +9 -0
  207. homeassistant/components/awair/const.py +1 -0
  208. homeassistant/components/awair/sensor.py +10 -0
  209. homeassistant/components/awair/strings.json +3 -0
  210. homeassistant/components/awair/translations/cs.json +3 -0
  211. homeassistant/components/awair/translations/de.json +3 -0
  212. homeassistant/components/awair/translations/el.json +3 -0
  213. homeassistant/components/awair/translations/en-GB.json +3 -0
  214. homeassistant/components/awair/translations/en.json +3 -0
  215. homeassistant/components/awair/translations/es.json +3 -0
  216. homeassistant/components/awair/translations/et.json +3 -0
  217. homeassistant/components/awair/translations/ga.json +9 -1
  218. homeassistant/components/awair/translations/ja.json +3 -0
  219. homeassistant/components/awair/translations/lt.json +3 -0
  220. homeassistant/components/awair/translations/mk.json +3 -0
  221. homeassistant/components/awair/translations/nl.json +3 -0
  222. homeassistant/components/awair/translations/pt.json +3 -0
  223. homeassistant/components/awair/translations/ru.json +3 -0
  224. homeassistant/components/awair/translations/sk.json +3 -0
  225. homeassistant/components/awair/translations/zh-Hans.json +3 -0
  226. homeassistant/components/awair/translations/zh-Hant.json +3 -0
  227. homeassistant/components/axis/__init__.py +3 -1
  228. homeassistant/components/azure_data_explorer/translations/ga.json +8 -1
  229. homeassistant/components/azure_devops/translations/ga.json +27 -0
  230. homeassistant/components/backup/__init__.py +18 -34
  231. homeassistant/components/backup/coordinator.py +2 -6
  232. homeassistant/components/backup/manager.py +30 -7
  233. homeassistant/components/backup/onboarding.py +8 -3
  234. homeassistant/components/backup/services.py +36 -0
  235. homeassistant/components/backup/websocket.py +25 -1
  236. homeassistant/components/bang_olufsen/strings.json +4 -4
  237. homeassistant/components/bang_olufsen/translations/cs.json +4 -0
  238. homeassistant/components/bang_olufsen/translations/fr.json +16 -0
  239. homeassistant/components/bauknecht/__init__.py +1 -0
  240. homeassistant/components/bauknecht/manifest.json +6 -0
  241. homeassistant/components/blink/translations/ga.json +11 -0
  242. homeassistant/components/blue_current/__init__.py +33 -14
  243. homeassistant/components/blue_current/const.py +11 -0
  244. homeassistant/components/blue_current/icons.json +11 -0
  245. homeassistant/components/blue_current/manifest.json +1 -1
  246. homeassistant/components/blue_current/strings.json +11 -0
  247. homeassistant/components/blue_current/switch.py +169 -0
  248. homeassistant/components/blue_current/translations/cs.json +11 -0
  249. homeassistant/components/blue_current/translations/de.json +11 -0
  250. homeassistant/components/blue_current/translations/el.json +8 -0
  251. homeassistant/components/blue_current/translations/en-GB.json +11 -0
  252. homeassistant/components/blue_current/translations/en.json +11 -0
  253. homeassistant/components/blue_current/translations/es.json +11 -0
  254. homeassistant/components/blue_current/translations/et.json +11 -0
  255. homeassistant/components/blue_current/translations/fi.json +11 -0
  256. homeassistant/components/blue_current/translations/ga.json +11 -0
  257. homeassistant/components/blue_current/translations/sk.json +11 -0
  258. homeassistant/components/blue_current/translations/zh-Hans.json +11 -0
  259. homeassistant/components/blue_current/translations/zh-Hant.json +11 -0
  260. homeassistant/components/bluesound/manifest.json +1 -1
  261. homeassistant/components/bluetooth/manifest.json +5 -5
  262. homeassistant/components/bmw_connected_drive/translations/es.json +1 -1
  263. homeassistant/components/bmw_connected_drive/translations/ga.json +25 -1
  264. homeassistant/components/bosch_alarm/__init__.py +2 -2
  265. homeassistant/components/bosch_alarm/services.py +3 -2
  266. homeassistant/components/bring/__init__.py +13 -0
  267. homeassistant/components/bring/const.py +4 -1
  268. homeassistant/components/bring/icons.json +3 -0
  269. homeassistant/components/bring/services.py +110 -0
  270. homeassistant/components/bring/services.yaml +25 -0
  271. homeassistant/components/bring/strings.json +27 -0
  272. homeassistant/components/bring/translations/bg.json +11 -0
  273. homeassistant/components/bring/translations/ca.json +12 -0
  274. homeassistant/components/bring/translations/cs.json +26 -0
  275. homeassistant/components/bring/translations/de.json +26 -0
  276. homeassistant/components/bring/translations/el.json +26 -0
  277. homeassistant/components/bring/translations/en-GB.json +26 -0
  278. homeassistant/components/bring/translations/en.json +26 -0
  279. homeassistant/components/bring/translations/es.json +26 -0
  280. homeassistant/components/bring/translations/et.json +26 -0
  281. homeassistant/components/bring/translations/ga.json +28 -0
  282. homeassistant/components/bring/translations/it.json +3 -0
  283. homeassistant/components/bring/translations/lt.json +26 -0
  284. homeassistant/components/bring/translations/mk.json +14 -0
  285. homeassistant/components/bring/translations/pt.json +26 -0
  286. homeassistant/components/bring/translations/sk.json +26 -0
  287. homeassistant/components/bring/translations/zh-Hans.json +26 -0
  288. homeassistant/components/bring/translations/zh-Hant.json +26 -0
  289. homeassistant/components/broadlink/const.py +1 -0
  290. homeassistant/components/broadlink/sensor.py +19 -0
  291. homeassistant/components/broadlink/updater.py +11 -0
  292. homeassistant/components/brother/manifest.json +1 -1
  293. homeassistant/components/bsblan/config_flow.py +130 -14
  294. homeassistant/components/bsblan/manifest.json +7 -1
  295. homeassistant/components/bsblan/sensor.py +2 -0
  296. homeassistant/components/bsblan/strings.json +19 -1
  297. homeassistant/components/bsblan/translations/bg.json +6 -0
  298. homeassistant/components/bsblan/translations/ca.json +7 -0
  299. homeassistant/components/bsblan/translations/cs.json +19 -1
  300. homeassistant/components/bsblan/translations/de.json +19 -1
  301. homeassistant/components/bsblan/translations/el.json +19 -1
  302. homeassistant/components/bsblan/translations/en-GB.json +19 -1
  303. homeassistant/components/bsblan/translations/en.json +19 -1
  304. homeassistant/components/bsblan/translations/es.json +19 -1
  305. homeassistant/components/bsblan/translations/et.json +19 -1
  306. homeassistant/components/bsblan/translations/ga.json +21 -0
  307. homeassistant/components/bsblan/translations/he.json +6 -0
  308. homeassistant/components/bsblan/translations/lt.json +19 -1
  309. homeassistant/components/bsblan/translations/nl.json +7 -0
  310. homeassistant/components/bsblan/translations/pt.json +19 -1
  311. homeassistant/components/bsblan/translations/sk.json +19 -1
  312. homeassistant/components/bsblan/translations/sv.json +19 -1
  313. homeassistant/components/bsblan/translations/zh-Hans.json +19 -1
  314. homeassistant/components/bsblan/translations/zh-Hant.json +19 -1
  315. homeassistant/components/bthome/coordinator.py +1 -1
  316. homeassistant/components/bthome/device_trigger.py +1 -1
  317. homeassistant/components/cambridge_audio/media_player.py +1 -1
  318. homeassistant/components/cloud/backup.py +6 -15
  319. homeassistant/components/cloud/client.py +2 -1
  320. homeassistant/components/cloud/http_api.py +1 -1
  321. homeassistant/components/cloud/manifest.json +1 -1
  322. homeassistant/components/cloud/repairs.py +3 -3
  323. homeassistant/components/cloud/strings.json +4 -0
  324. homeassistant/components/cloud/subscription.py +5 -12
  325. homeassistant/components/cloud/translations/cs.json +4 -0
  326. homeassistant/components/cloud/translations/de.json +4 -0
  327. homeassistant/components/cloud/translations/el.json +4 -0
  328. homeassistant/components/cloud/translations/en-GB.json +4 -0
  329. homeassistant/components/cloud/translations/en.json +4 -0
  330. homeassistant/components/cloud/translations/es.json +4 -0
  331. homeassistant/components/cloud/translations/et.json +4 -0
  332. homeassistant/components/cloud/translations/fr.json +4 -0
  333. homeassistant/components/cloud/translations/ga.json +4 -0
  334. homeassistant/components/cloud/translations/ru.json +4 -0
  335. homeassistant/components/cloud/translations/sk.json +4 -0
  336. homeassistant/components/cloud/translations/zh-Hans.json +4 -0
  337. homeassistant/components/cloud/translations/zh-Hant.json +4 -0
  338. homeassistant/components/cloud/tts.py +31 -4
  339. homeassistant/components/command_line/sensor.py +1 -12
  340. homeassistant/components/compensation/__init__.py +17 -7
  341. homeassistant/components/compensation/manifest.json +1 -1
  342. homeassistant/components/compensation/sensor.py +55 -27
  343. homeassistant/components/control4/__init__.py +9 -15
  344. homeassistant/components/control4/config_flow.py +6 -2
  345. homeassistant/components/conversation/__init__.py +4 -11
  346. homeassistant/components/conversation/agent_manager.py +2 -7
  347. homeassistant/components/conversation/chat_log.py +18 -0
  348. homeassistant/components/conversation/const.py +0 -1
  349. homeassistant/components/conversation/util.py +47 -0
  350. homeassistant/components/coolmaster/__init__.py +13 -1
  351. homeassistant/components/cover/translations/da.json +2 -1
  352. homeassistant/components/daikin/translations/ga.json +9 -0
  353. homeassistant/components/datadog/__init__.py +64 -34
  354. homeassistant/components/datadog/config_flow.py +203 -0
  355. homeassistant/components/datadog/const.py +10 -0
  356. homeassistant/components/datadog/manifest.json +2 -1
  357. homeassistant/components/datadog/strings.json +56 -0
  358. homeassistant/components/datadog/translations/bg.json +28 -0
  359. homeassistant/components/datadog/translations/cs.json +56 -0
  360. homeassistant/components/datadog/translations/de.json +56 -0
  361. homeassistant/components/datadog/translations/el.json +56 -0
  362. homeassistant/components/datadog/translations/en-GB.json +56 -0
  363. homeassistant/components/datadog/translations/en.json +56 -0
  364. homeassistant/components/datadog/translations/es.json +56 -0
  365. homeassistant/components/datadog/translations/et.json +56 -0
  366. homeassistant/components/datadog/translations/ga.json +40 -0
  367. homeassistant/components/datadog/translations/he.json +28 -0
  368. homeassistant/components/datadog/translations/mk.json +14 -0
  369. homeassistant/components/datadog/translations/nl.json +28 -0
  370. homeassistant/components/datadog/translations/ru.json +56 -0
  371. homeassistant/components/datadog/translations/sk.json +56 -0
  372. homeassistant/components/datadog/translations/zh-Hans.json +56 -0
  373. homeassistant/components/datadog/translations/zh-Hant.json +56 -0
  374. homeassistant/components/demo/vacuum.py +6 -19
  375. homeassistant/components/denonavr/__init__.py +0 -9
  376. homeassistant/components/denonavr/config_flow.py +6 -2
  377. homeassistant/components/derivative/__init__.py +58 -6
  378. homeassistant/components/derivative/config_flow.py +4 -0
  379. homeassistant/components/derivative/sensor.py +83 -45
  380. homeassistant/components/derivative/strings.json +5 -0
  381. homeassistant/components/derivative/translations/ca.json +5 -0
  382. homeassistant/components/derivative/translations/cs.json +5 -0
  383. homeassistant/components/derivative/translations/de.json +5 -0
  384. homeassistant/components/derivative/translations/el.json +5 -0
  385. homeassistant/components/derivative/translations/en-GB.json +5 -0
  386. homeassistant/components/derivative/translations/en.json +5 -0
  387. homeassistant/components/derivative/translations/es.json +5 -0
  388. homeassistant/components/derivative/translations/et.json +5 -0
  389. homeassistant/components/derivative/translations/fr.json +5 -0
  390. homeassistant/components/derivative/translations/ga.json +7 -0
  391. homeassistant/components/derivative/translations/ja.json +5 -0
  392. homeassistant/components/derivative/translations/lt.json +5 -0
  393. homeassistant/components/derivative/translations/nl.json +5 -0
  394. homeassistant/components/derivative/translations/pt.json +5 -0
  395. homeassistant/components/derivative/translations/sk.json +5 -0
  396. homeassistant/components/derivative/translations/sv.json +5 -0
  397. homeassistant/components/derivative/translations/zh-Hans.json +5 -0
  398. homeassistant/components/derivative/translations/zh-Hant.json +5 -0
  399. homeassistant/components/devolo_home_control/config_flow.py +49 -60
  400. homeassistant/components/devolo_home_control/entity.py +28 -3
  401. homeassistant/components/devolo_home_control/strings.json +1 -1
  402. homeassistant/components/devolo_home_network/coordinator.py +4 -3
  403. homeassistant/components/devolo_home_network/device_tracker.py +13 -22
  404. homeassistant/components/devolo_home_network/entity.py +1 -1
  405. homeassistant/components/devolo_home_network/manifest.json +1 -0
  406. homeassistant/components/devolo_home_network/quality_scale.yaml +84 -0
  407. homeassistant/components/devolo_home_network/sensor.py +6 -2
  408. homeassistant/components/devolo_home_network/strings.json +4 -4
  409. homeassistant/components/diagnostics/__init__.py +14 -2
  410. homeassistant/components/discovergy/__init__.py +7 -2
  411. homeassistant/components/discovergy/coordinator.py +9 -2
  412. homeassistant/components/discovergy/manifest.json +1 -1
  413. homeassistant/components/discovergy/quality_scale.yaml +16 -9
  414. homeassistant/components/discovergy/strings.json +11 -0
  415. homeassistant/components/discovergy/translations/cs.json +11 -0
  416. homeassistant/components/discovergy/translations/de.json +11 -0
  417. homeassistant/components/discovergy/translations/el.json +11 -0
  418. homeassistant/components/discovergy/translations/en-GB.json +11 -0
  419. homeassistant/components/discovergy/translations/en.json +11 -0
  420. homeassistant/components/discovergy/translations/es.json +11 -0
  421. homeassistant/components/discovergy/translations/et.json +11 -0
  422. homeassistant/components/discovergy/translations/ga.json +11 -0
  423. homeassistant/components/discovergy/translations/lt.json +11 -0
  424. homeassistant/components/discovergy/translations/nb.json +11 -0
  425. homeassistant/components/discovergy/translations/sk.json +11 -0
  426. homeassistant/components/discovergy/translations/sv.json +8 -0
  427. homeassistant/components/discovergy/translations/zh-Hans.json +11 -0
  428. homeassistant/components/discovergy/translations/zh-Hant.json +11 -0
  429. homeassistant/components/dnsip/__init__.py +0 -6
  430. homeassistant/components/dnsip/config_flow.py +5 -2
  431. homeassistant/components/dnsip/strings.json +2 -1
  432. homeassistant/components/dnsip/translations/cs.json +2 -1
  433. homeassistant/components/dnsip/translations/de.json +2 -1
  434. homeassistant/components/dnsip/translations/el.json +2 -1
  435. homeassistant/components/dnsip/translations/en-GB.json +2 -1
  436. homeassistant/components/dnsip/translations/en.json +2 -1
  437. homeassistant/components/dnsip/translations/es.json +2 -1
  438. homeassistant/components/dnsip/translations/et.json +2 -1
  439. homeassistant/components/dnsip/translations/ga.json +3 -0
  440. homeassistant/components/dnsip/translations/he.json +2 -1
  441. homeassistant/components/dnsip/translations/ja.json +2 -1
  442. homeassistant/components/dnsip/translations/lt.json +2 -1
  443. homeassistant/components/dnsip/translations/pt.json +2 -1
  444. homeassistant/components/dnsip/translations/sk.json +2 -1
  445. homeassistant/components/dnsip/translations/sv.json +2 -1
  446. homeassistant/components/dnsip/translations/zh-Hans.json +2 -1
  447. homeassistant/components/dnsip/translations/zh-Hant.json +2 -1
  448. homeassistant/components/dominos/strings.json +2 -2
  449. homeassistant/components/doods/manifest.json +1 -1
  450. homeassistant/components/downloader/services.py +3 -5
  451. homeassistant/components/dsmr/strings.json +1 -1
  452. homeassistant/components/dsmr/translations/fr.json +2 -1
  453. homeassistant/components/dsmr_reader/strings.json +1 -1
  454. homeassistant/components/dsmr_reader/translations/ga.json +8 -0
  455. homeassistant/components/dwd_weather_warnings/strings.json +2 -2
  456. homeassistant/components/dynalite/__init__.py +2 -2
  457. homeassistant/components/dynalite/services.py +1 -1
  458. homeassistant/components/ecovacs/binary_sensor.py +49 -2
  459. homeassistant/components/ecovacs/sensor.py +48 -2
  460. homeassistant/components/ecovacs/vacuum.py +2 -30
  461. homeassistant/components/ecowitt/sensor.py +3 -0
  462. homeassistant/components/eheimdigital/config_flow.py +55 -1
  463. homeassistant/components/eheimdigital/manifest.json +2 -2
  464. homeassistant/components/eheimdigital/quality_scale.yaml +10 -8
  465. homeassistant/components/eheimdigital/strings.json +11 -1
  466. homeassistant/components/eheimdigital/translations/bg.json +7 -1
  467. homeassistant/components/eheimdigital/translations/ca.json +7 -1
  468. homeassistant/components/eheimdigital/translations/cs.json +11 -1
  469. homeassistant/components/eheimdigital/translations/de.json +11 -1
  470. homeassistant/components/eheimdigital/translations/el.json +11 -1
  471. homeassistant/components/eheimdigital/translations/en-GB.json +11 -1
  472. homeassistant/components/eheimdigital/translations/en.json +11 -1
  473. homeassistant/components/eheimdigital/translations/es.json +11 -1
  474. homeassistant/components/eheimdigital/translations/et.json +11 -1
  475. homeassistant/components/eheimdigital/translations/ga.json +8 -0
  476. homeassistant/components/eheimdigital/translations/he.json +7 -1
  477. homeassistant/components/eheimdigital/translations/ja.json +11 -1
  478. homeassistant/components/eheimdigital/translations/lt.json +11 -1
  479. homeassistant/components/eheimdigital/translations/nl.json +7 -1
  480. homeassistant/components/eheimdigital/translations/pt.json +11 -1
  481. homeassistant/components/eheimdigital/translations/ru.json +8 -0
  482. homeassistant/components/eheimdigital/translations/sk.json +11 -1
  483. homeassistant/components/eheimdigital/translations/sv.json +11 -1
  484. homeassistant/components/eheimdigital/translations/zh-Hans.json +11 -1
  485. homeassistant/components/eheimdigital/translations/zh-Hant.json +11 -1
  486. homeassistant/components/elevenlabs/__init__.py +2 -1
  487. homeassistant/components/elevenlabs/config_flow.py +9 -11
  488. homeassistant/components/elevenlabs/const.py +0 -2
  489. homeassistant/components/elevenlabs/manifest.json +1 -1
  490. homeassistant/components/elevenlabs/strings.json +2 -3
  491. homeassistant/components/elevenlabs/translations/bg.json +2 -1
  492. homeassistant/components/elevenlabs/translations/ca.json +2 -2
  493. homeassistant/components/elevenlabs/translations/cs.json +2 -3
  494. homeassistant/components/elevenlabs/translations/de.json +2 -3
  495. homeassistant/components/elevenlabs/translations/el.json +2 -3
  496. homeassistant/components/elevenlabs/translations/en-GB.json +2 -3
  497. homeassistant/components/elevenlabs/translations/en.json +2 -3
  498. homeassistant/components/elevenlabs/translations/es.json +2 -3
  499. homeassistant/components/elevenlabs/translations/et.json +2 -3
  500. homeassistant/components/elevenlabs/translations/fr.json +2 -3
  501. homeassistant/components/elevenlabs/translations/ga.json +0 -2
  502. homeassistant/components/elevenlabs/translations/he.json +2 -1
  503. homeassistant/components/elevenlabs/translations/hu.json +0 -2
  504. homeassistant/components/elevenlabs/translations/ja.json +0 -2
  505. homeassistant/components/elevenlabs/translations/lt.json +2 -3
  506. homeassistant/components/elevenlabs/translations/nl.json +2 -2
  507. homeassistant/components/elevenlabs/translations/pt.json +0 -2
  508. homeassistant/components/elevenlabs/translations/ru.json +0 -2
  509. homeassistant/components/elevenlabs/translations/sk.json +2 -3
  510. homeassistant/components/elevenlabs/translations/sv.json +0 -2
  511. homeassistant/components/elevenlabs/translations/tr.json +0 -2
  512. homeassistant/components/elevenlabs/translations/zh-Hans.json +2 -3
  513. homeassistant/components/elevenlabs/translations/zh-Hant.json +2 -3
  514. homeassistant/components/elevenlabs/tts.py +4 -11
  515. homeassistant/components/emoncms/__init__.py +0 -6
  516. homeassistant/components/emoncms/config_flow.py +72 -3
  517. homeassistant/components/emoncms/const.py +3 -0
  518. homeassistant/components/emoncms/strings.json +13 -2
  519. homeassistant/components/emoncms/translations/bg.json +2 -1
  520. homeassistant/components/emoncms/translations/ca.json +2 -1
  521. homeassistant/components/emoncms/translations/cs.json +12 -1
  522. homeassistant/components/emoncms/translations/de.json +12 -1
  523. homeassistant/components/emoncms/translations/el.json +12 -1
  524. homeassistant/components/emoncms/translations/en-GB.json +12 -1
  525. homeassistant/components/emoncms/translations/en.json +12 -1
  526. homeassistant/components/emoncms/translations/es.json +12 -1
  527. homeassistant/components/emoncms/translations/et.json +12 -1
  528. homeassistant/components/emoncms/translations/ga.json +13 -1
  529. homeassistant/components/emoncms/translations/he.json +3 -0
  530. homeassistant/components/emoncms/translations/it.json +9 -0
  531. homeassistant/components/emoncms/translations/ja.json +12 -1
  532. homeassistant/components/emoncms/translations/lt.json +12 -1
  533. homeassistant/components/emoncms/translations/nl.json +12 -0
  534. homeassistant/components/emoncms/translations/pt.json +12 -1
  535. homeassistant/components/emoncms/translations/sk.json +12 -1
  536. homeassistant/components/emoncms/translations/sv.json +9 -0
  537. homeassistant/components/emoncms/translations/zh-Hans.json +12 -1
  538. homeassistant/components/emoncms/translations/zh-Hant.json +12 -1
  539. homeassistant/components/energy/sensor.py +2 -7
  540. homeassistant/components/energy/validate.py +5 -14
  541. homeassistant/components/enphase_envoy/__init__.py +0 -9
  542. homeassistant/components/enphase_envoy/binary_sensor.py +2 -0
  543. homeassistant/components/enphase_envoy/config_flow.py +2 -2
  544. homeassistant/components/enphase_envoy/coordinator.py +8 -0
  545. homeassistant/components/enphase_envoy/manifest.json +1 -1
  546. homeassistant/components/enphase_envoy/number.py +1 -0
  547. homeassistant/components/enphase_envoy/select.py +1 -0
  548. homeassistant/components/enphase_envoy/sensor.py +3 -0
  549. homeassistant/components/enphase_envoy/strings.json +1 -1
  550. homeassistant/components/enphase_envoy/switch.py +2 -0
  551. homeassistant/components/eq3btsmart/manifest.json +1 -1
  552. homeassistant/components/esphome/alarm_control_panel.py +28 -7
  553. homeassistant/components/esphome/button.py +1 -1
  554. homeassistant/components/esphome/climate.py +14 -6
  555. homeassistant/components/esphome/config_flow.py +29 -1
  556. homeassistant/components/esphome/cover.py +25 -7
  557. homeassistant/components/esphome/date.py +7 -1
  558. homeassistant/components/esphome/datetime.py +3 -1
  559. homeassistant/components/esphome/encryption_key_storage.py +94 -0
  560. homeassistant/components/esphome/entity.py +74 -8
  561. homeassistant/components/esphome/entry_data.py +44 -27
  562. homeassistant/components/esphome/fan.py +17 -5
  563. homeassistant/components/esphome/light.py +2 -2
  564. homeassistant/components/esphome/lock.py +9 -3
  565. homeassistant/components/esphome/manager.py +96 -4
  566. homeassistant/components/esphome/manifest.json +3 -3
  567. homeassistant/components/esphome/media_player.py +23 -5
  568. homeassistant/components/esphome/number.py +3 -1
  569. homeassistant/components/esphome/select.py +3 -1
  570. homeassistant/components/esphome/switch.py +6 -2
  571. homeassistant/components/esphome/text.py +3 -1
  572. homeassistant/components/esphome/time.py +7 -1
  573. homeassistant/components/esphome/translations/ga.json +3 -0
  574. homeassistant/components/esphome/update.py +10 -2
  575. homeassistant/components/esphome/valve.py +14 -4
  576. homeassistant/components/ezviz/__init__.py +0 -7
  577. homeassistant/components/ezviz/config_flow.py +6 -2
  578. homeassistant/components/faa_delays/translations/es.json +1 -1
  579. homeassistant/components/feedreader/__init__.py +0 -9
  580. homeassistant/components/feedreader/config_flow.py +4 -5
  581. homeassistant/components/file/__init__.py +0 -6
  582. homeassistant/components/file/config_flow.py +2 -2
  583. homeassistant/components/file/translations/ga.json +10 -0
  584. homeassistant/components/flipr/sensor.py +1 -1
  585. homeassistant/components/folder_watcher/translations/ga.json +31 -0
  586. homeassistant/components/forecast_solar/__init__.py +0 -9
  587. homeassistant/components/forecast_solar/config_flow.py +2 -2
  588. homeassistant/components/fritz/__init__.py +0 -8
  589. homeassistant/components/fritz/config_flow.py +6 -2
  590. homeassistant/components/fritz/strings.json +1 -1
  591. homeassistant/components/fritzbox_callmonitor/__init__.py +0 -8
  592. homeassistant/components/fritzbox_callmonitor/config_flow.py +2 -2
  593. homeassistant/components/frontend/__init__.py +7 -0
  594. homeassistant/components/frontend/manifest.json +1 -1
  595. homeassistant/components/garages_amsterdam/manifest.json +1 -1
  596. homeassistant/components/gardena_bluetooth/__init__.py +2 -0
  597. homeassistant/components/gardena_bluetooth/number.py +6 -0
  598. homeassistant/components/gardena_bluetooth/translations/da.json +9 -0
  599. homeassistant/components/gardena_bluetooth/valve.py +6 -1
  600. homeassistant/components/generic/config_flow.py +5 -15
  601. homeassistant/components/generic/manifest.json +1 -1
  602. homeassistant/components/generic_hygrostat/__init__.py +44 -6
  603. homeassistant/components/generic_hygrostat/config_flow.py +2 -0
  604. homeassistant/components/generic_hygrostat/humidifier.py +19 -18
  605. homeassistant/components/generic_hygrostat/translations/ga.json +23 -4
  606. homeassistant/components/generic_thermostat/__init__.py +44 -6
  607. homeassistant/components/generic_thermostat/climate.py +20 -19
  608. homeassistant/components/generic_thermostat/config_flow.py +2 -0
  609. homeassistant/components/geo_location/trigger.py +6 -3
  610. homeassistant/components/gios/const.py +2 -0
  611. homeassistant/components/gios/icons.json +3 -0
  612. homeassistant/components/gios/sensor.py +18 -0
  613. homeassistant/components/gios/strings.json +3 -0
  614. homeassistant/components/gios/translations/cs.json +3 -0
  615. homeassistant/components/gios/translations/de.json +3 -0
  616. homeassistant/components/gios/translations/el.json +3 -0
  617. homeassistant/components/gios/translations/en-GB.json +3 -0
  618. homeassistant/components/gios/translations/en.json +3 -0
  619. homeassistant/components/gios/translations/es.json +3 -0
  620. homeassistant/components/gios/translations/et.json +3 -0
  621. homeassistant/components/gios/translations/ga.json +7 -0
  622. homeassistant/components/gios/translations/lt.json +3 -0
  623. homeassistant/components/gios/translations/pl.json +3 -0
  624. homeassistant/components/gios/translations/pt.json +3 -0
  625. homeassistant/components/gios/translations/ru.json +3 -0
  626. homeassistant/components/gios/translations/sk.json +3 -0
  627. homeassistant/components/gios/translations/zh-Hans.json +3 -0
  628. homeassistant/components/gios/translations/zh-Hant.json +3 -0
  629. homeassistant/components/github/__init__.py +0 -6
  630. homeassistant/components/github/config_flow.py +2 -2
  631. homeassistant/components/go2rtc/__init__.py +0 -1
  632. homeassistant/components/goalzero/strings.json +1 -1
  633. homeassistant/components/goalzero/translations/ca.json +0 -3
  634. homeassistant/components/goalzero/translations/el.json +0 -3
  635. homeassistant/components/goalzero/translations/en-GB.json +1 -1
  636. homeassistant/components/goalzero/translations/en.json +1 -1
  637. homeassistant/components/goalzero/translations/es.json +1 -1
  638. homeassistant/components/goalzero/translations/fi.json +0 -3
  639. homeassistant/components/goalzero/translations/hu.json +0 -3
  640. homeassistant/components/goalzero/translations/id.json +0 -3
  641. homeassistant/components/goalzero/translations/it.json +0 -3
  642. homeassistant/components/goalzero/translations/ja.json +0 -3
  643. homeassistant/components/goalzero/translations/ko.json +0 -3
  644. homeassistant/components/goalzero/translations/lt.json +0 -3
  645. homeassistant/components/goalzero/translations/nb.json +0 -3
  646. homeassistant/components/goalzero/translations/nl.json +0 -3
  647. homeassistant/components/goalzero/translations/pl.json +0 -3
  648. homeassistant/components/goalzero/translations/pt-BR.json +0 -3
  649. homeassistant/components/goalzero/translations/pt.json +0 -3
  650. homeassistant/components/goalzero/translations/ro.json +0 -3
  651. homeassistant/components/goalzero/translations/ru.json +0 -3
  652. homeassistant/components/goalzero/translations/sk.json +1 -1
  653. homeassistant/components/goalzero/translations/sl.json +0 -3
  654. homeassistant/components/goalzero/translations/sv.json +0 -3
  655. homeassistant/components/goalzero/translations/tr.json +0 -3
  656. homeassistant/components/goalzero/translations/uk.json +0 -3
  657. homeassistant/components/goodwe/__init__.py +14 -2
  658. homeassistant/components/goodwe/config_flow.py +23 -13
  659. homeassistant/components/goodwe/manifest.json +1 -1
  660. homeassistant/components/goodwe/select.py +18 -11
  661. homeassistant/components/google/calendar.py +4 -4
  662. homeassistant/components/google/manifest.json +1 -1
  663. homeassistant/components/google_assistant_sdk/application_credentials.py +12 -6
  664. homeassistant/components/google_assistant_sdk/helpers.py +2 -2
  665. homeassistant/components/google_assistant_sdk/manifest.json +1 -1
  666. homeassistant/components/google_assistant_sdk/strings.json +1 -1
  667. homeassistant/components/google_cloud/const.py +10 -0
  668. homeassistant/components/google_cloud/stt.py +13 -3
  669. homeassistant/components/google_generative_ai_conversation/__init__.py +126 -64
  670. homeassistant/components/google_generative_ai_conversation/ai_task.py +81 -0
  671. homeassistant/components/google_generative_ai_conversation/config_flow.py +50 -4
  672. homeassistant/components/google_generative_ai_conversation/const.py +19 -3
  673. homeassistant/components/google_generative_ai_conversation/conversation.py +4 -21
  674. homeassistant/components/google_generative_ai_conversation/entity.py +102 -3
  675. homeassistant/components/google_generative_ai_conversation/strings.json +61 -1
  676. homeassistant/components/google_generative_ai_conversation/stt.py +259 -0
  677. homeassistant/components/google_generative_ai_conversation/translations/bg.json +38 -0
  678. homeassistant/components/google_generative_ai_conversation/translations/ca.json +29 -0
  679. homeassistant/components/google_generative_ai_conversation/translations/cs.json +60 -0
  680. homeassistant/components/google_generative_ai_conversation/translations/de.json +60 -0
  681. homeassistant/components/google_generative_ai_conversation/translations/el.json +60 -0
  682. homeassistant/components/google_generative_ai_conversation/translations/en-GB.json +60 -0
  683. homeassistant/components/google_generative_ai_conversation/translations/en.json +60 -0
  684. homeassistant/components/google_generative_ai_conversation/translations/es.json +60 -0
  685. homeassistant/components/google_generative_ai_conversation/translations/et.json +60 -0
  686. homeassistant/components/google_generative_ai_conversation/translations/fr.json +60 -0
  687. homeassistant/components/google_generative_ai_conversation/translations/ga.json +65 -0
  688. homeassistant/components/google_generative_ai_conversation/translations/he.json +32 -0
  689. homeassistant/components/google_generative_ai_conversation/translations/ja.json +28 -0
  690. homeassistant/components/google_generative_ai_conversation/translations/lt.json +60 -0
  691. homeassistant/components/google_generative_ai_conversation/translations/mk.json +21 -0
  692. homeassistant/components/google_generative_ai_conversation/translations/nl.json +29 -0
  693. homeassistant/components/google_generative_ai_conversation/translations/pt.json +28 -0
  694. homeassistant/components/google_generative_ai_conversation/translations/ru.json +49 -0
  695. homeassistant/components/google_generative_ai_conversation/translations/sk.json +60 -0
  696. homeassistant/components/google_generative_ai_conversation/translations/sv.json +51 -0
  697. homeassistant/components/google_generative_ai_conversation/translations/zh-Hans.json +60 -0
  698. homeassistant/components/google_generative_ai_conversation/translations/zh-Hant.json +60 -0
  699. homeassistant/components/google_generative_ai_conversation/tts.py +3 -0
  700. homeassistant/components/google_photos/translations/fr.json +2 -1
  701. homeassistant/components/google_travel_time/strings.json +1 -1
  702. homeassistant/components/group/config_flow.py +6 -6
  703. homeassistant/components/group/strings.json +18 -5
  704. homeassistant/components/group/translations/ca.json +4 -9
  705. homeassistant/components/group/translations/cs.json +18 -5
  706. homeassistant/components/group/translations/da.json +4 -9
  707. homeassistant/components/group/translations/de.json +18 -5
  708. homeassistant/components/group/translations/el.json +4 -9
  709. homeassistant/components/group/translations/en-GB.json +4 -9
  710. homeassistant/components/group/translations/en.json +18 -5
  711. homeassistant/components/group/translations/es.json +4 -9
  712. homeassistant/components/group/translations/et.json +4 -9
  713. homeassistant/components/group/translations/fi.json +4 -9
  714. homeassistant/components/group/translations/fr.json +4 -9
  715. homeassistant/components/group/translations/fy.json +0 -14
  716. homeassistant/components/group/translations/ga.json +34 -0
  717. homeassistant/components/group/translations/he.json +4 -9
  718. homeassistant/components/group/translations/hu.json +4 -9
  719. homeassistant/components/group/translations/id.json +4 -9
  720. homeassistant/components/group/translations/it.json +4 -9
  721. homeassistant/components/group/translations/ja.json +4 -9
  722. homeassistant/components/group/translations/ko.json +4 -9
  723. homeassistant/components/group/translations/lt.json +4 -9
  724. homeassistant/components/group/translations/lv.json +1 -2
  725. homeassistant/components/group/translations/nb.json +4 -9
  726. homeassistant/components/group/translations/nl.json +3 -7
  727. homeassistant/components/group/translations/pl.json +4 -9
  728. homeassistant/components/group/translations/pt-BR.json +4 -9
  729. homeassistant/components/group/translations/pt.json +4 -9
  730. homeassistant/components/group/translations/ro.json +4 -9
  731. homeassistant/components/group/translations/ru.json +4 -9
  732. homeassistant/components/group/translations/sk.json +4 -9
  733. homeassistant/components/group/translations/sl.json +4 -9
  734. homeassistant/components/group/translations/sv.json +4 -9
  735. homeassistant/components/group/translations/tr.json +4 -9
  736. homeassistant/components/group/translations/uk.json +4 -9
  737. homeassistant/components/group/translations/vi.json +4 -9
  738. homeassistant/components/group/translations/zh-Hans.json +4 -9
  739. homeassistant/components/group/translations/zh-Hant.json +4 -9
  740. homeassistant/components/growatt_server/__init__.py +91 -8
  741. homeassistant/components/growatt_server/coordinator.py +210 -0
  742. homeassistant/components/growatt_server/models.py +17 -0
  743. homeassistant/components/growatt_server/sensor/__init__.py +56 -285
  744. homeassistant/components/guardian/__init__.py +2 -2
  745. homeassistant/components/guardian/services.py +3 -2
  746. homeassistant/components/habitica/button.py +22 -81
  747. homeassistant/components/habitica/config_flow.py +0 -2
  748. homeassistant/components/habitica/coordinator.py +8 -11
  749. homeassistant/components/habitica/entity.py +2 -2
  750. homeassistant/components/habitica/icons.json +0 -9
  751. homeassistant/components/habitica/sensor.py +9 -161
  752. homeassistant/components/habitica/strings.json +0 -13
  753. homeassistant/components/habitica/switch.py +7 -9
  754. homeassistant/components/habitica/translations/bg.json +1 -11
  755. homeassistant/components/habitica/translations/ca.json +0 -3
  756. homeassistant/components/habitica/translations/cs.json +0 -13
  757. homeassistant/components/habitica/translations/de.json +0 -13
  758. homeassistant/components/habitica/translations/el.json +0 -13
  759. homeassistant/components/habitica/translations/en-GB.json +0 -13
  760. homeassistant/components/habitica/translations/en.json +0 -13
  761. homeassistant/components/habitica/translations/es.json +0 -13
  762. homeassistant/components/habitica/translations/et.json +0 -13
  763. homeassistant/components/habitica/translations/ga.json +0 -12
  764. homeassistant/components/habitica/translations/he.json +1 -11
  765. homeassistant/components/habitica/translations/hu.json +0 -13
  766. homeassistant/components/habitica/translations/it.json +0 -12
  767. homeassistant/components/habitica/translations/ja.json +0 -13
  768. homeassistant/components/habitica/translations/lt.json +0 -13
  769. homeassistant/components/habitica/translations/nl.json +0 -10
  770. homeassistant/components/habitica/translations/pt-BR.json +0 -3
  771. homeassistant/components/habitica/translations/pt.json +0 -13
  772. homeassistant/components/habitica/translations/ru.json +0 -13
  773. homeassistant/components/habitica/translations/sk.json +0 -13
  774. homeassistant/components/habitica/translations/sv.json +0 -13
  775. homeassistant/components/habitica/translations/tr.json +0 -13
  776. homeassistant/components/habitica/translations/zh-Hans.json +0 -13
  777. homeassistant/components/habitica/translations/zh-Hant.json +0 -13
  778. homeassistant/components/habitica/util.py +14 -14
  779. homeassistant/components/harmony/translations/es.json +1 -1
  780. homeassistant/components/hassio/backup.py +2 -2
  781. homeassistant/components/hassio/ingress.py +8 -8
  782. homeassistant/components/hassio/strings.json +1 -1
  783. homeassistant/components/hassio/translations/ga.json +17 -0
  784. homeassistant/components/heos/__init__.py +2 -2
  785. homeassistant/components/heos/config_flow.py +51 -41
  786. homeassistant/components/heos/manifest.json +2 -1
  787. homeassistant/components/heos/services.py +3 -2
  788. homeassistant/components/here_travel_time/__init__.py +30 -1
  789. homeassistant/components/here_travel_time/config_flow.py +16 -1
  790. homeassistant/components/here_travel_time/const.py +1 -0
  791. homeassistant/components/here_travel_time/coordinator.py +11 -1
  792. homeassistant/components/here_travel_time/model.py +2 -1
  793. homeassistant/components/here_travel_time/strings.json +5 -3
  794. homeassistant/components/here_travel_time/translations/ca.json +0 -5
  795. homeassistant/components/here_travel_time/translations/cs.json +4 -2
  796. homeassistant/components/here_travel_time/translations/de.json +4 -2
  797. homeassistant/components/here_travel_time/translations/el.json +4 -2
  798. homeassistant/components/here_travel_time/translations/en-GB.json +4 -2
  799. homeassistant/components/here_travel_time/translations/en.json +4 -2
  800. homeassistant/components/here_travel_time/translations/es.json +4 -2
  801. homeassistant/components/here_travel_time/translations/et.json +4 -2
  802. homeassistant/components/here_travel_time/translations/fi.json +0 -5
  803. homeassistant/components/here_travel_time/translations/fr.json +1 -2
  804. homeassistant/components/here_travel_time/translations/ga.json +11 -0
  805. homeassistant/components/here_travel_time/translations/hu.json +1 -2
  806. homeassistant/components/here_travel_time/translations/id.json +0 -5
  807. homeassistant/components/here_travel_time/translations/it.json +0 -5
  808. homeassistant/components/here_travel_time/translations/ja.json +1 -2
  809. homeassistant/components/here_travel_time/translations/ko.json +0 -5
  810. homeassistant/components/here_travel_time/translations/lt.json +1 -2
  811. homeassistant/components/here_travel_time/translations/mk.json +3 -0
  812. homeassistant/components/here_travel_time/translations/nb.json +0 -5
  813. homeassistant/components/here_travel_time/translations/nl.json +0 -5
  814. homeassistant/components/here_travel_time/translations/pl.json +0 -5
  815. homeassistant/components/here_travel_time/translations/pt-BR.json +0 -5
  816. homeassistant/components/here_travel_time/translations/pt.json +1 -2
  817. homeassistant/components/here_travel_time/translations/ro.json +0 -5
  818. homeassistant/components/here_travel_time/translations/ru.json +1 -2
  819. homeassistant/components/here_travel_time/translations/sk.json +4 -2
  820. homeassistant/components/here_travel_time/translations/sv.json +1 -2
  821. homeassistant/components/here_travel_time/translations/tr.json +1 -2
  822. homeassistant/components/here_travel_time/translations/uk.json +0 -5
  823. homeassistant/components/here_travel_time/translations/zh-Hans.json +4 -2
  824. homeassistant/components/here_travel_time/translations/zh-Hant.json +4 -2
  825. homeassistant/components/history_stats/__init__.py +43 -1
  826. homeassistant/components/history_stats/config_flow.py +135 -2
  827. homeassistant/components/history_stats/coordinator.py +7 -0
  828. homeassistant/components/history_stats/data.py +5 -1
  829. homeassistant/components/history_stats/helpers.py +9 -4
  830. homeassistant/components/history_stats/sensor.py +54 -8
  831. homeassistant/components/holiday/__init__.py +0 -6
  832. homeassistant/components/holiday/config_flow.py +2 -2
  833. homeassistant/components/holiday/manifest.json +1 -1
  834. homeassistant/components/home_connect/__init__.py +2 -2
  835. homeassistant/components/home_connect/coordinator.py +22 -24
  836. homeassistant/components/home_connect/services.py +3 -2
  837. homeassistant/components/home_connect/strings.json +10 -21
  838. homeassistant/components/home_connect/translations/cs.json +2 -11
  839. homeassistant/components/home_connect/translations/de.json +0 -11
  840. homeassistant/components/home_connect/translations/el.json +0 -11
  841. homeassistant/components/home_connect/translations/en-GB.json +0 -11
  842. homeassistant/components/home_connect/translations/en.json +0 -11
  843. homeassistant/components/home_connect/translations/es.json +0 -11
  844. homeassistant/components/home_connect/translations/et.json +0 -11
  845. homeassistant/components/home_connect/translations/ga.json +0 -10
  846. homeassistant/components/home_connect/translations/hu.json +0 -10
  847. homeassistant/components/home_connect/translations/it.json +0 -12
  848. homeassistant/components/home_connect/translations/lt.json +0 -11
  849. homeassistant/components/home_connect/translations/pt.json +0 -11
  850. homeassistant/components/home_connect/translations/ru.json +0 -11
  851. homeassistant/components/home_connect/translations/sk.json +0 -11
  852. homeassistant/components/home_connect/translations/sv.json +0 -10
  853. homeassistant/components/home_connect/translations/zh-Hans.json +0 -11
  854. homeassistant/components/home_connect/translations/zh-Hant.json +0 -11
  855. homeassistant/components/homeassistant/__init__.py +7 -2
  856. homeassistant/components/homeassistant/strings.json +3 -3
  857. homeassistant/components/homeassistant/translations/fr.json +3 -0
  858. homeassistant/components/homeassistant/triggers/time.py +20 -1
  859. homeassistant/components/homee/__init__.py +4 -6
  860. homeassistant/components/homee/config_flow.py +60 -0
  861. homeassistant/components/homee/manifest.json +1 -1
  862. homeassistant/components/homee/quality_scale.yaml +11 -8
  863. homeassistant/components/homee/strings.json +14 -2
  864. homeassistant/components/homee/translations/bg.json +12 -0
  865. homeassistant/components/homee/translations/ca.json +8 -0
  866. homeassistant/components/homee/translations/cs.json +12 -0
  867. homeassistant/components/homee/translations/da.json +12 -0
  868. homeassistant/components/homee/translations/de.json +12 -0
  869. homeassistant/components/homee/translations/el.json +12 -0
  870. homeassistant/components/homee/translations/en-GB.json +12 -0
  871. homeassistant/components/homee/translations/en.json +12 -0
  872. homeassistant/components/homee/translations/es.json +13 -1
  873. homeassistant/components/homee/translations/et.json +12 -0
  874. homeassistant/components/homee/translations/ga.json +6 -0
  875. homeassistant/components/homee/translations/he.json +8 -0
  876. homeassistant/components/homee/translations/ja.json +12 -0
  877. homeassistant/components/homee/translations/lt.json +12 -0
  878. homeassistant/components/homee/translations/nl.json +12 -0
  879. homeassistant/components/homee/translations/pt.json +12 -0
  880. homeassistant/components/homee/translations/ru.json +13 -1
  881. homeassistant/components/homee/translations/sk.json +12 -0
  882. homeassistant/components/homee/translations/sv.json +6 -0
  883. homeassistant/components/homee/translations/zh-Hans.json +12 -0
  884. homeassistant/components/homee/translations/zh-Hant.json +12 -0
  885. homeassistant/components/homekit/__init__.py +7 -4
  886. homeassistant/components/homematicip_cloud/const.py +1 -0
  887. homeassistant/components/homematicip_cloud/cover.py +2 -1
  888. homeassistant/components/homematicip_cloud/icons.json +11 -0
  889. homeassistant/components/homematicip_cloud/light.py +76 -1
  890. homeassistant/components/homematicip_cloud/manifest.json +1 -1
  891. homeassistant/components/homematicip_cloud/sensor.py +304 -102
  892. homeassistant/components/homematicip_cloud/strings.json +11 -0
  893. homeassistant/components/homematicip_cloud/switch.py +6 -0
  894. homeassistant/components/homematicip_cloud/translations/cs.json +11 -0
  895. homeassistant/components/homematicip_cloud/translations/de.json +11 -0
  896. homeassistant/components/homematicip_cloud/translations/el.json +11 -0
  897. homeassistant/components/homematicip_cloud/translations/en-GB.json +11 -0
  898. homeassistant/components/homematicip_cloud/translations/en.json +11 -0
  899. homeassistant/components/homematicip_cloud/translations/es.json +11 -0
  900. homeassistant/components/homematicip_cloud/translations/et.json +11 -0
  901. homeassistant/components/homematicip_cloud/translations/ga.json +11 -0
  902. homeassistant/components/homematicip_cloud/translations/it.json +11 -0
  903. homeassistant/components/homematicip_cloud/translations/ja.json +11 -0
  904. homeassistant/components/homematicip_cloud/translations/lt.json +11 -0
  905. homeassistant/components/homematicip_cloud/translations/mk.json +9 -0
  906. homeassistant/components/homematicip_cloud/translations/nl.json +9 -0
  907. homeassistant/components/homematicip_cloud/translations/pt.json +11 -0
  908. homeassistant/components/homematicip_cloud/translations/sk.json +11 -0
  909. homeassistant/components/homematicip_cloud/translations/zh-Hans.json +11 -0
  910. homeassistant/components/homematicip_cloud/translations/zh-Hant.json +11 -0
  911. homeassistant/components/homematicip_cloud/valve.py +59 -0
  912. homeassistant/components/homeworks/translations/es.json +2 -2
  913. homeassistant/components/honeywell/__init__.py +0 -9
  914. homeassistant/components/honeywell/config_flow.py +2 -2
  915. homeassistant/components/html5/strings.json +1 -1
  916. homeassistant/components/http/__init__.py +1 -25
  917. homeassistant/components/huawei_lte/__init__.py +5 -17
  918. homeassistant/components/huawei_lte/config_flow.py +14 -9
  919. homeassistant/components/huawei_lte/const.py +1 -1
  920. homeassistant/components/huawei_lte/diagnostics.py +86 -0
  921. homeassistant/components/huawei_lte/notify.py +0 -3
  922. homeassistant/components/huawei_lte/translations/ga.json +18 -0
  923. homeassistant/components/hunterdouglas_powerview/__init__.py +15 -2
  924. homeassistant/components/husqvarna_automower/button.py +2 -7
  925. homeassistant/components/husqvarna_automower/calendar.py +22 -3
  926. homeassistant/components/husqvarna_automower/coordinator.py +150 -126
  927. homeassistant/components/husqvarna_automower/entity.py +9 -18
  928. homeassistant/components/husqvarna_automower/icons.json +23 -3
  929. homeassistant/components/husqvarna_automower/lawn_mower.py +2 -2
  930. homeassistant/components/husqvarna_automower/manifest.json +1 -1
  931. homeassistant/components/husqvarna_automower/sensor.py +55 -2
  932. homeassistant/components/husqvarna_automower/strings.json +27 -7
  933. homeassistant/components/husqvarna_automower/translations/bg.json +10 -0
  934. homeassistant/components/husqvarna_automower/translations/cs.json +20 -0
  935. homeassistant/components/husqvarna_automower/translations/de.json +20 -0
  936. homeassistant/components/husqvarna_automower/translations/el.json +8 -0
  937. homeassistant/components/husqvarna_automower/translations/en-GB.json +8 -0
  938. homeassistant/components/husqvarna_automower/translations/en.json +20 -0
  939. homeassistant/components/husqvarna_automower/translations/es.json +20 -0
  940. homeassistant/components/husqvarna_automower/translations/et.json +20 -0
  941. homeassistant/components/husqvarna_automower/translations/ga.json +34 -0
  942. homeassistant/components/husqvarna_automower/translations/lt.json +8 -0
  943. homeassistant/components/husqvarna_automower/translations/mk.json +7 -0
  944. homeassistant/components/husqvarna_automower/translations/sk.json +20 -0
  945. homeassistant/components/husqvarna_automower/translations/sv.json +8 -0
  946. homeassistant/components/husqvarna_automower/translations/zh-Hans.json +20 -0
  947. homeassistant/components/husqvarna_automower/translations/zh-Hant.json +20 -0
  948. homeassistant/components/husqvarna_automower_ble/__init__.py +1 -0
  949. homeassistant/components/husqvarna_automower_ble/coordinator.py +3 -3
  950. homeassistant/components/husqvarna_automower_ble/entity.py +16 -0
  951. homeassistant/components/husqvarna_automower_ble/sensor.py +51 -0
  952. homeassistant/components/huum/__init__.py +14 -32
  953. homeassistant/components/huum/binary_sensor.py +41 -0
  954. homeassistant/components/huum/climate.py +32 -50
  955. homeassistant/components/huum/config_flow.py +2 -2
  956. homeassistant/components/huum/const.py +5 -1
  957. homeassistant/components/huum/coordinator.py +60 -0
  958. homeassistant/components/huum/entity.py +24 -0
  959. homeassistant/components/huum/light.py +62 -0
  960. homeassistant/components/huum/manifest.json +2 -2
  961. homeassistant/components/huum/strings.json +7 -0
  962. homeassistant/components/huum/translations/bg.json +7 -0
  963. homeassistant/components/huum/translations/cs.json +7 -0
  964. homeassistant/components/huum/translations/de.json +7 -0
  965. homeassistant/components/huum/translations/el.json +7 -0
  966. homeassistant/components/huum/translations/en-GB.json +7 -0
  967. homeassistant/components/huum/translations/en.json +7 -0
  968. homeassistant/components/huum/translations/es.json +7 -0
  969. homeassistant/components/huum/translations/et.json +7 -0
  970. homeassistant/components/huum/translations/fi.json +7 -0
  971. homeassistant/components/huum/translations/he.json +7 -0
  972. homeassistant/components/huum/translations/nl.json +7 -0
  973. homeassistant/components/huum/translations/ru.json +7 -0
  974. homeassistant/components/huum/translations/sk.json +7 -0
  975. homeassistant/components/huum/translations/zh-Hans.json +7 -0
  976. homeassistant/components/huum/translations/zh-Hant.json +7 -0
  977. homeassistant/components/hydrawise/binary_sensor.py +36 -21
  978. homeassistant/components/hydrawise/const.py +1 -0
  979. homeassistant/components/hydrawise/coordinator.py +90 -2
  980. homeassistant/components/hydrawise/entity.py +4 -2
  981. homeassistant/components/hydrawise/manifest.json +1 -1
  982. homeassistant/components/hydrawise/sensor.py +53 -30
  983. homeassistant/components/hydrawise/switch.py +16 -7
  984. homeassistant/components/hydrawise/valve.py +16 -6
  985. homeassistant/components/hyperion/__init__.py +0 -6
  986. homeassistant/components/hyperion/config_flow.py +2 -2
  987. homeassistant/components/image_upload/manifest.json +1 -1
  988. homeassistant/components/imeon_inverter/coordinator.py +2 -5
  989. homeassistant/components/imeon_inverter/icons.json +0 -27
  990. homeassistant/components/imeon_inverter/manifest.json +1 -1
  991. homeassistant/components/imeon_inverter/sensor.py +0 -69
  992. homeassistant/components/imeon_inverter/strings.json +0 -27
  993. homeassistant/components/imeon_inverter/translations/cs.json +0 -27
  994. homeassistant/components/imeon_inverter/translations/de.json +0 -27
  995. homeassistant/components/imeon_inverter/translations/el.json +0 -27
  996. homeassistant/components/imeon_inverter/translations/en-GB.json +0 -27
  997. homeassistant/components/imeon_inverter/translations/en.json +0 -27
  998. homeassistant/components/imeon_inverter/translations/es.json +0 -27
  999. homeassistant/components/imeon_inverter/translations/et.json +0 -27
  1000. homeassistant/components/imeon_inverter/translations/ga.json +0 -27
  1001. homeassistant/components/imeon_inverter/translations/hu.json +0 -27
  1002. homeassistant/components/imeon_inverter/translations/it.json +0 -9
  1003. homeassistant/components/imeon_inverter/translations/lt.json +0 -27
  1004. homeassistant/components/imeon_inverter/translations/pt.json +0 -27
  1005. homeassistant/components/imeon_inverter/translations/ru.json +0 -27
  1006. homeassistant/components/imeon_inverter/translations/sk.json +0 -27
  1007. homeassistant/components/imeon_inverter/translations/sv.json +0 -27
  1008. homeassistant/components/imeon_inverter/translations/zh-Hans.json +0 -27
  1009. homeassistant/components/imeon_inverter/translations/zh-Hant.json +0 -27
  1010. homeassistant/components/imgw_pib/icons.json +6 -0
  1011. homeassistant/components/imgw_pib/manifest.json +1 -1
  1012. homeassistant/components/imgw_pib/sensor.py +42 -1
  1013. homeassistant/components/imgw_pib/strings.json +40 -0
  1014. homeassistant/components/imgw_pib/translations/bg.json +22 -0
  1015. homeassistant/components/imgw_pib/translations/cs.json +40 -0
  1016. homeassistant/components/imgw_pib/translations/de.json +40 -0
  1017. homeassistant/components/imgw_pib/translations/el.json +40 -0
  1018. homeassistant/components/imgw_pib/translations/en-GB.json +40 -0
  1019. homeassistant/components/imgw_pib/translations/en.json +40 -0
  1020. homeassistant/components/imgw_pib/translations/es.json +40 -0
  1021. homeassistant/components/imgw_pib/translations/et.json +40 -0
  1022. homeassistant/components/imgw_pib/translations/ga.json +44 -0
  1023. homeassistant/components/imgw_pib/translations/he.json +17 -0
  1024. homeassistant/components/imgw_pib/translations/lt.json +38 -0
  1025. homeassistant/components/imgw_pib/translations/mk.json +40 -1
  1026. homeassistant/components/imgw_pib/translations/nl.json +11 -0
  1027. homeassistant/components/imgw_pib/translations/pl.json +40 -0
  1028. homeassistant/components/imgw_pib/translations/pt.json +3 -0
  1029. homeassistant/components/imgw_pib/translations/ru.json +15 -0
  1030. homeassistant/components/imgw_pib/translations/sk.json +40 -0
  1031. homeassistant/components/imgw_pib/translations/sv.json +35 -0
  1032. homeassistant/components/imgw_pib/translations/zh-Hans.json +40 -0
  1033. homeassistant/components/imgw_pib/translations/zh-Hant.json +40 -0
  1034. homeassistant/components/immich/__init__.py +12 -0
  1035. homeassistant/components/immich/icons.json +5 -0
  1036. homeassistant/components/immich/manifest.json +1 -1
  1037. homeassistant/components/immich/media_source.py +119 -29
  1038. homeassistant/components/immich/services.py +98 -0
  1039. homeassistant/components/immich/services.yaml +18 -0
  1040. homeassistant/components/immich/strings.json +37 -0
  1041. homeassistant/components/immich/translations/cs.json +37 -0
  1042. homeassistant/components/immich/translations/de.json +37 -0
  1043. homeassistant/components/immich/translations/en-GB.json +37 -0
  1044. homeassistant/components/immich/translations/en.json +37 -0
  1045. homeassistant/components/immich/translations/es.json +37 -0
  1046. homeassistant/components/immich/translations/et.json +37 -0
  1047. homeassistant/components/immich/translations/fr.json +37 -0
  1048. homeassistant/components/immich/translations/ga.json +37 -0
  1049. homeassistant/components/immich/translations/nl.json +9 -0
  1050. homeassistant/components/immich/translations/sk.json +37 -0
  1051. homeassistant/components/immich/translations/zh-Hans.json +37 -0
  1052. homeassistant/components/immich/translations/zh-Hant.json +37 -0
  1053. homeassistant/components/incomfort/translations/ga.json +8 -1
  1054. homeassistant/components/input_text/__init__.py +13 -4
  1055. homeassistant/components/insteon/strings.json +5 -5
  1056. homeassistant/components/integration/__init__.py +44 -6
  1057. homeassistant/components/integration/config_flow.py +2 -0
  1058. homeassistant/components/integration/sensor.py +33 -23
  1059. homeassistant/components/iqvia/manifest.json +1 -1
  1060. homeassistant/components/iron_os/__init__.py +13 -16
  1061. homeassistant/components/iron_os/const.py +4 -0
  1062. homeassistant/components/iron_os/coordinator.py +3 -1
  1063. homeassistant/components/iron_os/icons.json +6 -0
  1064. homeassistant/components/iron_os/number.py +156 -69
  1065. homeassistant/components/iron_os/strings.json +3 -0
  1066. homeassistant/components/iron_os/switch.py +19 -2
  1067. homeassistant/components/iron_os/translations/cs.json +3 -0
  1068. homeassistant/components/iron_os/translations/de.json +3 -0
  1069. homeassistant/components/iron_os/translations/el.json +3 -0
  1070. homeassistant/components/iron_os/translations/en-GB.json +3 -0
  1071. homeassistant/components/iron_os/translations/en.json +3 -0
  1072. homeassistant/components/iron_os/translations/es.json +4 -1
  1073. homeassistant/components/iron_os/translations/et.json +3 -0
  1074. homeassistant/components/iron_os/translations/ga.json +3 -0
  1075. homeassistant/components/iron_os/translations/ja.json +3 -0
  1076. homeassistant/components/iron_os/translations/lt.json +3 -0
  1077. homeassistant/components/iron_os/translations/pt.json +3 -0
  1078. homeassistant/components/iron_os/translations/ru.json +3 -0
  1079. homeassistant/components/iron_os/translations/sk.json +3 -0
  1080. homeassistant/components/iron_os/translations/zh-Hans.json +3 -0
  1081. homeassistant/components/iron_os/translations/zh-Hant.json +3 -0
  1082. homeassistant/components/iskra/strings.json +8 -8
  1083. homeassistant/components/islamic_prayer_times/coordinator.py +3 -3
  1084. homeassistant/components/israel_rail/manifest.json +1 -1
  1085. homeassistant/components/ista_ecotrend/translations/ga.json +30 -0
  1086. homeassistant/components/isy994/__init__.py +0 -6
  1087. homeassistant/components/isy994/config_flow.py +3 -3
  1088. homeassistant/components/ituran/__init__.py +1 -0
  1089. homeassistant/components/ituran/binary_sensor.py +75 -0
  1090. homeassistant/components/ituran/device_tracker.py +4 -2
  1091. homeassistant/components/ituran/icons.json +3 -0
  1092. homeassistant/components/ituran/manifest.json +1 -1
  1093. homeassistant/components/ituran/sensor.py +24 -4
  1094. homeassistant/components/ituran/strings.json +3 -0
  1095. homeassistant/components/ituran/translations/cs.json +3 -0
  1096. homeassistant/components/ituran/translations/de.json +3 -0
  1097. homeassistant/components/ituran/translations/en-GB.json +3 -0
  1098. homeassistant/components/ituran/translations/en.json +3 -0
  1099. homeassistant/components/ituran/translations/es.json +3 -0
  1100. homeassistant/components/ituran/translations/et.json +3 -0
  1101. homeassistant/components/ituran/translations/ga.json +3 -0
  1102. homeassistant/components/ituran/translations/sk.json +3 -0
  1103. homeassistant/components/ituran/translations/zh-Hans.json +3 -0
  1104. homeassistant/components/ituran/translations/zh-Hant.json +3 -0
  1105. homeassistant/components/jellyfin/browse_media.py +47 -0
  1106. homeassistant/components/jellyfin/media_player.py +24 -3
  1107. homeassistant/components/jellyfin/translations/ga.json +9 -0
  1108. homeassistant/components/jewish_calendar/__init__.py +0 -7
  1109. homeassistant/components/jewish_calendar/binary_sensor.py +17 -55
  1110. homeassistant/components/jewish_calendar/config_flow.py +6 -2
  1111. homeassistant/components/jewish_calendar/entity.py +62 -3
  1112. homeassistant/components/jewish_calendar/sensor.py +55 -72
  1113. homeassistant/components/jewish_calendar/services.py +0 -1
  1114. homeassistant/components/keba/strings.json +1 -1
  1115. homeassistant/components/keenetic_ndms2/__init__.py +0 -7
  1116. homeassistant/components/keenetic_ndms2/config_flow.py +27 -7
  1117. homeassistant/components/keenetic_ndms2/strings.json +2 -1
  1118. homeassistant/components/keenetic_ndms2/translations/bg.json +2 -1
  1119. homeassistant/components/keenetic_ndms2/translations/ca.json +2 -1
  1120. homeassistant/components/keenetic_ndms2/translations/cs.json +2 -1
  1121. homeassistant/components/keenetic_ndms2/translations/de.json +2 -1
  1122. homeassistant/components/keenetic_ndms2/translations/el.json +2 -1
  1123. homeassistant/components/keenetic_ndms2/translations/en-GB.json +2 -1
  1124. homeassistant/components/keenetic_ndms2/translations/en.json +2 -1
  1125. homeassistant/components/keenetic_ndms2/translations/es.json +2 -1
  1126. homeassistant/components/keenetic_ndms2/translations/et.json +2 -1
  1127. homeassistant/components/keenetic_ndms2/translations/he.json +2 -1
  1128. homeassistant/components/keenetic_ndms2/translations/ja.json +2 -1
  1129. homeassistant/components/keenetic_ndms2/translations/lt.json +2 -1
  1130. homeassistant/components/keenetic_ndms2/translations/nl.json +2 -1
  1131. homeassistant/components/keenetic_ndms2/translations/pt.json +2 -1
  1132. homeassistant/components/keenetic_ndms2/translations/ru.json +2 -1
  1133. homeassistant/components/keenetic_ndms2/translations/sk.json +2 -1
  1134. homeassistant/components/keenetic_ndms2/translations/sv.json +2 -1
  1135. homeassistant/components/keenetic_ndms2/translations/zh-Hans.json +2 -1
  1136. homeassistant/components/keenetic_ndms2/translations/zh-Hant.json +2 -1
  1137. homeassistant/components/keymitt_ble/manifest.json +3 -3
  1138. homeassistant/components/kitchen_sink/__init__.py +0 -7
  1139. homeassistant/components/kitchen_sink/config_flow.py +2 -2
  1140. homeassistant/components/knocki/translations/ga.json +15 -0
  1141. homeassistant/components/knx/__init__.py +11 -298
  1142. homeassistant/components/knx/binary_sensor.py +13 -12
  1143. homeassistant/components/knx/button.py +2 -2
  1144. homeassistant/components/knx/climate.py +2 -2
  1145. homeassistant/components/knx/config_flow.py +83 -63
  1146. homeassistant/components/knx/const.py +1 -1
  1147. homeassistant/components/knx/cover.py +18 -34
  1148. homeassistant/components/knx/date.py +2 -2
  1149. homeassistant/components/knx/datetime.py +2 -2
  1150. homeassistant/components/knx/device.py +1 -1
  1151. homeassistant/components/knx/device_trigger.py +1 -1
  1152. homeassistant/components/knx/diagnostics.py +1 -1
  1153. homeassistant/components/knx/entity.py +2 -2
  1154. homeassistant/components/knx/expose.py +1 -1
  1155. homeassistant/components/knx/fan.py +2 -2
  1156. homeassistant/components/knx/knx_module.py +301 -0
  1157. homeassistant/components/knx/light.py +91 -77
  1158. homeassistant/components/knx/manifest.json +1 -1
  1159. homeassistant/components/knx/notify.py +2 -2
  1160. homeassistant/components/knx/number.py +2 -2
  1161. homeassistant/components/knx/quality_scale.yaml +1 -1
  1162. homeassistant/components/knx/scene.py +2 -2
  1163. homeassistant/components/knx/select.py +2 -2
  1164. homeassistant/components/knx/sensor.py +2 -2
  1165. homeassistant/components/knx/services.py +2 -2
  1166. homeassistant/components/knx/storage/__init__.py +1 -1
  1167. homeassistant/components/knx/storage/config_store.py +17 -2
  1168. homeassistant/components/knx/storage/const.py +14 -7
  1169. homeassistant/components/knx/storage/entity_store_schema.py +106 -89
  1170. homeassistant/components/knx/storage/entity_store_validation.py +1 -1
  1171. homeassistant/components/knx/storage/knx_selector.py +26 -0
  1172. homeassistant/components/knx/storage/migration.py +42 -0
  1173. homeassistant/components/knx/storage/util.py +51 -0
  1174. homeassistant/components/knx/strings.json +12 -150
  1175. homeassistant/components/knx/switch.py +10 -17
  1176. homeassistant/components/knx/text.py +2 -2
  1177. homeassistant/components/knx/time.py +2 -2
  1178. homeassistant/components/knx/translations/bg.json +0 -48
  1179. homeassistant/components/knx/translations/ca.json +3 -132
  1180. homeassistant/components/knx/translations/cs.json +10 -148
  1181. homeassistant/components/knx/translations/da.json +0 -13
  1182. homeassistant/components/knx/translations/de.json +10 -148
  1183. homeassistant/components/knx/translations/el.json +10 -148
  1184. homeassistant/components/knx/translations/en-GB.json +10 -148
  1185. homeassistant/components/knx/translations/en.json +10 -148
  1186. homeassistant/components/knx/translations/es.json +10 -148
  1187. homeassistant/components/knx/translations/et.json +10 -148
  1188. homeassistant/components/knx/translations/fi.json +0 -119
  1189. homeassistant/components/knx/translations/fr.json +0 -76
  1190. homeassistant/components/knx/translations/ga.json +17 -48
  1191. homeassistant/components/knx/translations/gl.json +0 -33
  1192. homeassistant/components/knx/translations/he.json +3 -15
  1193. homeassistant/components/knx/translations/hu.json +0 -148
  1194. homeassistant/components/knx/translations/id.json +0 -100
  1195. homeassistant/components/knx/translations/it.json +0 -119
  1196. homeassistant/components/knx/translations/ja.json +0 -148
  1197. homeassistant/components/knx/translations/ko.json +0 -119
  1198. homeassistant/components/knx/translations/lt.json +10 -148
  1199. homeassistant/components/knx/translations/lv.json +0 -26
  1200. homeassistant/components/knx/translations/nb.json +0 -100
  1201. homeassistant/components/knx/translations/nl.json +3 -125
  1202. homeassistant/components/knx/translations/pl.json +0 -97
  1203. homeassistant/components/knx/translations/pt-BR.json +0 -117
  1204. homeassistant/components/knx/translations/pt.json +10 -148
  1205. homeassistant/components/knx/translations/ro.json +0 -88
  1206. homeassistant/components/knx/translations/ru.json +0 -148
  1207. homeassistant/components/knx/translations/sk.json +10 -148
  1208. homeassistant/components/knx/translations/sl.json +0 -13
  1209. homeassistant/components/knx/translations/sv.json +3 -148
  1210. homeassistant/components/knx/translations/tr.json +0 -148
  1211. homeassistant/components/knx/translations/uk.json +0 -89
  1212. homeassistant/components/knx/translations/vi.json +0 -5
  1213. homeassistant/components/knx/translations/zh-Hans.json +10 -148
  1214. homeassistant/components/knx/translations/zh-Hant.json +10 -148
  1215. homeassistant/components/knx/trigger.py +1 -1
  1216. homeassistant/components/knx/weather.py +2 -2
  1217. homeassistant/components/knx/websocket.py +3 -3
  1218. homeassistant/components/kodi/translations/ga.json +13 -0
  1219. homeassistant/components/kostal_plenticore/switch.py +20 -1
  1220. homeassistant/components/lamarzocco/__init__.py +0 -7
  1221. homeassistant/components/lamarzocco/config_flow.py +2 -2
  1222. homeassistant/components/lamarzocco/sensor.py +15 -1
  1223. homeassistant/components/lamarzocco/translations/ga.json +6 -0
  1224. homeassistant/components/lametric/strings.json +1 -1
  1225. homeassistant/components/lastfm/__init__.py +0 -6
  1226. homeassistant/components/lastfm/config_flow.py +6 -2
  1227. homeassistant/components/laundrify/strings.json +1 -1
  1228. homeassistant/components/laundrify/translations/ga.json +9 -0
  1229. homeassistant/components/lcn/__init__.py +5 -1
  1230. homeassistant/components/lcn/binary_sensor.py +4 -132
  1231. homeassistant/components/lcn/helpers.py +9 -2
  1232. homeassistant/components/lcn/light.py +28 -22
  1233. homeassistant/components/lcn/manifest.json +1 -1
  1234. homeassistant/components/lcn/quality_scale.yaml +1 -1
  1235. homeassistant/components/lcn/services.py +6 -4
  1236. homeassistant/components/lcn/strings.json +19 -7
  1237. homeassistant/components/lcn/translations/cs.json +18 -2
  1238. homeassistant/components/lcn/translations/de.json +14 -2
  1239. homeassistant/components/lcn/translations/el.json +14 -2
  1240. homeassistant/components/lcn/translations/en-GB.json +14 -2
  1241. homeassistant/components/lcn/translations/en.json +14 -2
  1242. homeassistant/components/lcn/translations/es.json +16 -4
  1243. homeassistant/components/lcn/translations/et.json +14 -2
  1244. homeassistant/components/lcn/translations/ga.json +14 -2
  1245. homeassistant/components/lcn/translations/hu.json +0 -5
  1246. homeassistant/components/lcn/translations/ja.json +14 -2
  1247. homeassistant/components/lcn/translations/lt.json +14 -2
  1248. homeassistant/components/lcn/translations/nl.json +0 -5
  1249. homeassistant/components/lcn/translations/pt-BR.json +0 -5
  1250. homeassistant/components/lcn/translations/pt.json +14 -2
  1251. homeassistant/components/lcn/translations/ru.json +8 -2
  1252. homeassistant/components/lcn/translations/sk.json +14 -2
  1253. homeassistant/components/lcn/translations/sv.json +0 -5
  1254. homeassistant/components/lcn/translations/tr.json +0 -5
  1255. homeassistant/components/lcn/translations/zh-Hans.json +14 -2
  1256. homeassistant/components/lcn/translations/zh-Hant.json +14 -2
  1257. homeassistant/components/leaone/strings.json +1 -1
  1258. homeassistant/components/leaone/translations/de.json +1 -1
  1259. homeassistant/components/leaone/translations/el.json +1 -2
  1260. homeassistant/components/leaone/translations/en-GB.json +1 -1
  1261. homeassistant/components/leaone/translations/en.json +1 -1
  1262. homeassistant/components/leaone/translations/es.json +1 -1
  1263. homeassistant/components/leaone/translations/fi.json +1 -2
  1264. homeassistant/components/leaone/translations/fr.json +1 -2
  1265. homeassistant/components/leaone/translations/hu.json +1 -2
  1266. homeassistant/components/leaone/translations/ja.json +1 -2
  1267. homeassistant/components/leaone/translations/lt.json +1 -2
  1268. homeassistant/components/leaone/translations/nl.json +1 -2
  1269. homeassistant/components/leaone/translations/pt.json +1 -2
  1270. homeassistant/components/leaone/translations/ru.json +1 -2
  1271. homeassistant/components/leaone/translations/sk.json +1 -2
  1272. homeassistant/components/leaone/translations/sv.json +1 -2
  1273. homeassistant/components/leaone/translations/tr.json +1 -2
  1274. homeassistant/components/leaone/translations/zh-Hans.json +1 -2
  1275. homeassistant/components/letpot/__init__.py +7 -2
  1276. homeassistant/components/letpot/binary_sensor.py +3 -1
  1277. homeassistant/components/letpot/coordinator.py +7 -6
  1278. homeassistant/components/letpot/entity.py +3 -2
  1279. homeassistant/components/letpot/manifest.json +2 -1
  1280. homeassistant/components/letpot/sensor.py +6 -2
  1281. homeassistant/components/letpot/switch.py +22 -8
  1282. homeassistant/components/letpot/time.py +10 -6
  1283. homeassistant/components/lg_thinq/climate.py +49 -62
  1284. homeassistant/components/lg_thinq/icons.json +15 -0
  1285. homeassistant/components/lg_thinq/sensor.py +40 -0
  1286. homeassistant/components/lg_thinq/strings.json +56 -5
  1287. homeassistant/components/lg_thinq/translations/bg.json +3 -0
  1288. homeassistant/components/lg_thinq/translations/cs.json +51 -0
  1289. homeassistant/components/lg_thinq/translations/de.json +51 -0
  1290. homeassistant/components/lg_thinq/translations/el.json +28 -0
  1291. homeassistant/components/lg_thinq/translations/en-GB.json +51 -0
  1292. homeassistant/components/lg_thinq/translations/en.json +51 -0
  1293. homeassistant/components/lg_thinq/translations/es.json +53 -2
  1294. homeassistant/components/lg_thinq/translations/et.json +51 -0
  1295. homeassistant/components/lg_thinq/translations/ga.json +50 -0
  1296. homeassistant/components/lg_thinq/translations/he.json +6 -0
  1297. homeassistant/components/lg_thinq/translations/mk.json +11 -0
  1298. homeassistant/components/lg_thinq/translations/nl.json +21 -0
  1299. homeassistant/components/lg_thinq/translations/sk.json +51 -0
  1300. homeassistant/components/lg_thinq/translations/zh-Hans.json +51 -0
  1301. homeassistant/components/lg_thinq/translations/zh-Hant.json +51 -0
  1302. homeassistant/components/lifx/const.py +1 -0
  1303. homeassistant/components/lifx/coordinator.py +49 -1
  1304. homeassistant/components/lifx/manager.py +7 -3
  1305. homeassistant/components/lifx/manifest.json +1 -1
  1306. homeassistant/components/light/icons.json +3 -0
  1307. homeassistant/components/light/translations/ga.json +37 -0
  1308. homeassistant/components/linkplay/const.py +1 -1
  1309. homeassistant/components/linkplay/icons.json +5 -0
  1310. homeassistant/components/linkplay/media_player.py +14 -9
  1311. homeassistant/components/linkplay/select.py +112 -0
  1312. homeassistant/components/linkplay/strings.json +11 -0
  1313. homeassistant/components/linkplay/translations/bg.json +13 -0
  1314. homeassistant/components/linkplay/translations/ca.json +12 -0
  1315. homeassistant/components/linkplay/translations/cs.json +11 -0
  1316. homeassistant/components/linkplay/translations/de.json +11 -0
  1317. homeassistant/components/linkplay/translations/el.json +11 -0
  1318. homeassistant/components/linkplay/translations/en-GB.json +11 -0
  1319. homeassistant/components/linkplay/translations/en.json +11 -0
  1320. homeassistant/components/linkplay/translations/es.json +11 -0
  1321. homeassistant/components/linkplay/translations/et.json +11 -0
  1322. homeassistant/components/linkplay/translations/ga.json +11 -0
  1323. homeassistant/components/linkplay/translations/lt.json +11 -0
  1324. homeassistant/components/linkplay/translations/mk.json +14 -1
  1325. homeassistant/components/linkplay/translations/nl.json +11 -0
  1326. homeassistant/components/linkplay/translations/pt.json +11 -0
  1327. homeassistant/components/linkplay/translations/ru.json +11 -0
  1328. homeassistant/components/linkplay/translations/sk.json +11 -0
  1329. homeassistant/components/linkplay/translations/zh-Hans.json +11 -0
  1330. homeassistant/components/linkplay/translations/zh-Hant.json +11 -0
  1331. homeassistant/components/litterrobot/coordinator.py +3 -0
  1332. homeassistant/components/litterrobot/icons.json +3 -0
  1333. homeassistant/components/litterrobot/manifest.json +1 -1
  1334. homeassistant/components/litterrobot/sensor.py +15 -1
  1335. homeassistant/components/litterrobot/strings.json +5 -1
  1336. homeassistant/components/litterrobot/translations/bg.json +4 -0
  1337. homeassistant/components/litterrobot/translations/ca.json +4 -0
  1338. homeassistant/components/litterrobot/translations/cs.json +4 -0
  1339. homeassistant/components/litterrobot/translations/de.json +4 -0
  1340. homeassistant/components/litterrobot/translations/el.json +4 -0
  1341. homeassistant/components/litterrobot/translations/en-GB.json +4 -0
  1342. homeassistant/components/litterrobot/translations/en.json +4 -0
  1343. homeassistant/components/litterrobot/translations/es.json +4 -0
  1344. homeassistant/components/litterrobot/translations/et.json +4 -0
  1345. homeassistant/components/litterrobot/translations/ga.json +4 -0
  1346. homeassistant/components/litterrobot/translations/it.json +4 -0
  1347. homeassistant/components/litterrobot/translations/lt.json +4 -0
  1348. homeassistant/components/litterrobot/translations/mk.json +4 -0
  1349. homeassistant/components/litterrobot/translations/nl.json +3 -0
  1350. homeassistant/components/litterrobot/translations/pt.json +4 -0
  1351. homeassistant/components/litterrobot/translations/ru.json +4 -0
  1352. homeassistant/components/litterrobot/translations/sk.json +4 -0
  1353. homeassistant/components/litterrobot/translations/zh-Hans.json +4 -0
  1354. homeassistant/components/litterrobot/translations/zh-Hant.json +4 -0
  1355. homeassistant/components/local_calendar/calendar.py +1 -1
  1356. homeassistant/components/local_calendar/manifest.json +1 -1
  1357. homeassistant/components/local_todo/manifest.json +1 -1
  1358. homeassistant/components/lock/translations/da.json +2 -0
  1359. homeassistant/components/lookin/__init__.py +1 -1
  1360. homeassistant/components/lookin/media_player.py +2 -4
  1361. homeassistant/components/luftdaten/strings.json +1 -1
  1362. homeassistant/components/matrix/__init__.py +2 -2
  1363. homeassistant/components/matrix/manifest.json +1 -1
  1364. homeassistant/components/matrix/services.py +3 -2
  1365. homeassistant/components/matter/binary_sensor.py +21 -21
  1366. homeassistant/components/matter/cover.py +6 -0
  1367. homeassistant/components/matter/entity.py +2 -2
  1368. homeassistant/components/matter/icons.json +8 -0
  1369. homeassistant/components/matter/manifest.json +1 -1
  1370. homeassistant/components/matter/number.py +202 -12
  1371. homeassistant/components/matter/select.py +42 -20
  1372. homeassistant/components/matter/sensor.py +52 -25
  1373. homeassistant/components/matter/strings.json +28 -4
  1374. homeassistant/components/matter/switch.py +6 -6
  1375. homeassistant/components/matter/translations/bg.json +3 -0
  1376. homeassistant/components/matter/translations/ca.json +11 -0
  1377. homeassistant/components/matter/translations/cs.json +26 -2
  1378. homeassistant/components/matter/translations/de.json +26 -2
  1379. homeassistant/components/matter/translations/el.json +20 -2
  1380. homeassistant/components/matter/translations/en-GB.json +26 -2
  1381. homeassistant/components/matter/translations/en.json +26 -2
  1382. homeassistant/components/matter/translations/es.json +27 -3
  1383. homeassistant/components/matter/translations/et.json +26 -2
  1384. homeassistant/components/matter/translations/fr.json +24 -3
  1385. homeassistant/components/matter/translations/ga.json +41 -3
  1386. homeassistant/components/matter/translations/he.json +20 -2
  1387. homeassistant/components/matter/translations/hu.json +3 -3
  1388. homeassistant/components/matter/translations/it.json +13 -2
  1389. homeassistant/components/matter/translations/ja.json +15 -0
  1390. homeassistant/components/matter/translations/lt.json +20 -2
  1391. homeassistant/components/matter/translations/mk.json +3 -0
  1392. homeassistant/components/matter/translations/nl.json +3 -0
  1393. homeassistant/components/matter/translations/pt.json +20 -2
  1394. homeassistant/components/matter/translations/ru.json +17 -2
  1395. homeassistant/components/matter/translations/sk.json +26 -2
  1396. homeassistant/components/matter/translations/sv.json +6 -3
  1397. homeassistant/components/matter/translations/zh-Hans.json +26 -2
  1398. homeassistant/components/matter/translations/zh-Hant.json +26 -2
  1399. homeassistant/components/matter/vacuum.py +30 -17
  1400. homeassistant/components/mcp_server/config_flow.py +14 -5
  1401. homeassistant/components/mcp_server/server.py +1 -1
  1402. homeassistant/components/mcp_server/strings.json +3 -0
  1403. homeassistant/components/mcp_server/translations/cs.json +3 -0
  1404. homeassistant/components/mcp_server/translations/de.json +3 -0
  1405. homeassistant/components/mcp_server/translations/el.json +3 -0
  1406. homeassistant/components/mcp_server/translations/en-GB.json +3 -0
  1407. homeassistant/components/mcp_server/translations/en.json +3 -0
  1408. homeassistant/components/mcp_server/translations/es.json +3 -0
  1409. homeassistant/components/mcp_server/translations/et.json +3 -0
  1410. homeassistant/components/mcp_server/translations/fr.json +3 -0
  1411. homeassistant/components/mcp_server/translations/ga.json +6 -0
  1412. homeassistant/components/mcp_server/translations/lt.json +3 -0
  1413. homeassistant/components/mcp_server/translations/pt.json +3 -0
  1414. homeassistant/components/mcp_server/translations/ru.json +3 -0
  1415. homeassistant/components/mcp_server/translations/sk.json +3 -0
  1416. homeassistant/components/mcp_server/translations/zh-Hans.json +3 -0
  1417. homeassistant/components/mcp_server/translations/zh-Hant.json +3 -0
  1418. homeassistant/components/mealie/const.py +2 -0
  1419. homeassistant/components/mealie/icons.json +3 -0
  1420. homeassistant/components/mealie/manifest.json +2 -1
  1421. homeassistant/components/mealie/services.py +39 -0
  1422. homeassistant/components/mealie/services.yaml +21 -0
  1423. homeassistant/components/mealie/strings.json +21 -0
  1424. homeassistant/components/mealie/translations/de.json +21 -0
  1425. homeassistant/components/mealie/translations/en.json +21 -0
  1426. homeassistant/components/mealie/translations/es.json +21 -0
  1427. homeassistant/components/mealie/translations/ga.json +24 -0
  1428. homeassistant/components/medcom_ble/__init__.py +3 -33
  1429. homeassistant/components/medcom_ble/coordinator.py +50 -0
  1430. homeassistant/components/medcom_ble/sensor.py +5 -13
  1431. homeassistant/components/media_player/__init__.py +2 -1
  1432. homeassistant/components/media_player/const.py +8 -1
  1433. homeassistant/components/media_source/__init__.py +5 -4
  1434. homeassistant/components/media_source/const.py +8 -0
  1435. homeassistant/components/media_source/local_source.py +5 -5
  1436. homeassistant/components/media_source/models.py +21 -5
  1437. homeassistant/components/mediaroom/media_player.py +3 -3
  1438. homeassistant/components/melcloud/__init__.py +6 -10
  1439. homeassistant/components/melcloud/climate.py +3 -5
  1440. homeassistant/components/melcloud/diagnostics.py +3 -2
  1441. homeassistant/components/melcloud/sensor.py +3 -5
  1442. homeassistant/components/melcloud/water_heater.py +3 -4
  1443. homeassistant/components/melnor/__init__.py +6 -17
  1444. homeassistant/components/melnor/coordinator.py +4 -2
  1445. homeassistant/components/melnor/number.py +3 -5
  1446. homeassistant/components/melnor/sensor.py +3 -5
  1447. homeassistant/components/melnor/switch.py +3 -5
  1448. homeassistant/components/melnor/time.py +3 -5
  1449. homeassistant/components/met/__init__.py +0 -6
  1450. homeassistant/components/met/config_flow.py +2 -2
  1451. homeassistant/components/met_eireann/__init__.py +4 -65
  1452. homeassistant/components/met_eireann/coordinator.py +76 -0
  1453. homeassistant/components/met_eireann/weather.py +1 -4
  1454. homeassistant/components/meteo_france/__init__.py +1 -4
  1455. homeassistant/components/meteo_france/const.py +0 -1
  1456. homeassistant/components/meteoclimatic/__init__.py +3 -31
  1457. homeassistant/components/meteoclimatic/coordinator.py +43 -0
  1458. homeassistant/components/meteoclimatic/sensor.py +9 -7
  1459. homeassistant/components/meteoclimatic/weather.py +7 -7
  1460. homeassistant/components/miele/__init__.py +12 -1
  1461. homeassistant/components/miele/const.py +1 -1
  1462. homeassistant/components/miele/entity.py +6 -1
  1463. homeassistant/components/miele/icons.json +11 -0
  1464. homeassistant/components/miele/sensor.py +139 -75
  1465. homeassistant/components/miele/services.py +238 -0
  1466. homeassistant/components/miele/services.yaml +55 -0
  1467. homeassistant/components/miele/strings.json +63 -3
  1468. homeassistant/components/miele/translations/bg.json +16 -0
  1469. homeassistant/components/miele/translations/cs.json +51 -0
  1470. homeassistant/components/miele/translations/de.json +51 -0
  1471. homeassistant/components/miele/translations/el.json +18 -0
  1472. homeassistant/components/miele/translations/en-GB.json +29 -0
  1473. homeassistant/components/miele/translations/en.json +60 -0
  1474. homeassistant/components/miele/translations/es.json +35 -0
  1475. homeassistant/components/miele/translations/et.json +29 -0
  1476. homeassistant/components/miele/translations/ga.json +28 -0
  1477. homeassistant/components/miele/translations/mk.json +14 -0
  1478. homeassistant/components/miele/translations/nl.json +1 -0
  1479. homeassistant/components/miele/translations/sk.json +29 -0
  1480. homeassistant/components/miele/translations/zh-Hans.json +29 -0
  1481. homeassistant/components/miele/translations/zh-Hant.json +29 -0
  1482. homeassistant/components/miele/vacuum.py +0 -6
  1483. homeassistant/components/mikrotik/coordinator.py +2 -2
  1484. homeassistant/components/mjpeg/strings.json +1 -1
  1485. homeassistant/components/modbus/modbus.py +2 -2
  1486. homeassistant/components/modbus/strings.json +2 -2
  1487. homeassistant/components/modem_callerid/sensor.py +15 -3
  1488. homeassistant/components/mold_indicator/__init__.py +116 -1
  1489. homeassistant/components/mold_indicator/config_flow.py +3 -0
  1490. homeassistant/components/mold_indicator/sensor.py +2 -2
  1491. homeassistant/components/monoprice/__init__.py +2 -11
  1492. homeassistant/components/monoprice/const.py +0 -1
  1493. homeassistant/components/monzo/manifest.json +1 -1
  1494. homeassistant/components/monzo/translations/ga.json +6 -0
  1495. homeassistant/components/motion_blinds/__init__.py +0 -7
  1496. homeassistant/components/motion_blinds/config_flow.py +2 -2
  1497. homeassistant/components/motioneye/__init__.py +0 -6
  1498. homeassistant/components/motioneye/config_flow.py +2 -2
  1499. homeassistant/components/mpd/translations/ga.json +11 -0
  1500. homeassistant/components/mqtt/climate.py +40 -46
  1501. homeassistant/components/mqtt/config_flow.py +915 -15
  1502. homeassistant/components/mqtt/const.py +33 -4
  1503. homeassistant/components/mqtt/entity.py +73 -3
  1504. homeassistant/components/mqtt/models.py +9 -0
  1505. homeassistant/components/mqtt/repairs.py +74 -0
  1506. homeassistant/components/mqtt/strings.json +289 -5
  1507. homeassistant/components/mqtt/translations/bg.json +5 -0
  1508. homeassistant/components/mqtt/translations/cs.json +54 -0
  1509. homeassistant/components/mqtt/translations/da.json +5 -0
  1510. homeassistant/components/mqtt/translations/de.json +286 -2
  1511. homeassistant/components/mqtt/translations/el.json +53 -0
  1512. homeassistant/components/mqtt/translations/en-GB.json +53 -0
  1513. homeassistant/components/mqtt/translations/en.json +284 -0
  1514. homeassistant/components/mqtt/translations/es.json +142 -2
  1515. homeassistant/components/mqtt/translations/et.json +53 -0
  1516. homeassistant/components/mqtt/translations/fr.json +26 -0
  1517. homeassistant/components/mqtt/translations/ga.json +279 -0
  1518. homeassistant/components/mqtt/translations/he.json +53 -0
  1519. homeassistant/components/mqtt/translations/mk.json +18 -0
  1520. homeassistant/components/mqtt/translations/nl.json +53 -0
  1521. homeassistant/components/mqtt/translations/ru.json +53 -0
  1522. homeassistant/components/mqtt/translations/sk.json +53 -0
  1523. homeassistant/components/mqtt/translations/zh-Hans.json +53 -0
  1524. homeassistant/components/mqtt/translations/zh-Hant.json +53 -0
  1525. homeassistant/components/music_assistant/strings.json +1 -1
  1526. homeassistant/components/music_assistant/translations/fr.json +2 -1
  1527. homeassistant/components/mysensors/manifest.json +1 -1
  1528. homeassistant/components/mystrom/__init__.py +6 -11
  1529. homeassistant/components/mystrom/light.py +4 -4
  1530. homeassistant/components/mystrom/manifest.json +1 -1
  1531. homeassistant/components/mystrom/models.py +4 -0
  1532. homeassistant/components/mystrom/sensor.py +3 -3
  1533. homeassistant/components/mystrom/switch.py +3 -3
  1534. homeassistant/components/myuplink/translations/ga.json +8 -0
  1535. homeassistant/components/nam/translations/ga.json +6 -0
  1536. homeassistant/components/nasweb/__init__.py +1 -1
  1537. homeassistant/components/nasweb/const.py +1 -0
  1538. homeassistant/components/nasweb/coordinator.py +15 -5
  1539. homeassistant/components/nasweb/icons.json +15 -0
  1540. homeassistant/components/nasweb/sensor.py +189 -0
  1541. homeassistant/components/nasweb/strings.json +17 -5
  1542. homeassistant/components/nasweb/translations/bg.json +9 -0
  1543. homeassistant/components/nasweb/translations/ca.json +10 -0
  1544. homeassistant/components/nasweb/translations/cs.json +12 -0
  1545. homeassistant/components/nasweb/translations/de.json +12 -0
  1546. homeassistant/components/nasweb/translations/el.json +12 -0
  1547. homeassistant/components/nasweb/translations/en-GB.json +12 -0
  1548. homeassistant/components/nasweb/translations/en.json +12 -0
  1549. homeassistant/components/nasweb/translations/es.json +12 -0
  1550. homeassistant/components/nasweb/translations/et.json +12 -0
  1551. homeassistant/components/nasweb/translations/ga.json +13 -0
  1552. homeassistant/components/nasweb/translations/he.json +10 -0
  1553. homeassistant/components/nasweb/translations/lt.json +12 -0
  1554. homeassistant/components/nasweb/translations/nb.json +11 -1
  1555. homeassistant/components/nasweb/translations/nl.json +10 -0
  1556. homeassistant/components/nasweb/translations/nn.json +11 -1
  1557. homeassistant/components/nasweb/translations/ru.json +8 -0
  1558. homeassistant/components/nasweb/translations/sk.json +12 -0
  1559. homeassistant/components/nasweb/translations/sv.json +11 -0
  1560. homeassistant/components/nasweb/translations/zh-Hans.json +12 -0
  1561. homeassistant/components/nasweb/translations/zh-Hant.json +12 -0
  1562. homeassistant/components/nest/strings.json +1 -1
  1563. homeassistant/components/netatmo/climate.py +15 -6
  1564. homeassistant/components/netatmo/const.py +1 -0
  1565. homeassistant/components/netgear/__init__.py +0 -7
  1566. homeassistant/components/netgear/config_flow.py +2 -2
  1567. homeassistant/components/nextdns/__init__.py +10 -16
  1568. homeassistant/components/nextdns/coordinator.py +22 -3
  1569. homeassistant/components/nibe_heatpump/button.py +1 -0
  1570. homeassistant/components/nibe_heatpump/coordinator.py +35 -2
  1571. homeassistant/components/nibe_heatpump/number.py +2 -1
  1572. homeassistant/components/nibe_heatpump/strings.json +8 -0
  1573. homeassistant/components/nibe_heatpump/translations/cs.json +8 -0
  1574. homeassistant/components/nibe_heatpump/translations/de.json +8 -0
  1575. homeassistant/components/nibe_heatpump/translations/el.json +8 -0
  1576. homeassistant/components/nibe_heatpump/translations/en-GB.json +8 -0
  1577. homeassistant/components/nibe_heatpump/translations/en.json +8 -0
  1578. homeassistant/components/nibe_heatpump/translations/es.json +8 -0
  1579. homeassistant/components/nibe_heatpump/translations/et.json +8 -0
  1580. homeassistant/components/nibe_heatpump/translations/ga.json +10 -1
  1581. homeassistant/components/nibe_heatpump/translations/it.json +8 -0
  1582. homeassistant/components/nibe_heatpump/translations/ja.json +8 -0
  1583. homeassistant/components/nibe_heatpump/translations/lt.json +8 -0
  1584. homeassistant/components/nibe_heatpump/translations/pt.json +8 -0
  1585. homeassistant/components/nibe_heatpump/translations/sk.json +8 -0
  1586. homeassistant/components/nibe_heatpump/translations/zh-Hans.json +8 -0
  1587. homeassistant/components/nibe_heatpump/translations/zh-Hant.json +8 -0
  1588. homeassistant/components/nina/__init__.py +0 -7
  1589. homeassistant/components/nina/config_flow.py +3 -3
  1590. homeassistant/components/nissan_leaf/translations/de.json +4 -4
  1591. homeassistant/components/nmap_tracker/__init__.py +0 -6
  1592. homeassistant/components/nmap_tracker/config_flow.py +2 -2
  1593. homeassistant/components/nobo_hub/__init__.py +0 -9
  1594. homeassistant/components/nobo_hub/config_flow.py +3 -3
  1595. homeassistant/components/nordpool/const.py +1 -0
  1596. homeassistant/components/nordpool/icons.json +3 -0
  1597. homeassistant/components/nordpool/services.py +71 -8
  1598. homeassistant/components/nordpool/services.yaml +56 -0
  1599. homeassistant/components/nordpool/strings.json +27 -1
  1600. homeassistant/components/nordpool/translations/bg.json +16 -0
  1601. homeassistant/components/nordpool/translations/cs.json +26 -0
  1602. homeassistant/components/nordpool/translations/de.json +26 -0
  1603. homeassistant/components/nordpool/translations/el.json +26 -0
  1604. homeassistant/components/nordpool/translations/en-GB.json +26 -0
  1605. homeassistant/components/nordpool/translations/en.json +26 -0
  1606. homeassistant/components/nordpool/translations/es.json +26 -0
  1607. homeassistant/components/nordpool/translations/et.json +26 -0
  1608. homeassistant/components/nordpool/translations/ga.json +26 -0
  1609. homeassistant/components/nordpool/translations/he.json +7 -0
  1610. homeassistant/components/nordpool/translations/ja.json +26 -0
  1611. homeassistant/components/nordpool/translations/lt.json +26 -0
  1612. homeassistant/components/nordpool/translations/mk.json +12 -1
  1613. homeassistant/components/nordpool/translations/nl.json +9 -0
  1614. homeassistant/components/nordpool/translations/pt.json +26 -0
  1615. homeassistant/components/nordpool/translations/ru.json +21 -0
  1616. homeassistant/components/nordpool/translations/sk.json +26 -0
  1617. homeassistant/components/nordpool/translations/sv.json +26 -0
  1618. homeassistant/components/nordpool/translations/zh-Hans.json +26 -0
  1619. homeassistant/components/nordpool/translations/zh-Hant.json +26 -0
  1620. homeassistant/components/notify/translations/ga.json +11 -0
  1621. homeassistant/components/number/__init__.py +4 -1
  1622. homeassistant/components/number/const.py +10 -0
  1623. homeassistant/components/number/icons.json +3 -0
  1624. homeassistant/components/number/strings.json +3 -0
  1625. homeassistant/components/number/translations/cs.json +3 -0
  1626. homeassistant/components/number/translations/de.json +3 -0
  1627. homeassistant/components/number/translations/el.json +3 -0
  1628. homeassistant/components/number/translations/en-GB.json +3 -0
  1629. homeassistant/components/number/translations/en.json +3 -0
  1630. homeassistant/components/number/translations/es.json +3 -0
  1631. homeassistant/components/number/translations/et.json +3 -0
  1632. homeassistant/components/number/translations/fr.json +3 -0
  1633. homeassistant/components/number/translations/ga.json +3 -0
  1634. homeassistant/components/number/translations/he.json +3 -0
  1635. homeassistant/components/number/translations/lt.json +3 -0
  1636. homeassistant/components/number/translations/nl.json +3 -0
  1637. homeassistant/components/number/translations/pt.json +3 -0
  1638. homeassistant/components/number/translations/ru.json +3 -0
  1639. homeassistant/components/number/translations/sk.json +3 -0
  1640. homeassistant/components/number/translations/sv.json +3 -0
  1641. homeassistant/components/number/translations/zh-Hans.json +3 -0
  1642. homeassistant/components/number/translations/zh-Hant.json +3 -0
  1643. homeassistant/components/nut/__init__.py +0 -6
  1644. homeassistant/components/nut/translations/es.json +6 -6
  1645. homeassistant/components/nzbget/strings.json +2 -2
  1646. homeassistant/components/octoprint/manifest.json +1 -1
  1647. homeassistant/components/octoprint/sensor.py +61 -1
  1648. homeassistant/components/ollama/__init__.py +36 -1
  1649. homeassistant/components/ollama/ai_task.py +80 -0
  1650. homeassistant/components/ollama/config_flow.py +52 -28
  1651. homeassistant/components/ollama/const.py +8 -1
  1652. homeassistant/components/ollama/conversation.py +3 -28
  1653. homeassistant/components/ollama/entity.py +26 -1
  1654. homeassistant/components/ollama/strings.json +44 -1
  1655. homeassistant/components/ollama/translations/bg.json +14 -0
  1656. homeassistant/components/ollama/translations/ca.json +13 -0
  1657. homeassistant/components/ollama/translations/cs.json +43 -0
  1658. homeassistant/components/ollama/translations/de.json +43 -0
  1659. homeassistant/components/ollama/translations/el.json +43 -0
  1660. homeassistant/components/ollama/translations/en-GB.json +43 -0
  1661. homeassistant/components/ollama/translations/en.json +43 -0
  1662. homeassistant/components/ollama/translations/es.json +43 -0
  1663. homeassistant/components/ollama/translations/et.json +43 -0
  1664. homeassistant/components/ollama/translations/fr.json +43 -0
  1665. homeassistant/components/ollama/translations/ga.json +41 -0
  1666. homeassistant/components/ollama/translations/he.json +15 -0
  1667. homeassistant/components/ollama/translations/ja.json +37 -0
  1668. homeassistant/components/ollama/translations/lt.json +38 -0
  1669. homeassistant/components/ollama/translations/mk.json +14 -0
  1670. homeassistant/components/ollama/translations/nl.json +23 -0
  1671. homeassistant/components/ollama/translations/pt.json +37 -0
  1672. homeassistant/components/ollama/translations/ru.json +36 -0
  1673. homeassistant/components/ollama/translations/sk.json +43 -0
  1674. homeassistant/components/ollama/translations/sv.json +25 -0
  1675. homeassistant/components/ollama/translations/zh-Hans.json +43 -0
  1676. homeassistant/components/ollama/translations/zh-Hant.json +43 -0
  1677. homeassistant/components/onboarding/views.py +1 -1
  1678. homeassistant/components/onewire/__init__.py +0 -10
  1679. homeassistant/components/onewire/config_flow.py +6 -2
  1680. homeassistant/components/onkyo/__init__.py +15 -17
  1681. homeassistant/components/onkyo/config_flow.py +33 -20
  1682. homeassistant/components/onkyo/const.py +28 -206
  1683. homeassistant/components/onkyo/manifest.json +4 -2
  1684. homeassistant/components/onkyo/media_player.py +201 -302
  1685. homeassistant/components/onkyo/quality_scale.yaml +6 -12
  1686. homeassistant/components/onkyo/receiver.py +107 -107
  1687. homeassistant/components/onkyo/services.py +4 -14
  1688. homeassistant/components/onkyo/util.py +8 -0
  1689. homeassistant/components/onvif/__init__.py +57 -48
  1690. homeassistant/components/onvif/manifest.json +1 -1
  1691. homeassistant/components/onvif/translations/es.json +1 -1
  1692. homeassistant/components/open_router/__init__.py +58 -0
  1693. homeassistant/components/open_router/ai_task.py +75 -0
  1694. homeassistant/components/open_router/config_flow.py +200 -0
  1695. homeassistant/components/open_router/const.py +17 -0
  1696. homeassistant/components/open_router/conversation.py +69 -0
  1697. homeassistant/components/open_router/entity.py +249 -0
  1698. homeassistant/components/open_router/manifest.json +13 -0
  1699. homeassistant/components/open_router/quality_scale.yaml +88 -0
  1700. homeassistant/components/open_router/strings.json +64 -0
  1701. homeassistant/components/open_router/translations/bg.json +30 -0
  1702. homeassistant/components/open_router/translations/ca.json +29 -0
  1703. homeassistant/components/open_router/translations/cs.json +43 -0
  1704. homeassistant/components/open_router/translations/de.json +64 -0
  1705. homeassistant/components/open_router/translations/el.json +43 -0
  1706. homeassistant/components/open_router/translations/en-GB.json +43 -0
  1707. homeassistant/components/open_router/translations/en.json +64 -0
  1708. homeassistant/components/open_router/translations/es.json +64 -0
  1709. homeassistant/components/open_router/translations/et.json +43 -0
  1710. homeassistant/components/open_router/translations/fr.json +43 -0
  1711. homeassistant/components/open_router/translations/ga.json +45 -0
  1712. homeassistant/components/open_router/translations/he.json +30 -0
  1713. homeassistant/components/open_router/translations/lt.json +37 -0
  1714. homeassistant/components/open_router/translations/mk.json +42 -0
  1715. homeassistant/components/open_router/translations/nl.json +30 -0
  1716. homeassistant/components/open_router/translations/ru.json +43 -0
  1717. homeassistant/components/open_router/translations/sk.json +43 -0
  1718. homeassistant/components/open_router/translations/sv.json +37 -0
  1719. homeassistant/components/open_router/translations/zh-Hans.json +43 -0
  1720. homeassistant/components/open_router/translations/zh-Hant.json +43 -0
  1721. homeassistant/components/openai_conversation/__init__.py +51 -62
  1722. homeassistant/components/openai_conversation/ai_task.py +80 -0
  1723. homeassistant/components/openai_conversation/config_flow.py +60 -49
  1724. homeassistant/components/openai_conversation/const.py +22 -8
  1725. homeassistant/components/openai_conversation/conversation.py +10 -322
  1726. homeassistant/components/openai_conversation/entity.py +468 -0
  1727. homeassistant/components/openai_conversation/manifest.json +2 -2
  1728. homeassistant/components/openai_conversation/strings.json +49 -1
  1729. homeassistant/components/openai_conversation/translations/bg.json +19 -0
  1730. homeassistant/components/openai_conversation/translations/ca.json +17 -0
  1731. homeassistant/components/openai_conversation/translations/cs.json +48 -0
  1732. homeassistant/components/openai_conversation/translations/de.json +48 -0
  1733. homeassistant/components/openai_conversation/translations/el.json +48 -0
  1734. homeassistant/components/openai_conversation/translations/en-GB.json +48 -0
  1735. homeassistant/components/openai_conversation/translations/en.json +48 -0
  1736. homeassistant/components/openai_conversation/translations/es.json +48 -0
  1737. homeassistant/components/openai_conversation/translations/et.json +48 -0
  1738. homeassistant/components/openai_conversation/translations/fr.json +48 -0
  1739. homeassistant/components/openai_conversation/translations/ga.json +51 -0
  1740. homeassistant/components/openai_conversation/translations/he.json +18 -0
  1741. homeassistant/components/openai_conversation/translations/it.json +46 -0
  1742. homeassistant/components/openai_conversation/translations/lt.json +48 -0
  1743. homeassistant/components/openai_conversation/translations/mk.json +48 -0
  1744. homeassistant/components/openai_conversation/translations/nl.json +18 -0
  1745. homeassistant/components/openai_conversation/translations/pt.json +46 -0
  1746. homeassistant/components/openai_conversation/translations/ru.json +45 -0
  1747. homeassistant/components/openai_conversation/translations/sk.json +48 -0
  1748. homeassistant/components/openai_conversation/translations/sv.json +29 -0
  1749. homeassistant/components/openai_conversation/translations/zh-Hans.json +48 -0
  1750. homeassistant/components/openai_conversation/translations/zh-Hant.json +48 -0
  1751. homeassistant/components/opentherm_gw/translations/ga.json +16 -0
  1752. homeassistant/components/openweathermap/config_flow.py +4 -0
  1753. homeassistant/components/openweathermap/strings.json +1 -1
  1754. homeassistant/components/openweathermap/translations/bg.json +1 -2
  1755. homeassistant/components/openweathermap/translations/ca.json +1 -2
  1756. homeassistant/components/openweathermap/translations/cs.json +1 -1
  1757. homeassistant/components/openweathermap/translations/de.json +1 -1
  1758. homeassistant/components/openweathermap/translations/el.json +1 -2
  1759. homeassistant/components/openweathermap/translations/en-GB.json +1 -1
  1760. homeassistant/components/openweathermap/translations/en.json +1 -1
  1761. homeassistant/components/openweathermap/translations/es.json +1 -1
  1762. homeassistant/components/openweathermap/translations/et.json +1 -1
  1763. homeassistant/components/openweathermap/translations/fi.json +1 -2
  1764. homeassistant/components/openweathermap/translations/fr.json +1 -2
  1765. homeassistant/components/openweathermap/translations/ga.json +16 -0
  1766. homeassistant/components/openweathermap/translations/gsw.json +1 -2
  1767. homeassistant/components/openweathermap/translations/he.json +1 -2
  1768. homeassistant/components/openweathermap/translations/hu.json +1 -2
  1769. homeassistant/components/openweathermap/translations/id.json +1 -2
  1770. homeassistant/components/openweathermap/translations/it.json +1 -2
  1771. homeassistant/components/openweathermap/translations/ja.json +1 -2
  1772. homeassistant/components/openweathermap/translations/ko.json +1 -2
  1773. homeassistant/components/openweathermap/translations/lt.json +1 -2
  1774. homeassistant/components/openweathermap/translations/nb.json +1 -2
  1775. homeassistant/components/openweathermap/translations/nl.json +1 -2
  1776. homeassistant/components/openweathermap/translations/pl.json +1 -2
  1777. homeassistant/components/openweathermap/translations/pt-BR.json +1 -2
  1778. homeassistant/components/openweathermap/translations/pt.json +1 -2
  1779. homeassistant/components/openweathermap/translations/ro.json +1 -2
  1780. homeassistant/components/openweathermap/translations/ru.json +1 -2
  1781. homeassistant/components/openweathermap/translations/sk.json +1 -1
  1782. homeassistant/components/openweathermap/translations/sv.json +1 -2
  1783. homeassistant/components/openweathermap/translations/tr.json +1 -2
  1784. homeassistant/components/openweathermap/translations/uk.json +1 -2
  1785. homeassistant/components/openweathermap/translations/vi.json +1 -2
  1786. homeassistant/components/openweathermap/translations/zh-Hans.json +1 -1
  1787. homeassistant/components/openweathermap/translations/zh-Hant.json +1 -1
  1788. homeassistant/components/opower/config_flow.py +9 -2
  1789. homeassistant/components/opower/sensor.py +22 -21
  1790. homeassistant/components/opower/strings.json +69 -0
  1791. homeassistant/components/opower/translations/bg.json +61 -0
  1792. homeassistant/components/opower/translations/ca.json +6 -0
  1793. homeassistant/components/opower/translations/cs.json +70 -1
  1794. homeassistant/components/opower/translations/de.json +70 -1
  1795. homeassistant/components/opower/translations/el.json +70 -1
  1796. homeassistant/components/opower/translations/en-GB.json +70 -1
  1797. homeassistant/components/opower/translations/en.json +70 -1
  1798. homeassistant/components/opower/translations/es.json +70 -1
  1799. homeassistant/components/opower/translations/et.json +70 -1
  1800. homeassistant/components/opower/translations/ga.json +77 -0
  1801. homeassistant/components/opower/translations/he.json +6 -0
  1802. homeassistant/components/opower/translations/ja.json +73 -0
  1803. homeassistant/components/opower/translations/lt.json +70 -1
  1804. homeassistant/components/opower/translations/nl.json +6 -0
  1805. homeassistant/components/opower/translations/pt.json +70 -1
  1806. homeassistant/components/opower/translations/ru.json +14 -1
  1807. homeassistant/components/opower/translations/sk.json +70 -1
  1808. homeassistant/components/opower/translations/sv.json +16 -1
  1809. homeassistant/components/opower/translations/zh-Hans.json +70 -1
  1810. homeassistant/components/opower/translations/zh-Hant.json +70 -1
  1811. homeassistant/components/osoenergy/icons.json +3 -0
  1812. homeassistant/components/osoenergy/manifest.json +1 -1
  1813. homeassistant/components/osoenergy/services.yaml +14 -0
  1814. homeassistant/components/osoenergy/strings.json +10 -0
  1815. homeassistant/components/osoenergy/translations/bg.json +7 -0
  1816. homeassistant/components/osoenergy/translations/cs.json +10 -0
  1817. homeassistant/components/osoenergy/translations/de.json +11 -1
  1818. homeassistant/components/osoenergy/translations/en.json +10 -0
  1819. homeassistant/components/osoenergy/translations/es.json +9 -0
  1820. homeassistant/components/osoenergy/translations/et.json +10 -0
  1821. homeassistant/components/osoenergy/translations/ga.json +21 -0
  1822. homeassistant/components/osoenergy/translations/sk.json +9 -0
  1823. homeassistant/components/osoenergy/translations/zh-Hans.json +9 -0
  1824. homeassistant/components/osoenergy/translations/zh-Hant.json +9 -0
  1825. homeassistant/components/osoenergy/water_heater.py +34 -1
  1826. homeassistant/components/overkiz/strings.json +1 -1
  1827. homeassistant/components/paperless_ngx/__init__.py +1 -1
  1828. homeassistant/components/pegel_online/__init__.py +6 -2
  1829. homeassistant/components/pegel_online/manifest.json +1 -0
  1830. homeassistant/components/pegel_online/quality_scale.yaml +87 -0
  1831. homeassistant/components/pegel_online/sensor.py +3 -0
  1832. homeassistant/components/pegel_online/strings.json +8 -2
  1833. homeassistant/components/pegel_online/translations/cs.json +7 -1
  1834. homeassistant/components/pegel_online/translations/de.json +7 -1
  1835. homeassistant/components/pegel_online/translations/el.json +7 -1
  1836. homeassistant/components/pegel_online/translations/en-GB.json +7 -1
  1837. homeassistant/components/pegel_online/translations/en.json +7 -1
  1838. homeassistant/components/pegel_online/translations/es.json +7 -1
  1839. homeassistant/components/pegel_online/translations/et.json +7 -1
  1840. homeassistant/components/pegel_online/translations/fr.json +1 -2
  1841. homeassistant/components/pegel_online/translations/ga.json +15 -0
  1842. homeassistant/components/pegel_online/translations/hu.json +7 -1
  1843. homeassistant/components/pegel_online/translations/it.json +7 -0
  1844. homeassistant/components/pegel_online/translations/ja.json +7 -0
  1845. homeassistant/components/pegel_online/translations/lt.json +7 -1
  1846. homeassistant/components/pegel_online/translations/mk.json +1 -2
  1847. homeassistant/components/pegel_online/translations/nl.json +7 -0
  1848. homeassistant/components/pegel_online/translations/pt.json +7 -1
  1849. homeassistant/components/pegel_online/translations/ru.json +7 -1
  1850. homeassistant/components/pegel_online/translations/sk.json +7 -1
  1851. homeassistant/components/pegel_online/translations/sv.json +7 -1
  1852. homeassistant/components/pegel_online/translations/zh-Hans.json +7 -1
  1853. homeassistant/components/pegel_online/translations/zh-Hant.json +7 -1
  1854. homeassistant/components/philips_js/config_flow.py +83 -35
  1855. homeassistant/components/philips_js/manifest.json +2 -1
  1856. homeassistant/components/philips_js/strings.json +5 -0
  1857. homeassistant/components/philips_js/translations/bg.json +1 -0
  1858. homeassistant/components/philips_js/translations/ca.json +1 -0
  1859. homeassistant/components/philips_js/translations/cs.json +5 -0
  1860. homeassistant/components/philips_js/translations/de.json +5 -0
  1861. homeassistant/components/philips_js/translations/el.json +5 -0
  1862. homeassistant/components/philips_js/translations/en-GB.json +5 -0
  1863. homeassistant/components/philips_js/translations/en.json +5 -0
  1864. homeassistant/components/philips_js/translations/es.json +5 -0
  1865. homeassistant/components/philips_js/translations/et.json +5 -0
  1866. homeassistant/components/philips_js/translations/ga.json +7 -0
  1867. homeassistant/components/philips_js/translations/he.json +1 -0
  1868. homeassistant/components/philips_js/translations/ja.json +5 -0
  1869. homeassistant/components/philips_js/translations/lt.json +5 -0
  1870. homeassistant/components/philips_js/translations/nl.json +1 -0
  1871. homeassistant/components/philips_js/translations/pt.json +5 -0
  1872. homeassistant/components/philips_js/translations/ru.json +5 -0
  1873. homeassistant/components/philips_js/translations/sk.json +5 -0
  1874. homeassistant/components/philips_js/translations/sv.json +5 -0
  1875. homeassistant/components/philips_js/translations/zh-Hans.json +5 -0
  1876. homeassistant/components/philips_js/translations/zh-Hant.json +5 -0
  1877. homeassistant/components/pi_hole/__init__.py +123 -16
  1878. homeassistant/components/pi_hole/binary_sensor.py +1 -1
  1879. homeassistant/components/pi_hole/config_flow.py +48 -37
  1880. homeassistant/components/pi_hole/const.py +7 -0
  1881. homeassistant/components/pi_hole/entity.py +4 -1
  1882. homeassistant/components/pi_hole/icons.json +9 -0
  1883. homeassistant/components/pi_hole/manifest.json +1 -1
  1884. homeassistant/components/pi_hole/sensor.py +96 -10
  1885. homeassistant/components/pi_hole/strings.json +21 -6
  1886. homeassistant/components/pi_hole/switch.py +1 -1
  1887. homeassistant/components/pi_hole/translations/bg.json +7 -5
  1888. homeassistant/components/pi_hole/translations/ca.json +6 -5
  1889. homeassistant/components/pi_hole/translations/cs.json +18 -5
  1890. homeassistant/components/pi_hole/translations/da.json +0 -5
  1891. homeassistant/components/pi_hole/translations/de.json +18 -5
  1892. homeassistant/components/pi_hole/translations/el.json +18 -5
  1893. homeassistant/components/pi_hole/translations/en-GB.json +18 -5
  1894. homeassistant/components/pi_hole/translations/en.json +18 -5
  1895. homeassistant/components/pi_hole/translations/es.json +18 -5
  1896. homeassistant/components/pi_hole/translations/et.json +18 -5
  1897. homeassistant/components/pi_hole/translations/fi.json +0 -5
  1898. homeassistant/components/pi_hole/translations/fr.json +0 -5
  1899. homeassistant/components/pi_hole/translations/ga.json +15 -0
  1900. homeassistant/components/pi_hole/translations/he.json +18 -5
  1901. homeassistant/components/pi_hole/translations/hu.json +0 -5
  1902. homeassistant/components/pi_hole/translations/id.json +0 -5
  1903. homeassistant/components/pi_hole/translations/it.json +0 -5
  1904. homeassistant/components/pi_hole/translations/ja.json +18 -5
  1905. homeassistant/components/pi_hole/translations/ko.json +0 -5
  1906. homeassistant/components/pi_hole/translations/lt.json +18 -5
  1907. homeassistant/components/pi_hole/translations/mk.json +9 -0
  1908. homeassistant/components/pi_hole/translations/nb.json +0 -5
  1909. homeassistant/components/pi_hole/translations/nl.json +6 -5
  1910. homeassistant/components/pi_hole/translations/pl.json +0 -5
  1911. homeassistant/components/pi_hole/translations/pt-BR.json +0 -5
  1912. homeassistant/components/pi_hole/translations/pt.json +18 -5
  1913. homeassistant/components/pi_hole/translations/ro.json +0 -5
  1914. homeassistant/components/pi_hole/translations/ru.json +18 -5
  1915. homeassistant/components/pi_hole/translations/sk.json +18 -5
  1916. homeassistant/components/pi_hole/translations/sl.json +0 -5
  1917. homeassistant/components/pi_hole/translations/sv.json +9 -5
  1918. homeassistant/components/pi_hole/translations/tr.json +0 -5
  1919. homeassistant/components/pi_hole/translations/uk.json +0 -5
  1920. homeassistant/components/pi_hole/translations/vi.json +0 -5
  1921. homeassistant/components/pi_hole/translations/zh-Hans.json +18 -5
  1922. homeassistant/components/pi_hole/translations/zh-Hant.json +18 -5
  1923. homeassistant/components/pi_hole/update.py +15 -15
  1924. homeassistant/components/ping/__init__.py +0 -6
  1925. homeassistant/components/ping/config_flow.py +3 -3
  1926. homeassistant/components/playstation_network/__init__.py +44 -4
  1927. homeassistant/components/playstation_network/binary_sensor.py +76 -0
  1928. homeassistant/components/playstation_network/config_flow.py +106 -7
  1929. homeassistant/components/playstation_network/const.py +4 -2
  1930. homeassistant/components/playstation_network/coordinator.py +167 -14
  1931. homeassistant/components/playstation_network/diagnostics.py +15 -7
  1932. homeassistant/components/playstation_network/entity.py +54 -0
  1933. homeassistant/components/playstation_network/helpers.py +92 -37
  1934. homeassistant/components/playstation_network/icons.json +36 -0
  1935. homeassistant/components/playstation_network/image.py +154 -0
  1936. homeassistant/components/playstation_network/media_player.py +35 -11
  1937. homeassistant/components/playstation_network/notify.py +126 -0
  1938. homeassistant/components/playstation_network/quality_scale.yaml +1 -1
  1939. homeassistant/components/playstation_network/sensor.py +94 -40
  1940. homeassistant/components/playstation_network/strings.json +93 -2
  1941. homeassistant/components/playstation_network/translations/bg.json +18 -1
  1942. homeassistant/components/playstation_network/translations/ca.json +2 -1
  1943. homeassistant/components/playstation_network/translations/cs.json +50 -0
  1944. homeassistant/components/playstation_network/translations/de.json +91 -0
  1945. homeassistant/components/playstation_network/translations/el.json +36 -0
  1946. homeassistant/components/playstation_network/translations/en-GB.json +50 -0
  1947. homeassistant/components/playstation_network/translations/en.json +91 -0
  1948. homeassistant/components/playstation_network/translations/es.json +50 -0
  1949. homeassistant/components/playstation_network/translations/et.json +50 -0
  1950. homeassistant/components/playstation_network/translations/fr.json +13 -0
  1951. homeassistant/components/playstation_network/translations/ga.json +86 -0
  1952. homeassistant/components/playstation_network/translations/he.json +9 -1
  1953. homeassistant/components/playstation_network/translations/hu.json +11 -0
  1954. homeassistant/components/playstation_network/translations/id.json +2 -1
  1955. homeassistant/components/playstation_network/translations/it.json +14 -0
  1956. homeassistant/components/playstation_network/translations/ja.json +24 -0
  1957. homeassistant/components/playstation_network/translations/lt.json +28 -0
  1958. homeassistant/components/playstation_network/translations/mk.json +11 -0
  1959. homeassistant/components/playstation_network/translations/nl.json +16 -1
  1960. homeassistant/components/playstation_network/translations/pt.json +28 -0
  1961. homeassistant/components/playstation_network/translations/ru.json +33 -0
  1962. homeassistant/components/playstation_network/translations/sk.json +50 -0
  1963. homeassistant/components/playstation_network/translations/sl.json +28 -0
  1964. homeassistant/components/playstation_network/translations/sv.json +29 -1
  1965. homeassistant/components/playstation_network/translations/zh-Hans.json +50 -0
  1966. homeassistant/components/playstation_network/translations/zh-Hant.json +50 -0
  1967. homeassistant/components/plugwise/__init__.py +4 -4
  1968. homeassistant/components/plugwise/climate.py +3 -3
  1969. homeassistant/components/plugwise/config_flow.py +3 -3
  1970. homeassistant/components/plugwise/entity.py +1 -1
  1971. homeassistant/components/plugwise/manifest.json +1 -1
  1972. homeassistant/components/plugwise/select.py +2 -2
  1973. homeassistant/components/plugwise/translations/ga.json +5 -0
  1974. homeassistant/components/proximity/__init__.py +0 -8
  1975. homeassistant/components/proximity/config_flow.py +3 -3
  1976. homeassistant/components/proximity/strings.json +12 -12
  1977. homeassistant/components/proxy/manifest.json +1 -1
  1978. homeassistant/components/ps4/media_player.py +2 -2
  1979. homeassistant/components/purpleair/__init__.py +0 -7
  1980. homeassistant/components/purpleair/config_flow.py +2 -2
  1981. homeassistant/components/purpleair/sensor.py +1 -1
  1982. homeassistant/components/pyload/config_flow.py +58 -0
  1983. homeassistant/components/pyload/strings.json +12 -0
  1984. homeassistant/components/pyload/translations/bg.json +6 -0
  1985. homeassistant/components/pyload/translations/ca.json +6 -0
  1986. homeassistant/components/pyload/translations/cs.json +12 -0
  1987. homeassistant/components/pyload/translations/de.json +12 -0
  1988. homeassistant/components/pyload/translations/el.json +12 -0
  1989. homeassistant/components/pyload/translations/en-GB.json +12 -0
  1990. homeassistant/components/pyload/translations/en.json +12 -0
  1991. homeassistant/components/pyload/translations/es.json +12 -0
  1992. homeassistant/components/pyload/translations/et.json +12 -0
  1993. homeassistant/components/pyload/translations/fr.json +12 -0
  1994. homeassistant/components/pyload/translations/ga.json +11 -0
  1995. homeassistant/components/pyload/translations/he.json +6 -0
  1996. homeassistant/components/pyload/translations/lt.json +12 -0
  1997. homeassistant/components/pyload/translations/nl.json +10 -0
  1998. homeassistant/components/pyload/translations/pt.json +12 -0
  1999. homeassistant/components/pyload/translations/ru.json +12 -0
  2000. homeassistant/components/pyload/translations/sk.json +12 -0
  2001. homeassistant/components/pyload/translations/sv.json +10 -0
  2002. homeassistant/components/pyload/translations/zh-Hans.json +12 -0
  2003. homeassistant/components/pyload/translations/zh-Hant.json +12 -0
  2004. homeassistant/components/qbus/entity.py +2 -5
  2005. homeassistant/components/qbus/manifest.json +1 -1
  2006. homeassistant/components/qnap/strings.json +1 -1
  2007. homeassistant/components/qrcode/manifest.json +1 -1
  2008. homeassistant/components/rachio/translations/es.json +1 -1
  2009. homeassistant/components/rainbird/strings.json +2 -2
  2010. homeassistant/components/rainbird/translations/es.json +3 -3
  2011. homeassistant/components/rainmachine/strings.json +11 -11
  2012. homeassistant/components/rainmachine/translations/es.json +1 -1
  2013. homeassistant/components/random/translations/da.json +7 -0
  2014. homeassistant/components/recorder/pool.py +7 -0
  2015. homeassistant/components/remote/translations/es.json +1 -1
  2016. homeassistant/components/remote_calendar/calendar.py +1 -1
  2017. homeassistant/components/remote_calendar/manifest.json +1 -1
  2018. homeassistant/components/renault/__init__.py +2 -2
  2019. homeassistant/components/renault/services.py +3 -2
  2020. homeassistant/components/reolink/__init__.py +0 -11
  2021. homeassistant/components/reolink/config_flow.py +2 -2
  2022. homeassistant/components/reolink/diagnostics.py +3 -1
  2023. homeassistant/components/reolink/entity.py +1 -1
  2024. homeassistant/components/reolink/icons.json +21 -1
  2025. homeassistant/components/reolink/manifest.json +1 -1
  2026. homeassistant/components/reolink/number.py +33 -1
  2027. homeassistant/components/reolink/select.py +25 -0
  2028. homeassistant/components/reolink/sensor.py +22 -3
  2029. homeassistant/components/reolink/strings.json +15 -0
  2030. homeassistant/components/reolink/switch.py +9 -0
  2031. homeassistant/components/reolink/translations/cs.json +15 -0
  2032. homeassistant/components/reolink/translations/de.json +15 -0
  2033. homeassistant/components/reolink/translations/el.json +3 -0
  2034. homeassistant/components/reolink/translations/en-GB.json +15 -0
  2035. homeassistant/components/reolink/translations/en.json +15 -0
  2036. homeassistant/components/reolink/translations/es.json +25 -10
  2037. homeassistant/components/reolink/translations/et.json +15 -0
  2038. homeassistant/components/reolink/translations/ga.json +34 -1
  2039. homeassistant/components/reolink/translations/mk.json +5 -0
  2040. homeassistant/components/reolink/translations/sk.json +15 -0
  2041. homeassistant/components/reolink/translations/zh-Hans.json +15 -0
  2042. homeassistant/components/reolink/translations/zh-Hant.json +15 -0
  2043. homeassistant/components/rest/sensor.py +1 -15
  2044. homeassistant/components/rest_command/__init__.py +5 -1
  2045. homeassistant/components/rflink/light.py +2 -2
  2046. homeassistant/components/rfxtrx/translations/es.json +8 -8
  2047. homeassistant/components/ring/manifest.json +1 -0
  2048. homeassistant/components/ring/quality_scale.yaml +71 -0
  2049. homeassistant/components/risco/alarm_control_panel.py +7 -3
  2050. homeassistant/components/risco/strings.json +6 -6
  2051. homeassistant/components/risco/translations/cs.json +8 -0
  2052. homeassistant/components/risco/translations/fr.json +6 -0
  2053. homeassistant/components/roborock/__init__.py +0 -8
  2054. homeassistant/components/roborock/config_flow.py +4 -9
  2055. homeassistant/components/roborock/translations/ga.json +11 -1
  2056. homeassistant/components/roku/__init__.py +0 -7
  2057. homeassistant/components/roku/config_flow.py +2 -2
  2058. homeassistant/components/roku/media_player.py +4 -4
  2059. homeassistant/components/roomba/translations/es.json +1 -1
  2060. homeassistant/components/roon/event.py +4 -3
  2061. homeassistant/components/roon/media_player.py +4 -3
  2062. homeassistant/components/russound_rio/const.py +4 -0
  2063. homeassistant/components/russound_rio/manifest.json +1 -1
  2064. homeassistant/components/russound_rio/media_player.py +51 -2
  2065. homeassistant/components/russound_rio/strings.json +9 -0
  2066. homeassistant/components/russound_rio/translations/cs.json +9 -0
  2067. homeassistant/components/russound_rio/translations/de.json +9 -0
  2068. homeassistant/components/russound_rio/translations/el.json +9 -0
  2069. homeassistant/components/russound_rio/translations/en-GB.json +9 -0
  2070. homeassistant/components/russound_rio/translations/en.json +9 -0
  2071. homeassistant/components/russound_rio/translations/es.json +9 -0
  2072. homeassistant/components/russound_rio/translations/et.json +9 -0
  2073. homeassistant/components/russound_rio/translations/ga.json +9 -0
  2074. homeassistant/components/russound_rio/translations/ja.json +9 -0
  2075. homeassistant/components/russound_rio/translations/lt.json +9 -0
  2076. homeassistant/components/russound_rio/translations/mk.json +13 -1
  2077. homeassistant/components/russound_rio/translations/pt.json +9 -0
  2078. homeassistant/components/russound_rio/translations/sk.json +9 -0
  2079. homeassistant/components/russound_rio/translations/zh-Hans.json +9 -0
  2080. homeassistant/components/russound_rio/translations/zh-Hant.json +9 -0
  2081. homeassistant/components/samsungtv/strings.json +1 -1
  2082. homeassistant/components/schlage/manifest.json +1 -1
  2083. homeassistant/components/scrape/manifest.json +1 -1
  2084. homeassistant/components/scrape/sensor.py +2 -13
  2085. homeassistant/components/screenlogic/manifest.json +1 -1
  2086. homeassistant/components/screenlogic/translations/es.json +3 -3
  2087. homeassistant/components/sensor/__init__.py +3 -1
  2088. homeassistant/components/sensor/const.py +14 -0
  2089. homeassistant/components/sensor/device_condition.py +3 -0
  2090. homeassistant/components/sensor/device_trigger.py +3 -0
  2091. homeassistant/components/sensor/icons.json +3 -0
  2092. homeassistant/components/sensor/strings.json +5 -0
  2093. homeassistant/components/sensor/translations/cs.json +5 -0
  2094. homeassistant/components/sensor/translations/de.json +5 -0
  2095. homeassistant/components/sensor/translations/el.json +5 -0
  2096. homeassistant/components/sensor/translations/en-GB.json +5 -0
  2097. homeassistant/components/sensor/translations/en.json +5 -0
  2098. homeassistant/components/sensor/translations/es.json +5 -0
  2099. homeassistant/components/sensor/translations/et.json +5 -0
  2100. homeassistant/components/sensor/translations/fr.json +5 -0
  2101. homeassistant/components/sensor/translations/ga.json +5 -0
  2102. homeassistant/components/sensor/translations/he.json +5 -0
  2103. homeassistant/components/sensor/translations/lt.json +5 -0
  2104. homeassistant/components/sensor/translations/nl.json +3 -0
  2105. homeassistant/components/sensor/translations/pt.json +5 -0
  2106. homeassistant/components/sensor/translations/ru.json +5 -0
  2107. homeassistant/components/sensor/translations/sk.json +5 -0
  2108. homeassistant/components/sensor/translations/sv.json +4 -0
  2109. homeassistant/components/sensor/translations/zh-Hans.json +5 -0
  2110. homeassistant/components/sensor/translations/zh-Hant.json +5 -0
  2111. homeassistant/components/seven_segments/manifest.json +1 -1
  2112. homeassistant/components/sfr_box/manifest.json +1 -1
  2113. homeassistant/components/sfr_box/strings.json +1 -1
  2114. homeassistant/components/shelly/__init__.py +1 -1
  2115. homeassistant/components/shelly/button.py +4 -21
  2116. homeassistant/components/shelly/climate.py +2 -8
  2117. homeassistant/components/shelly/config_flow.py +2 -2
  2118. homeassistant/components/shelly/coordinator.py +15 -5
  2119. homeassistant/components/shelly/entity.py +41 -32
  2120. homeassistant/components/shelly/event.py +2 -8
  2121. homeassistant/components/shelly/manifest.json +1 -1
  2122. homeassistant/components/shelly/sensor.py +3 -7
  2123. homeassistant/components/shelly/strings.json +1 -1
  2124. homeassistant/components/shelly/translations/cs.json +1 -1
  2125. homeassistant/components/shelly/translations/da.json +3 -1
  2126. homeassistant/components/shelly/translations/de.json +1 -1
  2127. homeassistant/components/shelly/translations/el.json +2 -1
  2128. homeassistant/components/shelly/translations/en-GB.json +1 -1
  2129. homeassistant/components/shelly/translations/en.json +1 -1
  2130. homeassistant/components/shelly/translations/es.json +1 -1
  2131. homeassistant/components/shelly/translations/et.json +1 -1
  2132. homeassistant/components/shelly/translations/fr.json +1 -1
  2133. homeassistant/components/shelly/translations/ga.json +2 -1
  2134. homeassistant/components/shelly/translations/hu.json +1 -2
  2135. homeassistant/components/shelly/translations/lt.json +1 -2
  2136. homeassistant/components/shelly/translations/mk.json +5 -0
  2137. homeassistant/components/shelly/translations/pl.json +1 -1
  2138. homeassistant/components/shelly/translations/pt.json +1 -2
  2139. homeassistant/components/shelly/translations/ru.json +1 -1
  2140. homeassistant/components/shelly/translations/sk.json +1 -1
  2141. homeassistant/components/shelly/translations/sv.json +1 -2
  2142. homeassistant/components/shelly/translations/zh-Hans.json +1 -1
  2143. homeassistant/components/shelly/translations/zh-Hant.json +1 -1
  2144. homeassistant/components/shelly/utils.py +16 -1
  2145. homeassistant/components/sighthound/manifest.json +1 -1
  2146. homeassistant/components/simplisafe/translations/es.json +4 -4
  2147. homeassistant/components/sleepiq/const.py +4 -0
  2148. homeassistant/components/sleepiq/manifest.json +1 -1
  2149. homeassistant/components/sleepiq/number.py +53 -1
  2150. homeassistant/components/sleepiq/select.py +61 -1
  2151. homeassistant/components/sleepiq/strings.json +11 -0
  2152. homeassistant/components/sleepiq/translations/bg.json +9 -0
  2153. homeassistant/components/sleepiq/translations/cs.json +11 -0
  2154. homeassistant/components/sleepiq/translations/de.json +11 -0
  2155. homeassistant/components/sleepiq/translations/el.json +11 -0
  2156. homeassistant/components/sleepiq/translations/en-GB.json +11 -0
  2157. homeassistant/components/sleepiq/translations/en.json +11 -0
  2158. homeassistant/components/sleepiq/translations/es.json +11 -0
  2159. homeassistant/components/sleepiq/translations/et.json +11 -0
  2160. homeassistant/components/sleepiq/translations/ga.json +10 -0
  2161. homeassistant/components/sleepiq/translations/he.json +5 -0
  2162. homeassistant/components/sleepiq/translations/mk.json +16 -1
  2163. homeassistant/components/sleepiq/translations/nl.json +5 -0
  2164. homeassistant/components/sleepiq/translations/ru.json +11 -0
  2165. homeassistant/components/sleepiq/translations/sk.json +11 -0
  2166. homeassistant/components/sleepiq/translations/zh-Hans.json +11 -0
  2167. homeassistant/components/sleepiq/translations/zh-Hant.json +11 -0
  2168. homeassistant/components/slide_local/__init__.py +0 -7
  2169. homeassistant/components/slide_local/config_flow.py +6 -2
  2170. homeassistant/components/smarla/manifest.json +1 -1
  2171. homeassistant/components/smartthings/__init__.py +1 -0
  2172. homeassistant/components/smartthings/translations/es.json +2 -2
  2173. homeassistant/components/smartthings/vacuum.py +95 -0
  2174. homeassistant/components/smarttub/binary_sensor.py +29 -3
  2175. homeassistant/components/smarttub/const.py +1 -0
  2176. homeassistant/components/smarttub/controller.py +2 -0
  2177. homeassistant/components/smarttub/entity.py +30 -4
  2178. homeassistant/components/smarttub/manifest.json +1 -1
  2179. homeassistant/components/smarttub/sensor.py +10 -10
  2180. homeassistant/components/smhi/__init__.py +1 -1
  2181. homeassistant/components/smhi/coordinator.py +10 -0
  2182. homeassistant/components/smhi/entity.py +7 -1
  2183. homeassistant/components/smhi/icons.json +27 -0
  2184. homeassistant/components/smhi/sensor.py +139 -0
  2185. homeassistant/components/smhi/strings.json +34 -0
  2186. homeassistant/components/smhi/translations/bg.json +33 -0
  2187. homeassistant/components/smhi/translations/cs.json +34 -0
  2188. homeassistant/components/smhi/translations/de.json +34 -0
  2189. homeassistant/components/smhi/translations/el.json +34 -0
  2190. homeassistant/components/smhi/translations/en-GB.json +34 -0
  2191. homeassistant/components/smhi/translations/en.json +34 -0
  2192. homeassistant/components/smhi/translations/es.json +34 -0
  2193. homeassistant/components/smhi/translations/et.json +34 -0
  2194. homeassistant/components/smhi/translations/ga.json +34 -0
  2195. homeassistant/components/smhi/translations/lt.json +34 -0
  2196. homeassistant/components/smhi/translations/mk.json +34 -1
  2197. homeassistant/components/smhi/translations/nl.json +11 -0
  2198. homeassistant/components/smhi/translations/sk.json +34 -0
  2199. homeassistant/components/smhi/translations/sv.json +34 -0
  2200. homeassistant/components/smhi/translations/zh-Hans.json +34 -0
  2201. homeassistant/components/smhi/translations/zh-Hant.json +34 -0
  2202. homeassistant/components/smhi/weather.py +19 -5
  2203. homeassistant/components/snapcast/media_player.py +75 -1
  2204. homeassistant/components/snmp/device_tracker.py +37 -23
  2205. homeassistant/components/snmp/manifest.json +1 -1
  2206. homeassistant/components/snmp/sensor.py +7 -7
  2207. homeassistant/components/snmp/switch.py +15 -8
  2208. homeassistant/components/snmp/util.py +10 -10
  2209. homeassistant/components/somfy_mylink/__init__.py +1 -16
  2210. homeassistant/components/somfy_mylink/config_flow.py +2 -2
  2211. homeassistant/components/sonarr/__init__.py +0 -6
  2212. homeassistant/components/sonarr/config_flow.py +2 -2
  2213. homeassistant/components/sonos/favorites.py +1 -1
  2214. homeassistant/components/sonos/sensor.py +65 -3
  2215. homeassistant/components/sonos/strings.json +8 -0
  2216. homeassistant/components/sonos/translations/bg.json +9 -0
  2217. homeassistant/components/sonos/translations/cs.json +8 -0
  2218. homeassistant/components/sonos/translations/de.json +8 -0
  2219. homeassistant/components/sonos/translations/el.json +8 -0
  2220. homeassistant/components/sonos/translations/en-GB.json +8 -0
  2221. homeassistant/components/sonos/translations/en.json +8 -0
  2222. homeassistant/components/sonos/translations/es.json +8 -0
  2223. homeassistant/components/sonos/translations/et.json +8 -0
  2224. homeassistant/components/sonos/translations/fr.json +8 -0
  2225. homeassistant/components/sonos/translations/ga.json +12 -0
  2226. homeassistant/components/sonos/translations/he.json +11 -0
  2227. homeassistant/components/sonos/translations/hu.json +8 -0
  2228. homeassistant/components/sonos/translations/it.json +8 -0
  2229. homeassistant/components/sonos/translations/ja.json +8 -0
  2230. homeassistant/components/sonos/translations/lt.json +8 -0
  2231. homeassistant/components/sonos/translations/mk.json +12 -0
  2232. homeassistant/components/sonos/translations/nl.json +6 -0
  2233. homeassistant/components/sonos/translations/pt.json +8 -0
  2234. homeassistant/components/sonos/translations/ru.json +8 -0
  2235. homeassistant/components/sonos/translations/sk.json +8 -0
  2236. homeassistant/components/sonos/translations/sv.json +8 -0
  2237. homeassistant/components/sonos/translations/zh-Hans.json +8 -0
  2238. homeassistant/components/sonos/translations/zh-Hant.json +8 -0
  2239. homeassistant/components/speedtestdotnet/__init__.py +0 -8
  2240. homeassistant/components/speedtestdotnet/config_flow.py +6 -2
  2241. homeassistant/components/sql/__init__.py +0 -7
  2242. homeassistant/components/sql/config_flow.py +2 -2
  2243. homeassistant/components/sql/sensor.py +2 -1
  2244. homeassistant/components/squeezebox/__init__.py +11 -15
  2245. homeassistant/components/squeezebox/binary_sensor.py +1 -1
  2246. homeassistant/components/squeezebox/const.py +2 -3
  2247. homeassistant/components/squeezebox/coordinator.py +4 -4
  2248. homeassistant/components/squeezebox/entity.py +0 -4
  2249. homeassistant/components/squeezebox/media_player.py +60 -16
  2250. homeassistant/components/squeezebox/sensor.py +1 -1
  2251. homeassistant/components/starline/translations/en-GB.json +1 -1
  2252. homeassistant/components/starlink/sensor.py +1 -1
  2253. homeassistant/components/statistics/__init__.py +44 -1
  2254. homeassistant/components/statistics/config_flow.py +11 -9
  2255. homeassistant/components/statistics/sensor.py +21 -14
  2256. homeassistant/components/statistics/translations/ga.json +37 -6
  2257. homeassistant/components/stookwijzer/__init__.py +15 -1
  2258. homeassistant/components/stookwijzer/const.py +3 -0
  2259. homeassistant/components/stookwijzer/icons.json +7 -0
  2260. homeassistant/components/stookwijzer/services.py +76 -0
  2261. homeassistant/components/stookwijzer/services.yaml +7 -0
  2262. homeassistant/components/stookwijzer/strings.json +18 -0
  2263. homeassistant/components/stookwijzer/translations/cs.json +18 -0
  2264. homeassistant/components/stookwijzer/translations/de.json +18 -0
  2265. homeassistant/components/stookwijzer/translations/el.json +18 -0
  2266. homeassistant/components/stookwijzer/translations/en-GB.json +18 -0
  2267. homeassistant/components/stookwijzer/translations/en.json +18 -0
  2268. homeassistant/components/stookwijzer/translations/es.json +18 -0
  2269. homeassistant/components/stookwijzer/translations/et.json +18 -0
  2270. homeassistant/components/stookwijzer/translations/ga.json +18 -0
  2271. homeassistant/components/stookwijzer/translations/lt.json +18 -0
  2272. homeassistant/components/stookwijzer/translations/pt.json +18 -0
  2273. homeassistant/components/stookwijzer/translations/sk.json +18 -0
  2274. homeassistant/components/stookwijzer/translations/sv.json +3 -0
  2275. homeassistant/components/stookwijzer/translations/zh-Hans.json +18 -0
  2276. homeassistant/components/stookwijzer/translations/zh-Hant.json +18 -0
  2277. homeassistant/components/stream/manifest.json +1 -1
  2278. homeassistant/components/swiss_public_transport/translations/ga.json +5 -1
  2279. homeassistant/components/switch_as_x/__init__.py +23 -19
  2280. homeassistant/components/switch_as_x/config_flow.py +1 -1
  2281. homeassistant/components/switch_as_x/entity.py +1 -6
  2282. homeassistant/components/switchbot/strings.json +3 -3
  2283. homeassistant/components/switchbot_cloud/__init__.py +29 -2
  2284. homeassistant/components/switchbot_cloud/const.py +2 -0
  2285. homeassistant/components/switchbot_cloud/fan.py +120 -0
  2286. homeassistant/components/switchbot_cloud/light.py +153 -0
  2287. homeassistant/components/switchbot_cloud/manifest.json +1 -1
  2288. homeassistant/components/switchbot_cloud/sensor.py +1 -0
  2289. homeassistant/components/switchbot_cloud/vacuum.py +136 -4
  2290. homeassistant/components/synology_dsm/__init__.py +0 -8
  2291. homeassistant/components/synology_dsm/config_flow.py +2 -2
  2292. homeassistant/components/system_bridge/translations/ga.json +11 -0
  2293. homeassistant/components/system_health/__init__.py +1 -1
  2294. homeassistant/components/tailscale/translations/ga.json +9 -0
  2295. homeassistant/components/tami4/translations/ga.json +8 -0
  2296. homeassistant/components/tankerkoenig/__init__.py +0 -9
  2297. homeassistant/components/tankerkoenig/binary_sensor.py +3 -0
  2298. homeassistant/components/tankerkoenig/config_flow.py +4 -4
  2299. homeassistant/components/tankerkoenig/coordinator.py +15 -3
  2300. homeassistant/components/tankerkoenig/manifest.json +1 -0
  2301. homeassistant/components/tankerkoenig/quality_scale.yaml +81 -0
  2302. homeassistant/components/tankerkoenig/sensor.py +12 -2
  2303. homeassistant/components/tankerkoenig/strings.json +34 -1
  2304. homeassistant/components/tankerkoenig/translations/ca.json +1 -2
  2305. homeassistant/components/tankerkoenig/translations/cs.json +35 -2
  2306. homeassistant/components/tankerkoenig/translations/de.json +35 -2
  2307. homeassistant/components/tankerkoenig/translations/el.json +1 -2
  2308. homeassistant/components/tankerkoenig/translations/en-GB.json +24 -2
  2309. homeassistant/components/tankerkoenig/translations/en.json +35 -2
  2310. homeassistant/components/tankerkoenig/translations/es.json +35 -2
  2311. homeassistant/components/tankerkoenig/translations/et.json +35 -2
  2312. homeassistant/components/tankerkoenig/translations/fi.json +1 -2
  2313. homeassistant/components/tankerkoenig/translations/fr.json +1 -2
  2314. homeassistant/components/tankerkoenig/translations/ga.json +52 -0
  2315. homeassistant/components/tankerkoenig/translations/hu.json +1 -2
  2316. homeassistant/components/tankerkoenig/translations/id.json +1 -2
  2317. homeassistant/components/tankerkoenig/translations/it.json +1 -2
  2318. homeassistant/components/tankerkoenig/translations/ja.json +1 -2
  2319. homeassistant/components/tankerkoenig/translations/ko.json +1 -2
  2320. homeassistant/components/tankerkoenig/translations/lt.json +1 -2
  2321. homeassistant/components/tankerkoenig/translations/nb.json +1 -2
  2322. homeassistant/components/tankerkoenig/translations/nl.json +1 -2
  2323. homeassistant/components/tankerkoenig/translations/pl.json +1 -2
  2324. homeassistant/components/tankerkoenig/translations/pt-BR.json +1 -2
  2325. homeassistant/components/tankerkoenig/translations/pt.json +1 -2
  2326. homeassistant/components/tankerkoenig/translations/ro.json +1 -2
  2327. homeassistant/components/tankerkoenig/translations/ru.json +1 -2
  2328. homeassistant/components/tankerkoenig/translations/sk.json +35 -2
  2329. homeassistant/components/tankerkoenig/translations/sv.json +1 -2
  2330. homeassistant/components/tankerkoenig/translations/tr.json +1 -2
  2331. homeassistant/components/tankerkoenig/translations/uk.json +1 -2
  2332. homeassistant/components/tankerkoenig/translations/zh-Hans.json +35 -2
  2333. homeassistant/components/tankerkoenig/translations/zh-Hant.json +35 -2
  2334. homeassistant/components/telegram_bot/config_flow.py +6 -2
  2335. homeassistant/components/telegram_bot/services.yaml +48 -42
  2336. homeassistant/components/telegram_bot/strings.json +11 -7
  2337. homeassistant/components/telegram_bot/translations/ca.json +0 -5
  2338. homeassistant/components/telegram_bot/translations/cs.json +9 -5
  2339. homeassistant/components/telegram_bot/translations/de.json +9 -5
  2340. homeassistant/components/telegram_bot/translations/el.json +7 -4
  2341. homeassistant/components/telegram_bot/translations/en-GB.json +9 -5
  2342. homeassistant/components/telegram_bot/translations/en.json +9 -5
  2343. homeassistant/components/telegram_bot/translations/es.json +9 -5
  2344. homeassistant/components/telegram_bot/translations/et.json +9 -5
  2345. homeassistant/components/telegram_bot/translations/fi.json +0 -6
  2346. homeassistant/components/telegram_bot/translations/ga.json +9 -1
  2347. homeassistant/components/telegram_bot/translations/he.json +0 -4
  2348. homeassistant/components/telegram_bot/translations/hu.json +0 -4
  2349. homeassistant/components/telegram_bot/translations/id.json +0 -6
  2350. homeassistant/components/telegram_bot/translations/it.json +7 -4
  2351. homeassistant/components/telegram_bot/translations/ja.json +7 -4
  2352. homeassistant/components/telegram_bot/translations/lt.json +7 -4
  2353. homeassistant/components/telegram_bot/translations/nl.json +0 -4
  2354. homeassistant/components/telegram_bot/translations/pt.json +7 -4
  2355. homeassistant/components/telegram_bot/translations/ru.json +0 -4
  2356. homeassistant/components/telegram_bot/translations/sk.json +9 -5
  2357. homeassistant/components/telegram_bot/translations/sv.json +0 -4
  2358. homeassistant/components/telegram_bot/translations/tr.json +0 -4
  2359. homeassistant/components/telegram_bot/translations/zh-Hans.json +9 -5
  2360. homeassistant/components/telegram_bot/translations/zh-Hant.json +9 -5
  2361. homeassistant/components/tellduslive/strings.json +2 -2
  2362. homeassistant/components/template/alarm_control_panel.py +65 -153
  2363. homeassistant/components/template/binary_sensor.py +50 -123
  2364. homeassistant/components/template/button.py +39 -51
  2365. homeassistant/components/template/config.py +25 -21
  2366. homeassistant/components/template/config_flow.py +220 -16
  2367. homeassistant/components/template/const.py +14 -1
  2368. homeassistant/components/template/cover.py +89 -104
  2369. homeassistant/components/template/entity.py +35 -5
  2370. homeassistant/components/template/fan.py +85 -106
  2371. homeassistant/components/template/helpers.py +217 -5
  2372. homeassistant/components/template/image.py +29 -55
  2373. homeassistant/components/template/light.py +73 -79
  2374. homeassistant/components/template/lock.py +88 -77
  2375. homeassistant/components/template/number.py +148 -158
  2376. homeassistant/components/template/select.py +121 -112
  2377. homeassistant/components/template/sensor.py +51 -106
  2378. homeassistant/components/template/strings.json +482 -49
  2379. homeassistant/components/template/switch.py +98 -181
  2380. homeassistant/components/template/template_entity.py +27 -66
  2381. homeassistant/components/template/translations/bg.json +5 -15
  2382. homeassistant/components/template/translations/ca.json +11 -82
  2383. homeassistant/components/template/translations/cs.json +151 -12
  2384. homeassistant/components/template/translations/da.json +3 -14
  2385. homeassistant/components/template/translations/de.json +396 -39
  2386. homeassistant/components/template/translations/el.json +11 -87
  2387. homeassistant/components/template/translations/en-GB.json +165 -26
  2388. homeassistant/components/template/translations/en.json +459 -27
  2389. homeassistant/components/template/translations/es.json +186 -26
  2390. homeassistant/components/template/translations/et.json +173 -34
  2391. homeassistant/components/template/translations/fi.json +4 -19
  2392. homeassistant/components/template/translations/fr.json +151 -18
  2393. homeassistant/components/template/translations/ga.json +173 -68
  2394. homeassistant/components/template/translations/he.json +11 -87
  2395. homeassistant/components/template/translations/hu.json +11 -87
  2396. homeassistant/components/template/translations/id.json +11 -87
  2397. homeassistant/components/template/translations/it.json +9 -25
  2398. homeassistant/components/template/translations/ja.json +11 -87
  2399. homeassistant/components/template/translations/ko.json +5 -30
  2400. homeassistant/components/template/translations/lb.json +1 -8
  2401. homeassistant/components/template/translations/lt.json +11 -87
  2402. homeassistant/components/template/translations/lv.json +2 -15
  2403. homeassistant/components/template/translations/nb.json +3 -14
  2404. homeassistant/components/template/translations/nl.json +10 -37
  2405. homeassistant/components/template/translations/pl.json +9 -70
  2406. homeassistant/components/template/translations/pt-BR.json +0 -20
  2407. homeassistant/components/template/translations/pt.json +11 -87
  2408. homeassistant/components/template/translations/ro.json +1 -8
  2409. homeassistant/components/template/translations/ru.json +11 -87
  2410. homeassistant/components/template/translations/sk.json +164 -25
  2411. homeassistant/components/template/translations/sl.json +11 -85
  2412. homeassistant/components/template/translations/sv.json +11 -87
  2413. homeassistant/components/template/translations/tr.json +11 -87
  2414. homeassistant/components/template/translations/uk.json +11 -87
  2415. homeassistant/components/template/translations/vi.json +11 -87
  2416. homeassistant/components/template/translations/zh-Hans.json +169 -30
  2417. homeassistant/components/template/translations/zh-Hant.json +156 -17
  2418. homeassistant/components/template/trigger_entity.py +1 -1
  2419. homeassistant/components/template/vacuum.py +99 -109
  2420. homeassistant/components/template/weather.py +69 -66
  2421. homeassistant/components/tensorflow/manifest.json +2 -2
  2422. homeassistant/components/tesla_fleet/config_flow.py +3 -1
  2423. homeassistant/components/tesla_fleet/manifest.json +1 -1
  2424. homeassistant/components/tesla_fleet/strings.json +1 -1
  2425. homeassistant/components/tesla_wall_connector/translations/ga.json +8 -1
  2426. homeassistant/components/teslemetry/__init__.py +1 -6
  2427. homeassistant/components/teslemetry/binary_sensor.py +1 -1
  2428. homeassistant/components/teslemetry/climate.py +2 -2
  2429. homeassistant/components/teslemetry/coordinator.py +1 -0
  2430. homeassistant/components/teslemetry/cover.py +6 -5
  2431. homeassistant/components/teslemetry/device_tracker.py +1 -1
  2432. homeassistant/components/teslemetry/lock.py +2 -2
  2433. homeassistant/components/teslemetry/manifest.json +1 -1
  2434. homeassistant/components/teslemetry/media_player.py +1 -1
  2435. homeassistant/components/teslemetry/number.py +1 -1
  2436. homeassistant/components/teslemetry/select.py +1 -1
  2437. homeassistant/components/teslemetry/sensor.py +2 -2
  2438. homeassistant/components/teslemetry/strings.json +1 -1
  2439. homeassistant/components/teslemetry/switch.py +1 -2
  2440. homeassistant/components/teslemetry/translations/ga.json +161 -1
  2441. homeassistant/components/teslemetry/update.py +1 -1
  2442. homeassistant/components/tessie/manifest.json +1 -1
  2443. homeassistant/components/tessie/update.py +7 -0
  2444. homeassistant/components/thethingsnetwork/translations/ga.json +19 -0
  2445. homeassistant/components/threshold/__init__.py +44 -6
  2446. homeassistant/components/threshold/binary_sensor.py +24 -18
  2447. homeassistant/components/threshold/config_flow.py +10 -7
  2448. homeassistant/components/tibber/translations/ga.json +3 -0
  2449. homeassistant/components/time_date/config_flow.py +5 -16
  2450. homeassistant/components/tomorrowio/strings.json +2 -2
  2451. homeassistant/components/totalconnect/translations/es.json +2 -2
  2452. homeassistant/components/touchline_sl/manifest.json +1 -1
  2453. homeassistant/components/tplink/strings.json +2 -2
  2454. homeassistant/components/tplink/translations/cs.json +4 -0
  2455. homeassistant/components/traccar_server/config_flow.py +66 -1
  2456. homeassistant/components/traccar_server/coordinator.py +9 -3
  2457. homeassistant/components/traccar_server/helpers.py +15 -1
  2458. homeassistant/components/traccar_server/strings.json +11 -2
  2459. homeassistant/components/traccar_server/translations/bg.json +9 -1
  2460. homeassistant/components/traccar_server/translations/ca.json +9 -1
  2461. homeassistant/components/traccar_server/translations/cs.json +10 -1
  2462. homeassistant/components/traccar_server/translations/de.json +10 -1
  2463. homeassistant/components/traccar_server/translations/el.json +10 -1
  2464. homeassistant/components/traccar_server/translations/en-GB.json +10 -1
  2465. homeassistant/components/traccar_server/translations/en.json +10 -1
  2466. homeassistant/components/traccar_server/translations/es.json +10 -1
  2467. homeassistant/components/traccar_server/translations/et.json +10 -1
  2468. homeassistant/components/traccar_server/translations/ga.json +7 -0
  2469. homeassistant/components/traccar_server/translations/he.json +9 -1
  2470. homeassistant/components/traccar_server/translations/ja.json +10 -1
  2471. homeassistant/components/traccar_server/translations/lt.json +10 -1
  2472. homeassistant/components/traccar_server/translations/nl.json +9 -1
  2473. homeassistant/components/traccar_server/translations/pt.json +10 -1
  2474. homeassistant/components/traccar_server/translations/ru.json +10 -1
  2475. homeassistant/components/traccar_server/translations/sk.json +10 -1
  2476. homeassistant/components/traccar_server/translations/sv.json +10 -1
  2477. homeassistant/components/traccar_server/translations/zh-Hans.json +10 -1
  2478. homeassistant/components/traccar_server/translations/zh-Hant.json +10 -1
  2479. homeassistant/components/trafikverket_train/__init__.py +0 -6
  2480. homeassistant/components/trafikverket_train/config_flow.py +2 -2
  2481. homeassistant/components/transmission/coordinator.py +2 -2
  2482. homeassistant/components/trend/__init__.py +44 -1
  2483. homeassistant/components/trend/binary_sensor.py +10 -10
  2484. homeassistant/components/trend/config_flow.py +2 -0
  2485. homeassistant/components/trend/manifest.json +1 -1
  2486. homeassistant/components/tts/__init__.py +13 -3
  2487. homeassistant/components/tts/entity.py +0 -12
  2488. homeassistant/components/tuya/alarm_control_panel.py +2 -1
  2489. homeassistant/components/tuya/binary_sensor.py +117 -52
  2490. homeassistant/components/tuya/button.py +8 -8
  2491. homeassistant/components/tuya/camera.py +3 -3
  2492. homeassistant/components/tuya/climate.py +28 -17
  2493. homeassistant/components/tuya/const.py +8 -11
  2494. homeassistant/components/tuya/cover.py +43 -38
  2495. homeassistant/components/tuya/entity.py +3 -120
  2496. homeassistant/components/tuya/fan.py +19 -6
  2497. homeassistant/components/tuya/humidifier.py +16 -3
  2498. homeassistant/components/tuya/icons.json +6 -0
  2499. homeassistant/components/tuya/light.py +75 -46
  2500. homeassistant/components/tuya/models.py +124 -0
  2501. homeassistant/components/tuya/number.py +143 -81
  2502. homeassistant/components/tuya/select.py +176 -162
  2503. homeassistant/components/tuya/sensor.py +691 -636
  2504. homeassistant/components/tuya/siren.py +8 -8
  2505. homeassistant/components/tuya/strings.json +80 -110
  2506. homeassistant/components/tuya/switch.py +284 -176
  2507. homeassistant/components/tuya/translations/bg.json +33 -86
  2508. homeassistant/components/tuya/translations/ca.json +6 -121
  2509. homeassistant/components/tuya/translations/cs.json +89 -119
  2510. homeassistant/components/tuya/translations/de.json +89 -119
  2511. homeassistant/components/tuya/translations/el.json +77 -119
  2512. homeassistant/components/tuya/translations/en-GB.json +77 -119
  2513. homeassistant/components/tuya/translations/en.json +89 -119
  2514. homeassistant/components/tuya/translations/es.json +79 -121
  2515. homeassistant/components/tuya/translations/et.json +77 -119
  2516. homeassistant/components/tuya/translations/fi.json +5 -121
  2517. homeassistant/components/tuya/translations/fr.json +0 -121
  2518. homeassistant/components/tuya/translations/ga.json +79 -0
  2519. homeassistant/components/tuya/translations/gl.json +0 -68
  2520. homeassistant/components/tuya/translations/he.json +20 -120
  2521. homeassistant/components/tuya/translations/hu.json +0 -121
  2522. homeassistant/components/tuya/translations/id.json +0 -119
  2523. homeassistant/components/tuya/translations/it.json +9 -121
  2524. homeassistant/components/tuya/translations/ja.json +0 -121
  2525. homeassistant/components/tuya/translations/ko.json +0 -121
  2526. homeassistant/components/tuya/translations/lt.json +51 -121
  2527. homeassistant/components/tuya/translations/lv.json +0 -18
  2528. homeassistant/components/tuya/translations/mk.json +43 -0
  2529. homeassistant/components/tuya/translations/nb.json +0 -29
  2530. homeassistant/components/tuya/translations/nl.json +29 -121
  2531. homeassistant/components/tuya/translations/pl.json +0 -23
  2532. homeassistant/components/tuya/translations/pt-BR.json +0 -121
  2533. homeassistant/components/tuya/translations/pt.json +23 -121
  2534. homeassistant/components/tuya/translations/ro.json +0 -121
  2535. homeassistant/components/tuya/translations/ru.json +26 -121
  2536. homeassistant/components/tuya/translations/sk.json +77 -119
  2537. homeassistant/components/tuya/translations/sl.json +0 -103
  2538. homeassistant/components/tuya/translations/sr-Latn.json +0 -3
  2539. homeassistant/components/tuya/translations/sv.json +26 -121
  2540. homeassistant/components/tuya/translations/tr.json +0 -121
  2541. homeassistant/components/tuya/translations/uk.json +0 -123
  2542. homeassistant/components/tuya/translations/vi.json +0 -3
  2543. homeassistant/components/tuya/translations/zh-Hans.json +77 -119
  2544. homeassistant/components/tuya/translations/zh-Hant.json +77 -119
  2545. homeassistant/components/tuya/util.py +28 -0
  2546. homeassistant/components/tuya/vacuum.py +14 -14
  2547. homeassistant/components/unifi/hub/hub.py +3 -1
  2548. homeassistant/components/unifiprotect/__init__.py +57 -60
  2549. homeassistant/components/unifiprotect/camera.py +1 -1
  2550. homeassistant/components/unifiprotect/config_flow.py +23 -9
  2551. homeassistant/components/unifiprotect/const.py +1 -1
  2552. homeassistant/components/unifiprotect/data.py +2 -2
  2553. homeassistant/components/unifiprotect/manifest.json +1 -1
  2554. homeassistant/components/unifiprotect/repairs.py +0 -50
  2555. homeassistant/components/unifiprotect/services.py +10 -5
  2556. homeassistant/components/unifiprotect/strings.json +27 -27
  2557. homeassistant/components/unifiprotect/translations/bg.json +11 -10
  2558. homeassistant/components/unifiprotect/translations/ca.json +0 -16
  2559. homeassistant/components/unifiprotect/translations/cs.json +23 -20
  2560. homeassistant/components/unifiprotect/translations/de.json +20 -20
  2561. homeassistant/components/unifiprotect/translations/el.json +20 -20
  2562. homeassistant/components/unifiprotect/translations/en-GB.json +20 -20
  2563. homeassistant/components/unifiprotect/translations/en.json +20 -20
  2564. homeassistant/components/unifiprotect/translations/es.json +20 -20
  2565. homeassistant/components/unifiprotect/translations/et.json +20 -20
  2566. homeassistant/components/unifiprotect/translations/fi.json +17 -19
  2567. homeassistant/components/unifiprotect/translations/fr.json +0 -7
  2568. homeassistant/components/unifiprotect/translations/fy.json +1 -14
  2569. homeassistant/components/unifiprotect/translations/ga.json +27 -7
  2570. homeassistant/components/unifiprotect/translations/he.json +3 -0
  2571. homeassistant/components/unifiprotect/translations/hu.json +0 -20
  2572. homeassistant/components/unifiprotect/translations/id.json +0 -18
  2573. homeassistant/components/unifiprotect/translations/it.json +0 -3
  2574. homeassistant/components/unifiprotect/translations/ja.json +0 -20
  2575. homeassistant/components/unifiprotect/translations/ko.json +0 -5
  2576. homeassistant/components/unifiprotect/translations/lt.json +0 -20
  2577. homeassistant/components/unifiprotect/translations/nb.json +0 -5
  2578. homeassistant/components/unifiprotect/translations/nl.json +3 -19
  2579. homeassistant/components/unifiprotect/translations/pl.json +0 -5
  2580. homeassistant/components/unifiprotect/translations/pt-BR.json +0 -3
  2581. homeassistant/components/unifiprotect/translations/pt.json +0 -20
  2582. homeassistant/components/unifiprotect/translations/ro.json +0 -5
  2583. homeassistant/components/unifiprotect/translations/ru.json +0 -20
  2584. homeassistant/components/unifiprotect/translations/sk.json +20 -20
  2585. homeassistant/components/unifiprotect/translations/sv.json +0 -20
  2586. homeassistant/components/unifiprotect/translations/tr.json +0 -20
  2587. homeassistant/components/unifiprotect/translations/uk.json +0 -5
  2588. homeassistant/components/unifiprotect/translations/zh-Hans.json +20 -20
  2589. homeassistant/components/unifiprotect/translations/zh-Hant.json +20 -20
  2590. homeassistant/components/unifiprotect/utils.py +3 -0
  2591. homeassistant/components/uptime_kuma/__init__.py +74 -0
  2592. homeassistant/components/uptime_kuma/config_flow.py +231 -0
  2593. homeassistant/components/uptime_kuma/const.py +26 -0
  2594. homeassistant/components/uptime_kuma/coordinator.py +137 -0
  2595. homeassistant/components/uptime_kuma/diagnostics.py +23 -0
  2596. homeassistant/components/uptime_kuma/icons.json +32 -0
  2597. homeassistant/components/uptime_kuma/manifest.json +11 -0
  2598. homeassistant/components/uptime_kuma/quality_scale.yaml +76 -0
  2599. homeassistant/components/uptime_kuma/sensor.py +178 -0
  2600. homeassistant/components/uptime_kuma/strings.json +137 -0
  2601. homeassistant/components/uptime_kuma/translations/bg.json +57 -0
  2602. homeassistant/components/uptime_kuma/translations/ca.json +35 -0
  2603. homeassistant/components/uptime_kuma/translations/cs.json +127 -0
  2604. homeassistant/components/uptime_kuma/translations/de.json +137 -0
  2605. homeassistant/components/uptime_kuma/translations/el.json +119 -0
  2606. homeassistant/components/uptime_kuma/translations/en-GB.json +127 -0
  2607. homeassistant/components/uptime_kuma/translations/en.json +137 -0
  2608. homeassistant/components/uptime_kuma/translations/es.json +127 -0
  2609. homeassistant/components/uptime_kuma/translations/et.json +127 -0
  2610. homeassistant/components/uptime_kuma/translations/fr.json +124 -0
  2611. homeassistant/components/uptime_kuma/translations/ga.json +111 -0
  2612. homeassistant/components/uptime_kuma/translations/he.json +35 -0
  2613. homeassistant/components/uptime_kuma/translations/lt.json +119 -0
  2614. homeassistant/components/uptime_kuma/translations/mk.json +17 -0
  2615. homeassistant/components/uptime_kuma/translations/nb.json +31 -0
  2616. homeassistant/components/uptime_kuma/translations/nl.json +62 -0
  2617. homeassistant/components/uptime_kuma/translations/pt.json +94 -0
  2618. homeassistant/components/uptime_kuma/translations/ru.json +101 -0
  2619. homeassistant/components/uptime_kuma/translations/sk.json +127 -0
  2620. homeassistant/components/uptime_kuma/translations/sv.json +109 -0
  2621. homeassistant/components/uptime_kuma/translations/zh-Hans.json +127 -0
  2622. homeassistant/components/uptime_kuma/translations/zh-Hant.json +127 -0
  2623. homeassistant/components/uptime_kuma/update.py +122 -0
  2624. homeassistant/components/utility_meter/__init__.py +34 -8
  2625. homeassistant/components/utility_meter/config_flow.py +2 -0
  2626. homeassistant/components/utility_meter/select.py +6 -6
  2627. homeassistant/components/utility_meter/sensor.py +9 -10
  2628. homeassistant/components/utility_meter/strings.json +5 -0
  2629. homeassistant/components/utility_meter/translations/bg.json +5 -0
  2630. homeassistant/components/utility_meter/translations/cs.json +5 -0
  2631. homeassistant/components/utility_meter/translations/de.json +5 -0
  2632. homeassistant/components/utility_meter/translations/el.json +5 -0
  2633. homeassistant/components/utility_meter/translations/en-GB.json +5 -0
  2634. homeassistant/components/utility_meter/translations/en.json +5 -0
  2635. homeassistant/components/utility_meter/translations/es.json +5 -0
  2636. homeassistant/components/utility_meter/translations/et.json +5 -0
  2637. homeassistant/components/utility_meter/translations/fr.json +5 -0
  2638. homeassistant/components/utility_meter/translations/ga.json +7 -0
  2639. homeassistant/components/utility_meter/translations/he.json +5 -0
  2640. homeassistant/components/utility_meter/translations/ja.json +5 -0
  2641. homeassistant/components/utility_meter/translations/lt.json +5 -0
  2642. homeassistant/components/utility_meter/translations/nl.json +5 -0
  2643. homeassistant/components/utility_meter/translations/pt.json +5 -0
  2644. homeassistant/components/utility_meter/translations/ru.json +5 -0
  2645. homeassistant/components/utility_meter/translations/sk.json +5 -0
  2646. homeassistant/components/utility_meter/translations/zh-Hans.json +5 -0
  2647. homeassistant/components/utility_meter/translations/zh-Hant.json +5 -0
  2648. homeassistant/components/v2c/translations/ga.json +20 -0
  2649. homeassistant/components/vacuum/__init__.py +65 -2
  2650. homeassistant/components/vallox/strings.json +1 -1
  2651. homeassistant/components/vegehub/strings.json +2 -2
  2652. homeassistant/components/velbus/__init__.py +2 -2
  2653. homeassistant/components/velbus/const.py +0 -1
  2654. homeassistant/components/velbus/services.py +42 -90
  2655. homeassistant/components/velbus/services.yaml +0 -20
  2656. homeassistant/components/velbus/strings.json +0 -16
  2657. homeassistant/components/velbus/translations/bg.json +0 -18
  2658. homeassistant/components/velbus/translations/ca.json +0 -12
  2659. homeassistant/components/velbus/translations/cs.json +0 -16
  2660. homeassistant/components/velbus/translations/de.json +0 -16
  2661. homeassistant/components/velbus/translations/el.json +0 -16
  2662. homeassistant/components/velbus/translations/en-GB.json +0 -16
  2663. homeassistant/components/velbus/translations/en.json +0 -16
  2664. homeassistant/components/velbus/translations/es.json +0 -16
  2665. homeassistant/components/velbus/translations/et.json +0 -16
  2666. homeassistant/components/velbus/translations/fi.json +0 -19
  2667. homeassistant/components/velbus/translations/gl.json +0 -18
  2668. homeassistant/components/velbus/translations/hu.json +0 -16
  2669. homeassistant/components/velbus/translations/it.json +0 -15
  2670. homeassistant/components/velbus/translations/ja.json +0 -16
  2671. homeassistant/components/velbus/translations/ko.json +0 -19
  2672. homeassistant/components/velbus/translations/lt.json +0 -16
  2673. homeassistant/components/velbus/translations/nb.json +0 -30
  2674. homeassistant/components/velbus/translations/nl.json +0 -15
  2675. homeassistant/components/velbus/translations/pt.json +0 -16
  2676. homeassistant/components/velbus/translations/ru.json +0 -16
  2677. homeassistant/components/velbus/translations/sk.json +0 -16
  2678. homeassistant/components/velbus/translations/sv.json +0 -16
  2679. homeassistant/components/velbus/translations/tr.json +0 -16
  2680. homeassistant/components/velbus/translations/uk.json +0 -5
  2681. homeassistant/components/velbus/translations/zh-Hans.json +0 -16
  2682. homeassistant/components/velbus/translations/zh-Hant.json +0 -16
  2683. homeassistant/components/velux/binary_sensor.py +63 -0
  2684. homeassistant/components/velux/const.py +1 -1
  2685. homeassistant/components/vera/__init__.py +0 -6
  2686. homeassistant/components/vera/config_flow.py +2 -2
  2687. homeassistant/components/vesync/const.py +1 -0
  2688. homeassistant/components/vodafone_station/__init__.py +0 -8
  2689. homeassistant/components/vodafone_station/config_flow.py +6 -2
  2690. homeassistant/components/volvo/__init__.py +97 -0
  2691. homeassistant/components/volvo/api.py +38 -0
  2692. homeassistant/components/volvo/application_credentials.py +37 -0
  2693. homeassistant/components/volvo/config_flow.py +239 -0
  2694. homeassistant/components/volvo/const.py +14 -0
  2695. homeassistant/components/volvo/coordinator.py +255 -0
  2696. homeassistant/components/volvo/entity.py +90 -0
  2697. homeassistant/components/volvo/icons.json +81 -0
  2698. homeassistant/components/volvo/manifest.json +13 -0
  2699. homeassistant/components/volvo/quality_scale.yaml +82 -0
  2700. homeassistant/components/volvo/sensor.py +399 -0
  2701. homeassistant/components/volvo/strings.json +178 -0
  2702. homeassistant/components/volvo/translations/bg.json +55 -0
  2703. homeassistant/components/volvo/translations/cs.json +178 -0
  2704. homeassistant/components/volvo/translations/de.json +178 -0
  2705. homeassistant/components/volvo/translations/en.json +178 -0
  2706. homeassistant/components/volvo/translations/es.json +178 -0
  2707. homeassistant/components/volvo/translations/et.json +178 -0
  2708. homeassistant/components/volvo/translations/ga.json +151 -0
  2709. homeassistant/components/volvo/translations/nl.json +46 -0
  2710. homeassistant/components/volvo/translations/sk.json +178 -0
  2711. homeassistant/components/volvo/translations/zh-Hans.json +178 -0
  2712. homeassistant/components/volvo/translations/zh-Hant.json +178 -0
  2713. homeassistant/components/wallbox/__init__.py +11 -11
  2714. homeassistant/components/wallbox/coordinator.py +57 -8
  2715. homeassistant/components/wallbox/lock.py +7 -5
  2716. homeassistant/components/wallbox/number.py +8 -6
  2717. homeassistant/components/wallbox/select.py +7 -4
  2718. homeassistant/components/wallbox/sensor.py +7 -5
  2719. homeassistant/components/wallbox/strings.json +19 -2
  2720. homeassistant/components/wallbox/switch.py +7 -5
  2721. homeassistant/components/wallbox/translations/bg.json +9 -0
  2722. homeassistant/components/wallbox/translations/cs.json +17 -0
  2723. homeassistant/components/wallbox/translations/de.json +17 -0
  2724. homeassistant/components/wallbox/translations/el.json +17 -0
  2725. homeassistant/components/wallbox/translations/en-GB.json +17 -0
  2726. homeassistant/components/wallbox/translations/en.json +17 -0
  2727. homeassistant/components/wallbox/translations/es.json +17 -0
  2728. homeassistant/components/wallbox/translations/et.json +17 -0
  2729. homeassistant/components/wallbox/translations/ga.json +23 -0
  2730. homeassistant/components/wallbox/translations/ja.json +8 -0
  2731. homeassistant/components/wallbox/translations/lt.json +17 -0
  2732. homeassistant/components/wallbox/translations/mk.json +5 -0
  2733. homeassistant/components/wallbox/translations/nl.json +5 -0
  2734. homeassistant/components/wallbox/translations/pt.json +17 -0
  2735. homeassistant/components/wallbox/translations/ru.json +3 -0
  2736. homeassistant/components/wallbox/translations/sk.json +17 -0
  2737. homeassistant/components/wallbox/translations/zh-Hans.json +17 -0
  2738. homeassistant/components/wallbox/translations/zh-Hant.json +17 -0
  2739. homeassistant/components/waqi/__init__.py +5 -10
  2740. homeassistant/components/waqi/config_flow.py +42 -48
  2741. homeassistant/components/waqi/coordinator.py +4 -2
  2742. homeassistant/components/waqi/icons.json +39 -0
  2743. homeassistant/components/waqi/sensor.py +3 -16
  2744. homeassistant/components/water_heater/translations/ga.json +9 -0
  2745. homeassistant/components/waze_travel_time/strings.json +6 -6
  2746. homeassistant/components/waze_travel_time/translations/cs.json +10 -0
  2747. homeassistant/components/waze_travel_time/translations/et.json +10 -0
  2748. homeassistant/components/waze_travel_time/translations/fr.json +14 -0
  2749. homeassistant/components/waze_travel_time/translations/ga.json +37 -0
  2750. homeassistant/components/weatherflow_cloud/__init__.py +83 -6
  2751. homeassistant/components/weatherflow_cloud/config_flow.py +3 -2
  2752. homeassistant/components/weatherflow_cloud/const.py +4 -1
  2753. homeassistant/components/weatherflow_cloud/coordinator.py +176 -15
  2754. homeassistant/components/weatherflow_cloud/entity.py +6 -13
  2755. homeassistant/components/weatherflow_cloud/icons.json +98 -8
  2756. homeassistant/components/weatherflow_cloud/manifest.json +1 -1
  2757. homeassistant/components/weatherflow_cloud/sensor.py +296 -19
  2758. homeassistant/components/weatherflow_cloud/strings.json +47 -18
  2759. homeassistant/components/weatherflow_cloud/translations/ca.json +0 -3
  2760. homeassistant/components/weatherflow_cloud/translations/cs.json +6 -3
  2761. homeassistant/components/weatherflow_cloud/translations/de.json +33 -3
  2762. homeassistant/components/weatherflow_cloud/translations/el.json +6 -3
  2763. homeassistant/components/weatherflow_cloud/translations/en-GB.json +6 -3
  2764. homeassistant/components/weatherflow_cloud/translations/en.json +33 -3
  2765. homeassistant/components/weatherflow_cloud/translations/es.json +33 -3
  2766. homeassistant/components/weatherflow_cloud/translations/et.json +6 -3
  2767. homeassistant/components/weatherflow_cloud/translations/fr.json +0 -3
  2768. homeassistant/components/weatherflow_cloud/translations/ga.json +33 -3
  2769. homeassistant/components/weatherflow_cloud/translations/he.json +0 -3
  2770. homeassistant/components/weatherflow_cloud/translations/hu.json +0 -3
  2771. homeassistant/components/weatherflow_cloud/translations/it.json +10 -0
  2772. homeassistant/components/weatherflow_cloud/translations/ja.json +0 -3
  2773. homeassistant/components/weatherflow_cloud/translations/lt.json +6 -3
  2774. homeassistant/components/weatherflow_cloud/translations/mk.json +3 -3
  2775. homeassistant/components/weatherflow_cloud/translations/nl.json +6 -0
  2776. homeassistant/components/weatherflow_cloud/translations/pt.json +6 -3
  2777. homeassistant/components/weatherflow_cloud/translations/ru.json +0 -3
  2778. homeassistant/components/weatherflow_cloud/translations/sk.json +6 -3
  2779. homeassistant/components/weatherflow_cloud/translations/sv.json +3 -3
  2780. homeassistant/components/weatherflow_cloud/translations/tr.json +0 -3
  2781. homeassistant/components/weatherflow_cloud/translations/zh-Hans.json +6 -3
  2782. homeassistant/components/weatherflow_cloud/translations/zh-Hant.json +6 -3
  2783. homeassistant/components/weatherflow_cloud/weather.py +7 -9
  2784. homeassistant/components/webmin/translations/ga.json +39 -0
  2785. homeassistant/components/webostv/__init__.py +0 -7
  2786. homeassistant/components/webostv/config_flow.py +7 -3
  2787. homeassistant/components/webostv/strings.json +6 -6
  2788. homeassistant/components/websocket_api/commands.py +53 -0
  2789. homeassistant/components/whirlpool/binary_sensor.py +14 -7
  2790. homeassistant/components/whirlpool/config_flow.py +5 -1
  2791. homeassistant/components/whirlpool/diagnostics.py +7 -3
  2792. homeassistant/components/whirlpool/manifest.json +1 -1
  2793. homeassistant/components/whirlpool/sensor.py +169 -74
  2794. homeassistant/components/whirlpool/strings.json +3 -5
  2795. homeassistant/components/whirlpool/translations/cs.json +0 -2
  2796. homeassistant/components/whirlpool/translations/de.json +0 -2
  2797. homeassistant/components/whirlpool/translations/en-GB.json +0 -2
  2798. homeassistant/components/whirlpool/translations/en.json +0 -2
  2799. homeassistant/components/whirlpool/translations/es.json +8 -10
  2800. homeassistant/components/whirlpool/translations/et.json +0 -2
  2801. homeassistant/components/whirlpool/translations/fr.json +0 -2
  2802. homeassistant/components/whirlpool/translations/fy.json +0 -2
  2803. homeassistant/components/whirlpool/translations/ga.json +0 -2
  2804. homeassistant/components/whirlpool/translations/hu.json +0 -2
  2805. homeassistant/components/whirlpool/translations/it.json +0 -1
  2806. homeassistant/components/whirlpool/translations/lt.json +0 -2
  2807. homeassistant/components/whirlpool/translations/nl.json +0 -2
  2808. homeassistant/components/whirlpool/translations/pt.json +0 -2
  2809. homeassistant/components/whirlpool/translations/ru.json +0 -2
  2810. homeassistant/components/whirlpool/translations/sk.json +0 -2
  2811. homeassistant/components/whirlpool/translations/sv.json +0 -2
  2812. homeassistant/components/whirlpool/translations/zh-Hans.json +0 -2
  2813. homeassistant/components/whirlpool/translations/zh-Hant.json +0 -2
  2814. homeassistant/components/whois/strings.json +1 -1
  2815. homeassistant/components/wiffi/__init__.py +0 -7
  2816. homeassistant/components/wiffi/config_flow.py +2 -2
  2817. homeassistant/components/wilight/support.py +1 -2
  2818. homeassistant/components/wiz/__init__.py +1 -0
  2819. homeassistant/components/wiz/config_flow.py +1 -1
  2820. homeassistant/components/wiz/fan.py +139 -0
  2821. homeassistant/components/wiz/manifest.json +1 -1
  2822. homeassistant/components/wled/__init__.py +0 -8
  2823. homeassistant/components/wled/config_flow.py +2 -2
  2824. homeassistant/components/wled/strings.json +1 -1
  2825. homeassistant/components/workday/__init__.py +0 -6
  2826. homeassistant/components/workday/config_flow.py +2 -2
  2827. homeassistant/components/workday/manifest.json +1 -1
  2828. homeassistant/components/ws66i/__init__.py +0 -6
  2829. homeassistant/components/ws66i/config_flow.py +2 -2
  2830. homeassistant/components/wyoming/translations/de.json +1 -1
  2831. homeassistant/components/xiaomi_ble/coordinator.py +1 -1
  2832. homeassistant/components/xiaomi_ble/manifest.json +1 -1
  2833. homeassistant/components/xiaomi_ble/strings.json +9 -9
  2834. homeassistant/components/xiaomi_miio/__init__.py +0 -11
  2835. homeassistant/components/xiaomi_miio/config_flow.py +6 -2
  2836. homeassistant/components/xiaomi_miio/strings.json +1 -1
  2837. homeassistant/components/xiaomi_miio/translations/es.json +3 -3
  2838. homeassistant/components/yale/manifest.json +1 -1
  2839. homeassistant/components/yale_smart_alarm/__init__.py +0 -6
  2840. homeassistant/components/yale_smart_alarm/config_flow.py +2 -2
  2841. homeassistant/components/yalexs_ble/__init__.py +5 -1
  2842. homeassistant/components/yalexs_ble/icons.json +11 -0
  2843. homeassistant/components/yalexs_ble/lock.py +32 -4
  2844. homeassistant/components/yalexs_ble/manifest.json +1 -1
  2845. homeassistant/components/yalexs_ble/strings.json +5 -0
  2846. homeassistant/components/yalexs_ble/translations/cs.json +5 -0
  2847. homeassistant/components/yalexs_ble/translations/de.json +5 -0
  2848. homeassistant/components/yalexs_ble/translations/el.json +5 -0
  2849. homeassistant/components/yalexs_ble/translations/en-GB.json +5 -0
  2850. homeassistant/components/yalexs_ble/translations/en.json +5 -0
  2851. homeassistant/components/yalexs_ble/translations/es.json +5 -0
  2852. homeassistant/components/yalexs_ble/translations/et.json +5 -0
  2853. homeassistant/components/yalexs_ble/translations/ga.json +9 -1
  2854. homeassistant/components/yalexs_ble/translations/ja.json +5 -0
  2855. homeassistant/components/yalexs_ble/translations/lt.json +5 -0
  2856. homeassistant/components/yalexs_ble/translations/pt.json +5 -0
  2857. homeassistant/components/yalexs_ble/translations/ru.json +5 -0
  2858. homeassistant/components/yalexs_ble/translations/sk.json +5 -0
  2859. homeassistant/components/yalexs_ble/translations/sv.json +5 -0
  2860. homeassistant/components/yalexs_ble/translations/zh-Hans.json +5 -0
  2861. homeassistant/components/yalexs_ble/translations/zh-Hant.json +5 -0
  2862. homeassistant/components/yeelight/__init__.py +0 -8
  2863. homeassistant/components/yeelight/config_flow.py +2 -2
  2864. homeassistant/components/yeelight/translations/es.json +1 -1
  2865. homeassistant/components/yolink/__init__.py +14 -0
  2866. homeassistant/components/yolink/binary_sensor.py +6 -2
  2867. homeassistant/components/yolink/const.py +2 -0
  2868. homeassistant/components/yolink/manifest.json +1 -1
  2869. homeassistant/components/yolink/sensor.py +33 -3
  2870. homeassistant/components/youtube/manifest.json +1 -1
  2871. homeassistant/components/zabbix/__init__.py +40 -22
  2872. homeassistant/components/zbox_hub/__init__.py +1 -0
  2873. homeassistant/components/zbox_hub/manifest.json +6 -0
  2874. homeassistant/components/zha/strings.json +4 -4
  2875. homeassistant/components/zha/translations/da.json +3 -0
  2876. homeassistant/components/zha/translations/de.json +1 -1
  2877. homeassistant/components/zha/translations/es.json +3 -3
  2878. homeassistant/components/zha/translations/ga.json +67 -0
  2879. homeassistant/components/zone/condition.py +156 -0
  2880. homeassistant/components/zone/trigger.py +2 -1
  2881. homeassistant/components/zoneminder/__init__.py +2 -2
  2882. homeassistant/components/zoneminder/services.py +3 -2
  2883. homeassistant/components/zwave_js/__init__.py +96 -73
  2884. homeassistant/components/zwave_js/api.py +46 -36
  2885. homeassistant/components/zwave_js/binary_sensor.py +8 -9
  2886. homeassistant/components/zwave_js/button.py +6 -7
  2887. homeassistant/components/zwave_js/climate.py +6 -7
  2888. homeassistant/components/zwave_js/config_flow.py +3 -4
  2889. homeassistant/components/zwave_js/const.py +0 -2
  2890. homeassistant/components/zwave_js/cover.py +8 -14
  2891. homeassistant/components/zwave_js/device_automation_helpers.py +2 -3
  2892. homeassistant/components/zwave_js/diagnostics.py +9 -6
  2893. homeassistant/components/zwave_js/discovery.py +36 -3
  2894. homeassistant/components/zwave_js/event.py +5 -6
  2895. homeassistant/components/zwave_js/fan.py +7 -8
  2896. homeassistant/components/zwave_js/helpers.py +15 -19
  2897. homeassistant/components/zwave_js/humidifier.py +5 -6
  2898. homeassistant/components/zwave_js/light.py +41 -9
  2899. homeassistant/components/zwave_js/lock.py +3 -5
  2900. homeassistant/components/zwave_js/manifest.json +1 -1
  2901. homeassistant/components/zwave_js/models.py +27 -0
  2902. homeassistant/components/zwave_js/number.py +7 -8
  2903. homeassistant/components/zwave_js/repairs.py +1 -0
  2904. homeassistant/components/zwave_js/select.py +9 -10
  2905. homeassistant/components/zwave_js/sensor.py +37 -20
  2906. homeassistant/components/zwave_js/services.py +1 -1
  2907. homeassistant/components/zwave_js/siren.py +5 -6
  2908. homeassistant/components/zwave_js/strings.json +12 -12
  2909. homeassistant/components/zwave_js/switch.py +8 -9
  2910. homeassistant/components/zwave_js/translations/bg.json +2 -2
  2911. homeassistant/components/zwave_js/translations/ca.json +0 -6
  2912. homeassistant/components/zwave_js/translations/cs.json +8 -8
  2913. homeassistant/components/zwave_js/translations/de.json +8 -8
  2914. homeassistant/components/zwave_js/translations/el.json +8 -8
  2915. homeassistant/components/zwave_js/translations/en-GB.json +8 -8
  2916. homeassistant/components/zwave_js/translations/en.json +8 -8
  2917. homeassistant/components/zwave_js/translations/es.json +8 -8
  2918. homeassistant/components/zwave_js/translations/et.json +8 -8
  2919. homeassistant/components/zwave_js/translations/fi.json +0 -9
  2920. homeassistant/components/zwave_js/translations/fr.json +0 -3
  2921. homeassistant/components/zwave_js/translations/ga.json +13 -0
  2922. homeassistant/components/zwave_js/translations/he.json +0 -6
  2923. homeassistant/components/zwave_js/translations/hu.json +0 -9
  2924. homeassistant/components/zwave_js/translations/id.json +0 -9
  2925. homeassistant/components/zwave_js/translations/ja.json +0 -9
  2926. homeassistant/components/zwave_js/translations/lt.json +0 -9
  2927. homeassistant/components/zwave_js/translations/nl.json +2 -8
  2928. homeassistant/components/zwave_js/translations/pt.json +0 -9
  2929. homeassistant/components/zwave_js/translations/ru.json +3 -9
  2930. homeassistant/components/zwave_js/translations/sk.json +8 -8
  2931. homeassistant/components/zwave_js/translations/sv.json +0 -9
  2932. homeassistant/components/zwave_js/translations/tr.json +0 -9
  2933. homeassistant/components/zwave_js/translations/vi.json +0 -9
  2934. homeassistant/components/zwave_js/translations/zh-Hans.json +8 -8
  2935. homeassistant/components/zwave_js/translations/zh-Hant.json +8 -8
  2936. homeassistant/components/zwave_js/triggers/event.py +3 -5
  2937. homeassistant/components/zwave_js/triggers/trigger_helpers.py +2 -4
  2938. homeassistant/components/zwave_js/update.py +101 -36
  2939. homeassistant/config.py +0 -3
  2940. homeassistant/config_entries.py +28 -1
  2941. homeassistant/const.py +4 -2
  2942. homeassistant/core.py +51 -15
  2943. homeassistant/generated/application_credentials.py +1 -0
  2944. homeassistant/generated/config_flows.py +5 -0
  2945. homeassistant/generated/integrations.json +44 -3
  2946. homeassistant/generated/zeroconf.py +19 -0
  2947. homeassistant/helpers/condition.py +217 -105
  2948. homeassistant/helpers/config_validation.py +0 -29
  2949. homeassistant/helpers/deprecation.py +8 -10
  2950. homeassistant/helpers/device.py +13 -0
  2951. homeassistant/helpers/device_registry.py +75 -39
  2952. homeassistant/helpers/entity.py +61 -48
  2953. homeassistant/helpers/entity_platform.py +177 -73
  2954. homeassistant/helpers/entity_registry.py +42 -21
  2955. homeassistant/helpers/event.py +62 -57
  2956. homeassistant/helpers/frame.py +24 -9
  2957. homeassistant/helpers/helper_integration.py +69 -10
  2958. homeassistant/helpers/http.py +2 -2
  2959. homeassistant/helpers/llm.py +44 -9
  2960. homeassistant/helpers/schema_config_entry_flow.py +11 -0
  2961. homeassistant/helpers/selector.py +173 -126
  2962. homeassistant/helpers/service.py +53 -214
  2963. homeassistant/helpers/service_info/dhcp.py +6 -0
  2964. homeassistant/helpers/singleton.py +2 -1
  2965. homeassistant/helpers/target.py +359 -0
  2966. homeassistant/helpers/trigger.py +18 -8
  2967. homeassistant/helpers/trigger_template_entity.py +19 -0
  2968. homeassistant/helpers/update_coordinator.py +12 -2
  2969. homeassistant/loader.py +13 -79
  2970. homeassistant/package_constraints.txt +13 -17
  2971. homeassistant/runner.py +2 -0
  2972. homeassistant/strings.json +3 -0
  2973. homeassistant/util/__init__.py +2 -2
  2974. homeassistant/util/resource.py +65 -0
  2975. homeassistant/util/unit_conversion.py +5 -2
  2976. {homeassistant-2025.7.4.dist-info → homeassistant-2025.8.0b0.dist-info}/METADATA +5 -5
  2977. {homeassistant-2025.7.4.dist-info → homeassistant-2025.8.0b0.dist-info}/RECORD +2982 -2773
  2978. homeassistant/components/backup/basic_websocket.py +0 -38
  2979. homeassistant/components/goalzero/translations/es-419.json +0 -9
  2980. homeassistant/helpers/backup.py +0 -93
  2981. {homeassistant-2025.7.4.dist-info → homeassistant-2025.8.0b0.dist-info}/WHEEL +0 -0
  2982. {homeassistant-2025.7.4.dist-info → homeassistant-2025.8.0b0.dist-info}/entry_points.txt +0 -0
  2983. {homeassistant-2025.7.4.dist-info → homeassistant-2025.8.0b0.dist-info}/licenses/LICENSE.md +0 -0
  2984. {homeassistant-2025.7.4.dist-info → homeassistant-2025.8.0b0.dist-info}/licenses/homeassistant/backports/LICENSE.Python +0 -0
  2985. {homeassistant-2025.7.4.dist-info → homeassistant-2025.8.0b0.dist-info}/top_level.txt +0 -0
@@ -2,29 +2,16 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- import datetime
6
- import json
7
5
  import logging
8
6
 
9
- import growattServer
10
-
11
7
  from homeassistant.components.sensor import SensorEntity
12
- from homeassistant.config_entries import ConfigEntry
13
- from homeassistant.const import CONF_NAME, CONF_PASSWORD, CONF_URL, CONF_USERNAME
14
8
  from homeassistant.core import HomeAssistant
15
- from homeassistant.exceptions import ConfigEntryError
16
9
  from homeassistant.helpers.device_registry import DeviceInfo
17
10
  from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
18
- from homeassistant.util import Throttle, dt as dt_util
11
+ from homeassistant.helpers.update_coordinator import CoordinatorEntity
19
12
 
20
- from ..const import (
21
- CONF_PLANT_ID,
22
- DEFAULT_PLANT_ID,
23
- DEFAULT_URL,
24
- DEPRECATED_URLS,
25
- DOMAIN,
26
- LOGIN_INVALID_AUTH_CODE,
27
- )
13
+ from ..const import DOMAIN
14
+ from ..coordinator import GrowattConfigEntry, GrowattCoordinator
28
15
  from .inverter import INVERTER_SENSOR_TYPES
29
16
  from .mix import MIX_SENSOR_TYPES
30
17
  from .sensor_entity_description import GrowattSensorEntityDescription
@@ -34,136 +21,97 @@ from .total import TOTAL_SENSOR_TYPES
34
21
 
35
22
  _LOGGER = logging.getLogger(__name__)
36
23
 
37
- SCAN_INTERVAL = datetime.timedelta(minutes=5)
38
-
39
-
40
- def get_device_list(api, config):
41
- """Retrieve the device list for the selected plant."""
42
- plant_id = config[CONF_PLANT_ID]
43
-
44
- # Log in to api and fetch first plant if no plant id is defined.
45
- login_response = api.login(config[CONF_USERNAME], config[CONF_PASSWORD])
46
- if (
47
- not login_response["success"]
48
- and login_response["msg"] == LOGIN_INVALID_AUTH_CODE
49
- ):
50
- raise ConfigEntryError("Username, Password or URL may be incorrect!")
51
- user_id = login_response["user"]["id"]
52
- if plant_id == DEFAULT_PLANT_ID:
53
- plant_info = api.plant_list(user_id)
54
- plant_id = plant_info["data"][0]["plantId"]
55
-
56
- # Get a list of devices for specified plant to add sensors for.
57
- devices = api.device_list(plant_id)
58
- return [devices, plant_id]
59
-
60
24
 
61
25
  async def async_setup_entry(
62
26
  hass: HomeAssistant,
63
- config_entry: ConfigEntry,
27
+ config_entry: GrowattConfigEntry,
64
28
  async_add_entities: AddConfigEntryEntitiesCallback,
65
29
  ) -> None:
66
30
  """Set up the Growatt sensor."""
67
- config = {**config_entry.data}
68
- username = config[CONF_USERNAME]
69
- password = config[CONF_PASSWORD]
70
- url = config.get(CONF_URL, DEFAULT_URL)
71
- name = config[CONF_NAME]
72
-
73
- # If the URL has been deprecated then change to the default instead
74
- if url in DEPRECATED_URLS:
75
- _LOGGER.warning(
76
- "URL: %s has been deprecated, migrating to the latest default: %s",
77
- url,
78
- DEFAULT_URL,
79
- )
80
- url = DEFAULT_URL
81
- config[CONF_URL] = url
82
- hass.config_entries.async_update_entry(config_entry, data=config)
83
-
84
- # Initialise the library with the username & a random id each time it is started
85
- api = growattServer.GrowattApi(add_random_user_id=True, agent_identifier=username)
86
- api.server_url = url
87
-
88
- devices, plant_id = await hass.async_add_executor_job(get_device_list, api, config)
89
-
90
- probe = GrowattData(api, username, password, plant_id, "total")
91
- entities = [
92
- GrowattInverter(
93
- probe,
94
- name=f"{name} Total",
95
- unique_id=f"{plant_id}-{description.key}",
31
+ # Use runtime_data instead of hass.data
32
+ data = config_entry.runtime_data
33
+
34
+ entities: list[GrowattSensor] = []
35
+
36
+ # Add total sensors
37
+ total_coordinator = data.total_coordinator
38
+ entities.extend(
39
+ GrowattSensor(
40
+ total_coordinator,
41
+ name=f"{config_entry.data['name']} Total",
42
+ serial_id=config_entry.data["plant_id"],
43
+ unique_id=f"{config_entry.data['plant_id']}-{description.key}",
96
44
  description=description,
97
45
  )
98
46
  for description in TOTAL_SENSOR_TYPES
99
- ]
100
-
101
- # Add sensors for each device in the specified plant.
102
- for device in devices:
103
- probe = GrowattData(
104
- api, username, password, device["deviceSn"], device["deviceType"]
105
- )
106
- sensor_descriptions: tuple[GrowattSensorEntityDescription, ...] = ()
107
- if device["deviceType"] == "inverter":
108
- sensor_descriptions = INVERTER_SENSOR_TYPES
109
- elif device["deviceType"] == "tlx":
110
- probe.plant_id = plant_id
111
- sensor_descriptions = TLX_SENSOR_TYPES
112
- elif device["deviceType"] == "storage":
113
- probe.plant_id = plant_id
114
- sensor_descriptions = STORAGE_SENSOR_TYPES
115
- elif device["deviceType"] == "mix":
116
- probe.plant_id = plant_id
117
- sensor_descriptions = MIX_SENSOR_TYPES
47
+ )
48
+
49
+ # Add sensors for each device
50
+ for device_sn, device_coordinator in data.devices.items():
51
+ sensor_descriptions: list = []
52
+ if device_coordinator.device_type == "inverter":
53
+ sensor_descriptions = list(INVERTER_SENSOR_TYPES)
54
+ elif device_coordinator.device_type == "tlx":
55
+ sensor_descriptions = list(TLX_SENSOR_TYPES)
56
+ elif device_coordinator.device_type == "storage":
57
+ sensor_descriptions = list(STORAGE_SENSOR_TYPES)
58
+ elif device_coordinator.device_type == "mix":
59
+ sensor_descriptions = list(MIX_SENSOR_TYPES)
118
60
  else:
119
61
  _LOGGER.debug(
120
62
  "Device type %s was found but is not supported right now",
121
- device["deviceType"],
63
+ device_coordinator.device_type,
122
64
  )
123
65
 
124
66
  entities.extend(
125
- [
126
- GrowattInverter(
127
- probe,
128
- name=f"{device['deviceAilas']}",
129
- unique_id=f"{device['deviceSn']}-{description.key}",
130
- description=description,
131
- )
132
- for description in sensor_descriptions
133
- ]
67
+ GrowattSensor(
68
+ device_coordinator,
69
+ name=device_sn,
70
+ serial_id=device_sn,
71
+ unique_id=f"{device_sn}-{description.key}",
72
+ description=description,
73
+ )
74
+ for description in sensor_descriptions
134
75
  )
135
76
 
136
- async_add_entities(entities, True)
77
+ async_add_entities(entities)
137
78
 
138
79
 
139
- class GrowattInverter(SensorEntity):
80
+ class GrowattSensor(CoordinatorEntity[GrowattCoordinator], SensorEntity):
140
81
  """Representation of a Growatt Sensor."""
141
82
 
142
83
  _attr_has_entity_name = True
143
-
144
84
  entity_description: GrowattSensorEntityDescription
145
85
 
146
86
  def __init__(
147
- self, probe, name, unique_id, description: GrowattSensorEntityDescription
87
+ self,
88
+ coordinator: GrowattCoordinator,
89
+ name: str,
90
+ serial_id: str,
91
+ unique_id: str,
92
+ description: GrowattSensorEntityDescription,
148
93
  ) -> None:
149
94
  """Initialize a PVOutput sensor."""
150
- self.probe = probe
95
+ super().__init__(coordinator)
151
96
  self.entity_description = description
152
97
 
153
98
  self._attr_unique_id = unique_id
154
99
  self._attr_icon = "mdi:solar-power"
155
100
 
156
101
  self._attr_device_info = DeviceInfo(
157
- identifiers={(DOMAIN, probe.device_id)},
102
+ identifiers={(DOMAIN, serial_id)},
158
103
  manufacturer="Growatt",
159
104
  name=name,
160
105
  )
161
106
 
162
107
  @property
163
- def native_value(self):
108
+ def native_value(self) -> str | int | float | None:
164
109
  """Return the state of the sensor."""
165
- result = self.probe.get_data(self.entity_description)
166
- if self.entity_description.precision is not None:
110
+ result = self.coordinator.get_data(self.entity_description)
111
+ if (
112
+ isinstance(result, (int, float))
113
+ and self.entity_description.precision is not None
114
+ ):
167
115
  result = round(result, self.entity_description.precision)
168
116
  return result
169
117
 
@@ -171,182 +119,5 @@ class GrowattInverter(SensorEntity):
171
119
  def native_unit_of_measurement(self) -> str | None:
172
120
  """Return the unit of measurement of the sensor, if any."""
173
121
  if self.entity_description.currency:
174
- return self.probe.get_currency()
122
+ return self.coordinator.get_currency()
175
123
  return super().native_unit_of_measurement
176
-
177
- def update(self) -> None:
178
- """Get the latest data from the Growat API and updates the state."""
179
- self.probe.update()
180
-
181
-
182
- class GrowattData:
183
- """The class for handling data retrieval."""
184
-
185
- def __init__(self, api, username, password, device_id, growatt_type):
186
- """Initialize the probe."""
187
-
188
- self.growatt_type = growatt_type
189
- self.api = api
190
- self.device_id = device_id
191
- self.plant_id = None
192
- self.data = {}
193
- self.previous_values = {}
194
- self.username = username
195
- self.password = password
196
-
197
- @Throttle(SCAN_INTERVAL)
198
- def update(self):
199
- """Update probe data."""
200
- self.api.login(self.username, self.password)
201
- _LOGGER.debug("Updating data for %s (%s)", self.device_id, self.growatt_type)
202
- try:
203
- if self.growatt_type == "total":
204
- total_info = self.api.plant_info(self.device_id)
205
- del total_info["deviceList"]
206
- # PlantMoneyText comes in as "3.1/€" split between value and currency
207
- plant_money_text, currency = total_info["plantMoneyText"].split("/")
208
- total_info["plantMoneyText"] = plant_money_text
209
- total_info["currency"] = currency
210
- self.data = total_info
211
- elif self.growatt_type == "inverter":
212
- inverter_info = self.api.inverter_detail(self.device_id)
213
- self.data = inverter_info
214
- elif self.growatt_type == "tlx":
215
- tlx_info = self.api.tlx_detail(self.device_id)
216
- self.data = tlx_info["data"]
217
- elif self.growatt_type == "storage":
218
- storage_info_detail = self.api.storage_params(self.device_id)[
219
- "storageDetailBean"
220
- ]
221
- storage_energy_overview = self.api.storage_energy_overview(
222
- self.plant_id, self.device_id
223
- )
224
- self.data = {**storage_info_detail, **storage_energy_overview}
225
- elif self.growatt_type == "mix":
226
- mix_info = self.api.mix_info(self.device_id)
227
- mix_totals = self.api.mix_totals(self.device_id, self.plant_id)
228
- mix_system_status = self.api.mix_system_status(
229
- self.device_id, self.plant_id
230
- )
231
-
232
- mix_detail = self.api.mix_detail(self.device_id, self.plant_id)
233
- # Get the chart data and work out the time of the last entry, use this
234
- # as the last time data was published to the Growatt Server
235
- mix_chart_entries = mix_detail["chartData"]
236
- sorted_keys = sorted(mix_chart_entries)
237
-
238
- # Create datetime from the latest entry
239
- date_now = dt_util.now().date()
240
- last_updated_time = dt_util.parse_time(str(sorted_keys[-1]))
241
- mix_detail["lastdataupdate"] = datetime.datetime.combine(
242
- date_now, last_updated_time, dt_util.get_default_time_zone()
243
- )
244
-
245
- # Dashboard data is largely inaccurate for mix system but it is the only
246
- # call with the ability to return the combined imported from grid value
247
- # that is the combination of charging AND load consumption
248
- dashboard_data = self.api.dashboard_data(self.plant_id)
249
- # Dashboard values have units e.g. "kWh" as part of their returned
250
- # string, so we remove it
251
- dashboard_values_for_mix = {
252
- # etouser is already used by the results from 'mix_detail' so we
253
- # rebrand it as 'etouser_combined'
254
- "etouser_combined": float(
255
- dashboard_data["etouser"].replace("kWh", "")
256
- )
257
- }
258
- self.data = {
259
- **mix_info,
260
- **mix_totals,
261
- **mix_system_status,
262
- **mix_detail,
263
- **dashboard_values_for_mix,
264
- }
265
- _LOGGER.debug(
266
- "Finished updating data for %s (%s)",
267
- self.device_id,
268
- self.growatt_type,
269
- )
270
- except json.decoder.JSONDecodeError:
271
- _LOGGER.error("Unable to fetch data from Growatt server")
272
-
273
- def get_currency(self):
274
- """Get the currency."""
275
- return self.data.get("currency")
276
-
277
- def get_data(self, entity_description):
278
- """Get the data."""
279
- _LOGGER.debug(
280
- "Data request for: %s",
281
- entity_description.name,
282
- )
283
- variable = entity_description.api_key
284
- api_value = self.data.get(variable)
285
- previous_value = self.previous_values.get(variable)
286
- return_value = api_value
287
-
288
- # If we have a 'drop threshold' specified, then check it and correct if needed
289
- if (
290
- entity_description.previous_value_drop_threshold is not None
291
- and previous_value is not None
292
- and api_value is not None
293
- ):
294
- _LOGGER.debug(
295
- (
296
- "%s - Drop threshold specified (%s), checking for drop... API"
297
- " Value: %s, Previous Value: %s"
298
- ),
299
- entity_description.name,
300
- entity_description.previous_value_drop_threshold,
301
- api_value,
302
- previous_value,
303
- )
304
- diff = float(api_value) - float(previous_value)
305
-
306
- # Check if the value has dropped (negative value i.e. < 0) and it has only
307
- # dropped by a small amount, if so, use the previous value.
308
- # Note - The energy dashboard takes care of drops within 10%
309
- # of the current value, however if the value is low e.g. 0.2
310
- # and drops by 0.1 it classes as a reset.
311
- if -(entity_description.previous_value_drop_threshold) <= diff < 0:
312
- _LOGGER.debug(
313
- (
314
- "Diff is negative, but only by a small amount therefore not a"
315
- " nightly reset, using previous value (%s) instead of api value"
316
- " (%s)"
317
- ),
318
- previous_value,
319
- api_value,
320
- )
321
- return_value = previous_value
322
- else:
323
- _LOGGER.debug(
324
- "%s - No drop detected, using API value", entity_description.name
325
- )
326
-
327
- # Lifetime total values should always be increasing, they will never reset,
328
- # however the API sometimes returns 0 values when the clock turns to 00:00
329
- # local time in that scenario we should just return the previous value
330
- # Scenarios:
331
- # 1 - System has a genuine 0 value when it it first commissioned:
332
- # - will return 0 until a non-zero value is registered
333
- # 2 - System has been running fine but temporarily resets to 0 briefly
334
- # at midnight:
335
- # - will return the previous value
336
- # 3 - HA is restarted during the midnight 'outage' - Not handled:
337
- # - Previous value will not exist meaning 0 will be returned
338
- # - This is an edge case that would be better handled by looking
339
- # up the previous value of the entity from the recorder
340
- if entity_description.never_resets and api_value == 0 and previous_value:
341
- _LOGGER.debug(
342
- (
343
- "API value is 0, but this value should never reset, returning"
344
- " previous value (%s) instead"
345
- ),
346
- previous_value,
347
- )
348
- return_value = previous_value
349
-
350
- self.previous_values[variable] = return_value
351
-
352
- return return_value
@@ -27,7 +27,7 @@ from .const import (
27
27
  SIGNAL_PAIRED_SENSOR_COORDINATOR_ADDED,
28
28
  )
29
29
  from .coordinator import GuardianDataUpdateCoordinator
30
- from .services import setup_services
30
+ from .services import async_setup_services
31
31
 
32
32
  CONFIG_SCHEMA = cv.config_entry_only_config_schema(DOMAIN)
33
33
 
@@ -55,7 +55,7 @@ class GuardianData:
55
55
 
56
56
  async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
57
57
  """Set up the Elexa Guardian component."""
58
- setup_services(hass)
58
+ async_setup_services(hass)
59
59
  return True
60
60
 
61
61
 
@@ -122,8 +122,9 @@ async def async_upgrade_firmware(call: ServiceCall, data: GuardianData) -> None:
122
122
  )
123
123
 
124
124
 
125
- def setup_services(hass: HomeAssistant) -> None:
126
- """Register the Renault services."""
125
+ @callback
126
+ def async_setup_services(hass: HomeAssistant) -> None:
127
+ """Register the guardian services."""
127
128
  for service_name, schema, method in (
128
129
  (
129
130
  SERVICE_NAME_PAIR_SENSOR,
@@ -7,15 +7,7 @@ from dataclasses import dataclass
7
7
  from enum import StrEnum
8
8
  from typing import Any
9
9
 
10
- from aiohttp import ClientError
11
- from habiticalib import (
12
- HabiticaClass,
13
- HabiticaException,
14
- NotAuthorizedError,
15
- Skill,
16
- TaskType,
17
- TooManyRequestsError,
18
- )
10
+ from habiticalib import Habitica, HabiticaClass, Skill, TaskType
19
11
 
20
12
  from homeassistant.components.button import (
21
13
  DOMAIN as BUTTON_DOMAIN,
@@ -23,16 +15,11 @@ from homeassistant.components.button import (
23
15
  ButtonEntityDescription,
24
16
  )
25
17
  from homeassistant.core import HomeAssistant, callback
26
- from homeassistant.exceptions import HomeAssistantError, ServiceValidationError
27
18
  from homeassistant.helpers import entity_registry as er
28
19
  from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
29
20
 
30
21
  from .const import ASSETS_URL, DOMAIN
31
- from .coordinator import (
32
- HabiticaConfigEntry,
33
- HabiticaData,
34
- HabiticaDataUpdateCoordinator,
35
- )
22
+ from .coordinator import HabiticaConfigEntry, HabiticaData
36
23
  from .entity import HabiticaBase
37
24
 
38
25
  PARALLEL_UPDATES = 1
@@ -42,7 +29,7 @@ PARALLEL_UPDATES = 1
42
29
  class HabiticaButtonEntityDescription(ButtonEntityDescription):
43
30
  """Describes Habitica button entity."""
44
31
 
45
- press_fn: Callable[[HabiticaDataUpdateCoordinator], Any]
32
+ press_fn: Callable[[Habitica], Any]
46
33
  available_fn: Callable[[HabiticaData], bool]
47
34
  class_needed: HabiticaClass | None = None
48
35
  entity_picture: str | None = None
@@ -73,13 +60,13 @@ BUTTON_DESCRIPTIONS: tuple[HabiticaButtonEntityDescription, ...] = (
73
60
  HabiticaButtonEntityDescription(
74
61
  key=HabiticaButtonEntity.RUN_CRON,
75
62
  translation_key=HabiticaButtonEntity.RUN_CRON,
76
- press_fn=lambda coordinator: coordinator.habitica.run_cron(),
63
+ press_fn=lambda habitica: habitica.run_cron(),
77
64
  available_fn=lambda data: data.user.needsCron is True,
78
65
  ),
79
66
  HabiticaButtonEntityDescription(
80
67
  key=HabiticaButtonEntity.BUY_HEALTH_POTION,
81
68
  translation_key=HabiticaButtonEntity.BUY_HEALTH_POTION,
82
- press_fn=lambda coordinator: coordinator.habitica.buy_health_potion(),
69
+ press_fn=lambda habitica: habitica.buy_health_potion(),
83
70
  available_fn=(
84
71
  lambda data: (data.user.stats.gp or 0) >= 25
85
72
  and (data.user.stats.hp or 0) < 50
@@ -89,7 +76,7 @@ BUTTON_DESCRIPTIONS: tuple[HabiticaButtonEntityDescription, ...] = (
89
76
  HabiticaButtonEntityDescription(
90
77
  key=HabiticaButtonEntity.ALLOCATE_ALL_STAT_POINTS,
91
78
  translation_key=HabiticaButtonEntity.ALLOCATE_ALL_STAT_POINTS,
92
- press_fn=lambda coordinator: coordinator.habitica.allocate_stat_points(),
79
+ press_fn=lambda habitica: habitica.allocate_stat_points(),
93
80
  available_fn=(
94
81
  lambda data: data.user.preferences.automaticAllocation is True
95
82
  and (data.user.stats.points or 0) > 0
@@ -98,7 +85,7 @@ BUTTON_DESCRIPTIONS: tuple[HabiticaButtonEntityDescription, ...] = (
98
85
  HabiticaButtonEntityDescription(
99
86
  key=HabiticaButtonEntity.REVIVE,
100
87
  translation_key=HabiticaButtonEntity.REVIVE,
101
- press_fn=lambda coordinator: coordinator.habitica.revive(),
88
+ press_fn=lambda habitica: habitica.revive(),
102
89
  available_fn=lambda data: data.user.stats.hp == 0,
103
90
  ),
104
91
  )
@@ -108,9 +95,7 @@ CLASS_SKILLS: tuple[HabiticaButtonEntityDescription, ...] = (
108
95
  HabiticaButtonEntityDescription(
109
96
  key=HabiticaButtonEntity.MPHEAL,
110
97
  translation_key=HabiticaButtonEntity.MPHEAL,
111
- press_fn=(
112
- lambda coordinator: coordinator.habitica.cast_skill(Skill.ETHEREAL_SURGE)
113
- ),
98
+ press_fn=lambda habitica: habitica.cast_skill(Skill.ETHEREAL_SURGE),
114
99
  available_fn=(
115
100
  lambda data: (data.user.stats.lvl or 0) >= 12
116
101
  and (data.user.stats.mp or 0) >= 30
@@ -121,7 +106,7 @@ CLASS_SKILLS: tuple[HabiticaButtonEntityDescription, ...] = (
121
106
  HabiticaButtonEntityDescription(
122
107
  key=HabiticaButtonEntity.EARTH,
123
108
  translation_key=HabiticaButtonEntity.EARTH,
124
- press_fn=lambda coordinator: coordinator.habitica.cast_skill(Skill.EARTHQUAKE),
109
+ press_fn=lambda habitica: habitica.cast_skill(Skill.EARTHQUAKE),
125
110
  available_fn=(
126
111
  lambda data: (data.user.stats.lvl or 0) >= 13
127
112
  and (data.user.stats.mp or 0) >= 35
@@ -132,9 +117,7 @@ CLASS_SKILLS: tuple[HabiticaButtonEntityDescription, ...] = (
132
117
  HabiticaButtonEntityDescription(
133
118
  key=HabiticaButtonEntity.FROST,
134
119
  translation_key=HabiticaButtonEntity.FROST,
135
- press_fn=(
136
- lambda coordinator: coordinator.habitica.cast_skill(Skill.CHILLING_FROST)
137
- ),
120
+ press_fn=lambda habitica: habitica.cast_skill(Skill.CHILLING_FROST),
138
121
  # chilling frost can only be cast once per day (streaks buff is false)
139
122
  available_fn=(
140
123
  lambda data: (data.user.stats.lvl or 0) >= 14
@@ -147,9 +130,7 @@ CLASS_SKILLS: tuple[HabiticaButtonEntityDescription, ...] = (
147
130
  HabiticaButtonEntityDescription(
148
131
  key=HabiticaButtonEntity.DEFENSIVE_STANCE,
149
132
  translation_key=HabiticaButtonEntity.DEFENSIVE_STANCE,
150
- press_fn=(
151
- lambda coordinator: coordinator.habitica.cast_skill(Skill.DEFENSIVE_STANCE)
152
- ),
133
+ press_fn=lambda habitica: habitica.cast_skill(Skill.DEFENSIVE_STANCE),
153
134
  available_fn=(
154
135
  lambda data: (data.user.stats.lvl or 0) >= 12
155
136
  and (data.user.stats.mp or 0) >= 25
@@ -160,9 +141,7 @@ CLASS_SKILLS: tuple[HabiticaButtonEntityDescription, ...] = (
160
141
  HabiticaButtonEntityDescription(
161
142
  key=HabiticaButtonEntity.VALOROUS_PRESENCE,
162
143
  translation_key=HabiticaButtonEntity.VALOROUS_PRESENCE,
163
- press_fn=(
164
- lambda coordinator: coordinator.habitica.cast_skill(Skill.VALOROUS_PRESENCE)
165
- ),
144
+ press_fn=lambda habitica: habitica.cast_skill(Skill.VALOROUS_PRESENCE),
166
145
  available_fn=(
167
146
  lambda data: (data.user.stats.lvl or 0) >= 13
168
147
  and (data.user.stats.mp or 0) >= 20
@@ -173,9 +152,7 @@ CLASS_SKILLS: tuple[HabiticaButtonEntityDescription, ...] = (
173
152
  HabiticaButtonEntityDescription(
174
153
  key=HabiticaButtonEntity.INTIMIDATE,
175
154
  translation_key=HabiticaButtonEntity.INTIMIDATE,
176
- press_fn=(
177
- lambda coordinator: coordinator.habitica.cast_skill(Skill.INTIMIDATING_GAZE)
178
- ),
155
+ press_fn=lambda habitica: habitica.cast_skill(Skill.INTIMIDATING_GAZE),
179
156
  available_fn=(
180
157
  lambda data: (data.user.stats.lvl or 0) >= 14
181
158
  and (data.user.stats.mp or 0) >= 15
@@ -186,11 +163,7 @@ CLASS_SKILLS: tuple[HabiticaButtonEntityDescription, ...] = (
186
163
  HabiticaButtonEntityDescription(
187
164
  key=HabiticaButtonEntity.TOOLS_OF_TRADE,
188
165
  translation_key=HabiticaButtonEntity.TOOLS_OF_TRADE,
189
- press_fn=(
190
- lambda coordinator: coordinator.habitica.cast_skill(
191
- Skill.TOOLS_OF_THE_TRADE
192
- )
193
- ),
166
+ press_fn=lambda habitica: habitica.cast_skill(Skill.TOOLS_OF_THE_TRADE),
194
167
  available_fn=(
195
168
  lambda data: (data.user.stats.lvl or 0) >= 13
196
169
  and (data.user.stats.mp or 0) >= 25
@@ -201,7 +174,7 @@ CLASS_SKILLS: tuple[HabiticaButtonEntityDescription, ...] = (
201
174
  HabiticaButtonEntityDescription(
202
175
  key=HabiticaButtonEntity.STEALTH,
203
176
  translation_key=HabiticaButtonEntity.STEALTH,
204
- press_fn=lambda coordinator: coordinator.habitica.cast_skill(Skill.STEALTH),
177
+ press_fn=lambda habitica: habitica.cast_skill(Skill.STEALTH),
205
178
  # Stealth buffs stack and it can only be cast if the amount of
206
179
  # buffs is smaller than the amount of unfinished dailies
207
180
  available_fn=(
@@ -224,9 +197,7 @@ CLASS_SKILLS: tuple[HabiticaButtonEntityDescription, ...] = (
224
197
  HabiticaButtonEntityDescription(
225
198
  key=HabiticaButtonEntity.HEAL,
226
199
  translation_key=HabiticaButtonEntity.HEAL,
227
- press_fn=(
228
- lambda coordinator: coordinator.habitica.cast_skill(Skill.HEALING_LIGHT)
229
- ),
200
+ press_fn=lambda habitica: habitica.cast_skill(Skill.HEALING_LIGHT),
230
201
  available_fn=(
231
202
  lambda data: (data.user.stats.lvl or 0) >= 11
232
203
  and (data.user.stats.mp or 0) >= 15
@@ -238,11 +209,7 @@ CLASS_SKILLS: tuple[HabiticaButtonEntityDescription, ...] = (
238
209
  HabiticaButtonEntityDescription(
239
210
  key=HabiticaButtonEntity.BRIGHTNESS,
240
211
  translation_key=HabiticaButtonEntity.BRIGHTNESS,
241
- press_fn=(
242
- lambda coordinator: coordinator.habitica.cast_skill(
243
- Skill.SEARING_BRIGHTNESS
244
- )
245
- ),
212
+ press_fn=lambda habitica: habitica.cast_skill(Skill.SEARING_BRIGHTNESS),
246
213
  available_fn=(
247
214
  lambda data: (data.user.stats.lvl or 0) >= 12
248
215
  and (data.user.stats.mp or 0) >= 15
@@ -253,9 +220,7 @@ CLASS_SKILLS: tuple[HabiticaButtonEntityDescription, ...] = (
253
220
  HabiticaButtonEntityDescription(
254
221
  key=HabiticaButtonEntity.PROTECT_AURA,
255
222
  translation_key=HabiticaButtonEntity.PROTECT_AURA,
256
- press_fn=(
257
- lambda coordinator: coordinator.habitica.cast_skill(Skill.PROTECTIVE_AURA)
258
- ),
223
+ press_fn=lambda habitica: habitica.cast_skill(Skill.PROTECTIVE_AURA),
259
224
  available_fn=(
260
225
  lambda data: (data.user.stats.lvl or 0) >= 13
261
226
  and (data.user.stats.mp or 0) >= 30
@@ -266,7 +231,7 @@ CLASS_SKILLS: tuple[HabiticaButtonEntityDescription, ...] = (
266
231
  HabiticaButtonEntityDescription(
267
232
  key=HabiticaButtonEntity.HEAL_ALL,
268
233
  translation_key=HabiticaButtonEntity.HEAL_ALL,
269
- press_fn=lambda coordinator: coordinator.habitica.cast_skill(Skill.BLESSING),
234
+ press_fn=lambda habitica: habitica.cast_skill(Skill.BLESSING),
270
235
  available_fn=(
271
236
  lambda data: (data.user.stats.lvl or 0) >= 14
272
237
  and (data.user.stats.mp or 0) >= 25
@@ -332,33 +297,9 @@ class HabiticaButton(HabiticaBase, ButtonEntity):
332
297
 
333
298
  async def async_press(self) -> None:
334
299
  """Handle the button press."""
335
- try:
336
- await self.entity_description.press_fn(self.coordinator)
337
- except TooManyRequestsError as e:
338
- raise HomeAssistantError(
339
- translation_domain=DOMAIN,
340
- translation_key="setup_rate_limit_exception",
341
- translation_placeholders={"retry_after": str(e.retry_after)},
342
- ) from e
343
- except NotAuthorizedError as e:
344
- raise ServiceValidationError(
345
- translation_domain=DOMAIN,
346
- translation_key="service_call_unallowed",
347
- ) from e
348
- except HabiticaException as e:
349
- raise HomeAssistantError(
350
- translation_domain=DOMAIN,
351
- translation_key="service_call_exception",
352
- translation_placeholders={"reason": e.error.message},
353
- ) from e
354
- except ClientError as e:
355
- raise HomeAssistantError(
356
- translation_domain=DOMAIN,
357
- translation_key="service_call_exception",
358
- translation_placeholders={"reason": str(e)},
359
- ) from e
360
- else:
361
- await self.coordinator.async_request_refresh()
300
+
301
+ await self.coordinator.execute(self.entity_description.press_fn)
302
+ await self.coordinator.async_request_refresh()
362
303
 
363
304
  @property
364
305
  def available(self) -> bool: