homeassistant 2025.8.0b2__py3-none-any.whl → 2025.8.0b3__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 (211) hide show
  1. homeassistant/components/airos/config_flow.py +9 -9
  2. homeassistant/components/airos/coordinator.py +11 -7
  3. homeassistant/components/airos/manifest.json +1 -1
  4. homeassistant/components/airos/sensor.py +0 -7
  5. homeassistant/components/airos/strings.json +0 -7
  6. homeassistant/components/airos/translations/bg.json +0 -7
  7. homeassistant/components/airos/translations/cs.json +0 -7
  8. homeassistant/components/airos/translations/de.json +0 -7
  9. homeassistant/components/airos/translations/en-GB.json +0 -7
  10. homeassistant/components/airos/translations/en.json +0 -7
  11. homeassistant/components/airos/translations/es.json +0 -7
  12. homeassistant/components/airos/translations/et.json +0 -7
  13. homeassistant/components/airos/translations/ga.json +0 -7
  14. homeassistant/components/airos/translations/he.json +29 -0
  15. homeassistant/components/airos/translations/sk.json +25 -6
  16. homeassistant/components/airos/translations/zh-Hans.json +0 -7
  17. homeassistant/components/airos/translations/zh-Hant.json +0 -7
  18. homeassistant/components/airthings/__init__.py +2 -5
  19. homeassistant/components/airthings/coordinator.py +10 -1
  20. homeassistant/components/alert/translations/he.json +1 -1
  21. homeassistant/components/alexa_devices/translations/es.json +192 -1
  22. homeassistant/components/alexa_devices/translations/sk.json +134 -1
  23. homeassistant/components/ambient_station/translations/ga.json +12 -0
  24. homeassistant/components/androidtv_remote/translations/sl.json +2 -1
  25. homeassistant/components/anova/translations/he.json +1 -1
  26. homeassistant/components/apcupsd/translations/ga.json +50 -0
  27. homeassistant/components/aprilaire/translations/he.json +4 -4
  28. homeassistant/components/assist_satellite/translations/he.json +1 -1
  29. homeassistant/components/asuswrt/router.py +12 -3
  30. homeassistant/components/backup/translations/he.json +1 -1
  31. homeassistant/components/bluemaestro/translations/ga.json +9 -0
  32. homeassistant/components/bmw_connected_drive/translations/ga.json +1 -0
  33. homeassistant/components/broadlink/updater.py +1 -0
  34. homeassistant/components/caldav/manifest.json +1 -1
  35. homeassistant/components/camera/translations/he.json +1 -1
  36. homeassistant/components/climate/translations/he.json +1 -1
  37. homeassistant/components/cloud/manifest.json +1 -1
  38. homeassistant/components/cloud/translations/ga.json +4 -0
  39. homeassistant/components/deluge/translations/he.json +1 -1
  40. homeassistant/components/downloader/translations/ga.json +3 -0
  41. homeassistant/components/ecovacs/manifest.json +1 -1
  42. homeassistant/components/ecovacs/translations/ga.json +23 -0
  43. homeassistant/components/ecovacs/translations/he.json +1 -1
  44. homeassistant/components/emoncms/translations/es.json +8 -0
  45. homeassistant/components/energy/translations/sl.json +4 -0
  46. homeassistant/components/enphase_envoy/translations/he.json +1 -1
  47. homeassistant/components/flexit_bacnet/translations/ga.json +33 -0
  48. homeassistant/components/fritzbox_callmonitor/translations/he.json +1 -1
  49. homeassistant/components/fronius/__init__.py +6 -0
  50. homeassistant/components/fronius/translations/he.json +1 -1
  51. homeassistant/components/glances/translations/ga.json +18 -0
  52. homeassistant/components/group/translations/he.json +18 -0
  53. homeassistant/components/hassio/strings.json +4 -0
  54. homeassistant/components/hassio/translations/de.json +5 -1
  55. homeassistant/components/hassio/translations/el.json +4 -0
  56. homeassistant/components/hassio/translations/en.json +4 -0
  57. homeassistant/components/hassio/translations/es.json +4 -0
  58. homeassistant/components/hassio/translations/et.json +4 -0
  59. homeassistant/components/hassio/translations/he.json +4 -0
  60. homeassistant/components/hassio/translations/lt.json +4 -0
  61. homeassistant/components/hassio/translations/zh-Hant.json +4 -0
  62. homeassistant/components/homeassistant/translations/ga.json +3 -0
  63. homeassistant/components/homekit_controller/translations/he.json +1 -1
  64. homeassistant/components/hue/v1/light.py +2 -0
  65. homeassistant/components/hue/v1/sensor_base.py +1 -0
  66. homeassistant/components/humidifier/translations/he.json +1 -1
  67. homeassistant/components/husqvarna_automower/manifest.json +1 -1
  68. homeassistant/components/husqvarna_automower/sensor.py +3 -4
  69. homeassistant/components/husqvarna_automower/translations/ga.json +10 -0
  70. homeassistant/components/husqvarna_automower/translations/he.json +5 -0
  71. homeassistant/components/imap/translations/ga.json +20 -0
  72. homeassistant/components/ipp/translations/he.json +1 -1
  73. homeassistant/components/iron_os/translations/he.json +1 -1
  74. homeassistant/components/ituran/translations/he.json +3 -0
  75. homeassistant/components/knx/manifest.json +1 -1
  76. homeassistant/components/knx/translations/zh-Hant.json +1 -1
  77. homeassistant/components/kraken/__init__.py +1 -0
  78. homeassistant/components/lg_netcast/translations/ga.json +14 -0
  79. homeassistant/components/lg_thinq/translations/he.json +2 -1
  80. homeassistant/components/matter/number.py +3 -1
  81. homeassistant/components/matter/translations/he.json +6 -0
  82. homeassistant/components/mealie/manifest.json +1 -1
  83. homeassistant/components/mealie/todo.py +3 -2
  84. homeassistant/components/media_extractor/manifest.json +1 -1
  85. homeassistant/components/media_player/translations/he.json +1 -1
  86. homeassistant/components/meteo_france/__init__.py +3 -0
  87. homeassistant/components/microbees/translations/ga.json +2 -1
  88. homeassistant/components/miele/translations/es.json +46 -1
  89. homeassistant/components/miele/translations/ga.json +1 -0
  90. homeassistant/components/miele/translations/he.json +32 -1
  91. homeassistant/components/miele/translations/lt.json +13 -1
  92. homeassistant/components/miele/translations/sk.json +22 -1
  93. homeassistant/components/mill/__init__.py +1 -0
  94. homeassistant/components/mill/coordinator.py +2 -0
  95. homeassistant/components/modbus/translations/ga.json +8 -0
  96. homeassistant/components/motionblinds_ble/translations/ga.json +25 -0
  97. homeassistant/components/mqtt/translations/el.json +1 -0
  98. homeassistant/components/mqtt/translations/es.json +39 -5
  99. homeassistant/components/mqtt/translations/he.json +67 -0
  100. homeassistant/components/mqtt/translations/lt.json +1 -0
  101. homeassistant/components/mqtt/translations/sk.json +1 -0
  102. homeassistant/components/mqtt/translations/sl.json +5 -0
  103. homeassistant/components/mqtt/translations/zh-Hant.json +45 -45
  104. homeassistant/components/mystrom/translations/ga.json +9 -0
  105. homeassistant/components/open_router/translations/he.json +10 -0
  106. homeassistant/components/openweathermap/translations/he.json +2 -1
  107. homeassistant/components/oralb/translations/ga.json +21 -0
  108. homeassistant/components/playstation_network/translations/es.json +27 -0
  109. homeassistant/components/playstation_network/translations/he.json +8 -0
  110. homeassistant/components/proximity/translations/ga.json +40 -0
  111. homeassistant/components/prusalink/translations/he.json +1 -1
  112. homeassistant/components/qbittorrent/translations/he.json +1 -1
  113. homeassistant/components/qnap/translations/ga.json +12 -0
  114. homeassistant/components/random/translations/el.json +2 -0
  115. homeassistant/components/random/translations/es.json +2 -0
  116. homeassistant/components/random/translations/he.json +2 -0
  117. homeassistant/components/random/translations/lt.json +1 -0
  118. homeassistant/components/random/translations/sk.json +1 -0
  119. homeassistant/components/remote_calendar/coordinator.py +1 -0
  120. homeassistant/components/rfxtrx/translations/ga.json +13 -0
  121. homeassistant/components/ring/translations/ga.json +11 -0
  122. homeassistant/components/roborock/translations/he.json +1 -1
  123. homeassistant/components/rympro/translations/ga.json +3 -0
  124. homeassistant/components/scrape/translations/el.json +1 -0
  125. homeassistant/components/scrape/translations/es.json +1 -0
  126. homeassistant/components/scrape/translations/he.json +1 -0
  127. homeassistant/components/screenlogic/translations/ga.json +1 -0
  128. homeassistant/components/sfr_box/translations/he.json +1 -1
  129. homeassistant/components/simplisafe/__init__.py +1 -0
  130. homeassistant/components/smartthings/translations/he.json +1 -1
  131. homeassistant/components/smarttub/controller.py +1 -0
  132. homeassistant/components/sms/__init__.py +2 -2
  133. homeassistant/components/sms/coordinator.py +4 -2
  134. homeassistant/components/snoo/__init__.py +1 -1
  135. homeassistant/components/snoo/coordinator.py +8 -1
  136. homeassistant/components/sql/translations/el.json +1 -0
  137. homeassistant/components/sql/translations/es.json +1 -0
  138. homeassistant/components/sql/translations/he.json +1 -0
  139. homeassistant/components/swiss_public_transport/translations/ga.json +3 -0
  140. homeassistant/components/template/cover.py +1 -0
  141. homeassistant/components/template/entity.py +9 -3
  142. homeassistant/components/template/strings.json +6 -0
  143. homeassistant/components/template/translations/de.json +6 -0
  144. homeassistant/components/template/translations/el.json +2 -0
  145. homeassistant/components/template/translations/en.json +6 -0
  146. homeassistant/components/template/translations/es.json +115 -17
  147. homeassistant/components/template/translations/et.json +6 -0
  148. homeassistant/components/template/translations/he.json +681 -18
  149. homeassistant/components/template/translations/lt.json +24 -0
  150. homeassistant/components/template/translations/sk.json +1 -0
  151. homeassistant/components/template/translations/sl.json +478 -12
  152. homeassistant/components/template/translations/zh-Hant.json +6 -0
  153. homeassistant/components/template/vacuum.py +46 -1
  154. homeassistant/components/teslemetry/models.py +1 -1
  155. homeassistant/components/teslemetry/sensor.py +8 -7
  156. homeassistant/components/teslemetry/translations/ga.json +19 -1
  157. homeassistant/components/teslemetry/translations/he.json +1 -1
  158. homeassistant/components/tessie/translations/ga.json +14 -1
  159. homeassistant/components/tibber/translations/ga.json +45 -0
  160. homeassistant/components/timer/translations/he.json +1 -1
  161. homeassistant/components/traccar_server/translations/ga.json +4 -1
  162. homeassistant/components/transmission/translations/he.json +1 -1
  163. homeassistant/components/tuya/fan.py +3 -1
  164. homeassistant/components/tuya/translations/es.json +12 -0
  165. homeassistant/components/tuya/translations/he.json +3 -0
  166. homeassistant/components/unifi/hub/entity_loader.py +5 -3
  167. homeassistant/components/unifi/hub/hub.py +1 -1
  168. homeassistant/components/unifiprotect/translations/ga.json +4 -2
  169. homeassistant/components/uptime_kuma/translations/es.json +10 -0
  170. homeassistant/components/uptime_kuma/translations/he.json +5 -0
  171. homeassistant/components/utility_meter/translations/ga.json +22 -0
  172. homeassistant/components/vacuum/translations/he.json +1 -1
  173. homeassistant/components/venstar/translations/he.json +1 -1
  174. homeassistant/components/volvo/icons.json +9 -5
  175. homeassistant/components/volvo/translations/he.json +59 -0
  176. homeassistant/components/waze_travel_time/translations/he.json +10 -0
  177. homeassistant/components/wyoming/manifest.json +1 -1
  178. homeassistant/components/xiaomi_ble/translations/ga.json +17 -1
  179. homeassistant/components/zha/translations/he.json +21 -1
  180. homeassistant/components/zha/translations/sl.json +1 -0
  181. homeassistant/components/zwave_js/__init__.py +33 -25
  182. homeassistant/components/zwave_js/config_flow.py +16 -2
  183. homeassistant/components/zwave_js/manifest.json +1 -1
  184. homeassistant/components/zwave_js/strings.json +1 -1
  185. homeassistant/components/zwave_js/translations/cs.json +0 -1
  186. homeassistant/components/zwave_js/translations/de.json +1 -1
  187. homeassistant/components/zwave_js/translations/el.json +0 -1
  188. homeassistant/components/zwave_js/translations/en-GB.json +0 -1
  189. homeassistant/components/zwave_js/translations/en.json +1 -1
  190. homeassistant/components/zwave_js/translations/es.json +1 -1
  191. homeassistant/components/zwave_js/translations/et.json +1 -1
  192. homeassistant/components/zwave_js/translations/ga.json +0 -1
  193. homeassistant/components/zwave_js/translations/hu.json +0 -1
  194. homeassistant/components/zwave_js/translations/lt.json +0 -1
  195. homeassistant/components/zwave_js/translations/nl.json +0 -1
  196. homeassistant/components/zwave_js/translations/pt.json +0 -1
  197. homeassistant/components/zwave_js/translations/ru.json +0 -1
  198. homeassistant/components/zwave_js/translations/sk.json +0 -1
  199. homeassistant/components/zwave_js/translations/sv.json +0 -1
  200. homeassistant/components/zwave_js/translations/zh-Hans.json +0 -1
  201. homeassistant/components/zwave_js/translations/zh-Hant.json +1 -1
  202. homeassistant/const.py +1 -1
  203. homeassistant/helpers/device_registry.py +5 -2
  204. homeassistant/package_constraints.txt +1 -1
  205. {homeassistant-2025.8.0b2.dist-info → homeassistant-2025.8.0b3.dist-info}/METADATA +2 -2
  206. {homeassistant-2025.8.0b2.dist-info → homeassistant-2025.8.0b3.dist-info}/RECORD +211 -205
  207. {homeassistant-2025.8.0b2.dist-info → homeassistant-2025.8.0b3.dist-info}/WHEEL +0 -0
  208. {homeassistant-2025.8.0b2.dist-info → homeassistant-2025.8.0b3.dist-info}/entry_points.txt +0 -0
  209. {homeassistant-2025.8.0b2.dist-info → homeassistant-2025.8.0b3.dist-info}/licenses/LICENSE.md +0 -0
  210. {homeassistant-2025.8.0b2.dist-info → homeassistant-2025.8.0b3.dist-info}/licenses/homeassistant/backports/LICENSE.Python +0 -0
  211. {homeassistant-2025.8.0b2.dist-info → homeassistant-2025.8.0b3.dist-info}/top_level.txt +0 -0
@@ -17,6 +17,9 @@
17
17
  "all_group_on": "Uile/gr\u00fapa ar si\u00fal",
18
18
  "all_off": "Gach rud as",
19
19
  "all_on": "Ar si\u00fal go l\u00e9ir",
20
+ "bright": "Geal",
21
+ "dark_detected": "Dorchadas braite",
22
+ "dim": "Lag",
20
23
  "disable_sun_automation": "D\u00edchumasaigh uathoibri\u00fa na gr\u00e9ine",
21
24
  "disarm": "D\u00ed-arm\u00e1il",
22
25
  "down": "S\u00edos",
@@ -25,6 +28,7 @@
25
28
  "group_off": "Gr\u00fap\u00e1il as",
26
29
  "group_on": "Gr\u00fap\u00e1il ar",
27
30
  "illegal_command": "Ord\u00fa m\u00eddhleathach",
31
+ "ir": "IR",
28
32
  "level_1": "Leibh\u00e9al 1",
29
33
  "level_2": "Leibh\u00e9al 2",
30
34
  "level_3": "Leibh\u00e9al 3",
@@ -47,6 +51,15 @@
47
51
  "normal_delayed": "Moill gn\u00e1th",
48
52
  "normal_delayed_tamper": "Gn\u00e1th-mhoilli\u00fa tamp\u00e1la",
49
53
  "normal_tamper": "Gn\u00e1th-tharmad\u00f3ir",
54
+ "pairing_kd101": "Ag p\u00e9ire\u00e1il KD101",
55
+ "panic": "Scaoll",
56
+ "program": "Cl\u00e1r",
57
+ "scene": "Radharc",
58
+ "set_group_level": "Socraigh leibh\u00e9al gr\u00fapa",
59
+ "set_level": "Socraigh leibh\u00e9al",
60
+ "sound_0": "Fuaim 0",
61
+ "sound_1": "Fuaim 1",
62
+ "sound_10": "Fuaim 10",
50
63
  "sound_11": "Fuaim 11",
51
64
  "sound_12": "Fuaim 12",
52
65
  "sound_13": "Fuaim 13",
@@ -66,6 +66,17 @@
66
66
  "name": "Toirt"
67
67
  }
68
68
  },
69
+ "sensor": {
70
+ "doorbell_volume": {
71
+ "name": "Toirt an chloig\u00edn dorais"
72
+ },
73
+ "mic_volume": {
74
+ "name": "Toirt micreaf\u00f3in"
75
+ },
76
+ "voice_volume": {
77
+ "name": "Toirt gutha"
78
+ }
79
+ },
69
80
  "switch": {
70
81
  "in_home_chime": {
71
82
  "name": "Cling sa bhaile"
@@ -230,7 +230,7 @@
230
230
  "error": "\u05e9\u05d2\u05d9\u05d0\u05d4",
231
231
  "going_to_target": "\u05d4\u05d5\u05dc\u05da \u05dc\u05d9\u05e2\u05d3",
232
232
  "going_to_wash_the_mop": "\u05d4\u05d5\u05dc\u05da \u05dc\u05e9\u05d8\u05d5\u05e3 \u05d0\u05ea \u05d4\u05de\u05d2\u05d1",
233
- "idle": "\u05de\u05de\u05ea\u05d9\u05df",
233
+ "idle": "\u05d1\u05d4\u05de\u05ea\u05e0\u05d4",
234
234
  "locked": "\u05e0\u05e2\u05d5\u05dc",
235
235
  "manual_mode": "\u05de\u05e6\u05d1 \u05d9\u05d3\u05e0\u05d9",
236
236
  "mapping": "\u05e9\u05d5\u05d8\u05e3",
@@ -6,6 +6,9 @@
6
6
  },
7
7
  "monthly_consumption": {
8
8
  "name": "Tomhaltas m\u00edos\u00fail"
9
+ },
10
+ "monthly_forecast": {
11
+ "name": "R\u00e9amhaisn\u00e9is mh\u00edos\u00fail"
9
12
  }
10
13
  }
11
14
  }
@@ -184,6 +184,7 @@
184
184
  "temperature": "\u0398\u03b5\u03c1\u03bc\u03bf\u03ba\u03c1\u03b1\u03c3\u03af\u03b1",
185
185
  "timestamp": "\u03a7\u03c1\u03bf\u03bd\u03b9\u03ba\u03ae \u03c3\u03ae\u03bc\u03b1\u03bd\u03c3\u03b7",
186
186
  "volatile_organic_compounds": "\u03a0\u03c4\u03b7\u03c4\u03b9\u03ba\u03ad\u03c2 \u03bf\u03c1\u03b3\u03b1\u03bd\u03b9\u03ba\u03ad\u03c2 \u03b5\u03bd\u03ce\u03c3\u03b5\u03b9\u03c2 (VOCs)",
187
+ "volatile_organic_compounds_parts": "\u039c\u03ad\u03c1\u03b7 \u03c0\u03c4\u03b7\u03c4\u03b9\u03ba\u03ce\u03bd \u03bf\u03c1\u03b3\u03b1\u03bd\u03b9\u03ba\u03ce\u03bd \u03b5\u03bd\u03ce\u03c3\u03b5\u03c9\u03bd",
187
188
  "voltage": "\u03a4\u03ac\u03c3\u03b7",
188
189
  "volume": "\u039f\u03b3\u03ba\u03bf\u03c2",
189
190
  "volume_flow_rate": "\u03a1\u03c5\u03b8\u03bc\u03cc\u03c2 \u03cc\u03b3\u03ba\u03bf\u03c5 \u03c1\u03bf\u03ae\u03c2",
@@ -184,6 +184,7 @@
184
184
  "temperature": "Temperatura",
185
185
  "timestamp": "Marca de tiempo",
186
186
  "volatile_organic_compounds": "Compuestos org\u00e1nicos vol\u00e1tiles",
187
+ "volatile_organic_compounds_parts": "Partes de compuestos org\u00e1nicos vol\u00e1tiles",
187
188
  "voltage": "Voltaje",
188
189
  "volume": "Volumen",
189
190
  "volume_flow_rate": "Caudal volum\u00e9trico",
@@ -101,6 +101,7 @@
101
101
  "temperature": "\u05d8\u05de\u05e4\u05e8\u05d8\u05d5\u05e8\u05d4",
102
102
  "timestamp": "\u05d7\u05d5\u05ea\u05de\u05ea \u05d6\u05de\u05df",
103
103
  "volatile_organic_compounds": "\u05ea\u05e8\u05db\u05d5\u05d1\u05d5\u05ea \u05d0\u05d5\u05e8\u05d2\u05e0\u05d9\u05d5\u05ea \u05e0\u05d3\u05d9\u05e4\u05d5\u05ea",
104
+ "volatile_organic_compounds_parts": "\u05d7\u05dc\u05e7\u05d9 \u05ea\u05e8\u05db\u05d5\u05d1\u05d5\u05ea \u05d0\u05d5\u05e8\u05d2\u05e0\u05d9\u05d5\u05ea \u05e0\u05d3\u05d9\u05e4\u05d5\u05ea",
104
105
  "voltage": "\u05de\u05ea\u05d7",
105
106
  "volume": "\u05e0\u05e4\u05d7",
106
107
  "volume_flow_rate": "\u05e7\u05e6\u05d1 \u05d6\u05e8\u05d9\u05de\u05ea \u05e0\u05e4\u05d7",
@@ -174,6 +174,7 @@
174
174
  }
175
175
  },
176
176
  "start_super_chlorination": {
177
+ "description": "Tosa\u00edonn s\u00e9 s\u00e1rchl\u00f3ir\u00edni\u00fa, ag rith ar feadh na tr\u00e9imhse sonraithe n\u00f3 24 uair an chloig mura sonra\u00edtear aon cheann.",
177
178
  "fields": {
178
179
  "config_entry": {
179
180
  "description": "An iontr\u00e1il chumra\u00edochta le h\u00fas\u00e1id don ghn\u00edomh seo.",
@@ -26,7 +26,7 @@
26
26
  "sensor": {
27
27
  "dsl_training": {
28
28
  "state": {
29
- "idle": "\u05de\u05de\u05ea\u05d9\u05df"
29
+ "idle": "\u05d1\u05d4\u05de\u05ea\u05e0\u05d4"
30
30
  }
31
31
  }
32
32
  }
@@ -573,6 +573,7 @@ class SimpliSafe:
573
573
  self._hass,
574
574
  LOGGER,
575
575
  name=self.entry.title,
576
+ config_entry=self.entry,
576
577
  update_interval=DEFAULT_SCAN_INTERVAL,
577
578
  update_method=self.async_update,
578
579
  )
@@ -352,7 +352,7 @@
352
352
  "charging": "\u05d8\u05e2\u05d9\u05e0\u05d4",
353
353
  "cleaning": "\u05de\u05e0\u05e7\u05d4",
354
354
  "homing": "\u05d1\u05d9\u05d5\u05ea",
355
- "idle": "\u05de\u05de\u05ea\u05d9\u05df",
355
+ "idle": "\u05d1\u05d4\u05de\u05ea\u05e0\u05d4",
356
356
  "off": "\u05db\u05d1\u05d5\u05d9",
357
357
  "pause": "\u05de\u05d5\u05e9\u05d4\u05d4",
358
358
  "point": "\u05e0\u05e7\u05d5\u05d3\u05d4",
@@ -74,6 +74,7 @@ class SmartTubController:
74
74
  self._hass,
75
75
  _LOGGER,
76
76
  name=DOMAIN,
77
+ config_entry=entry,
77
78
  update_method=self.async_update_data,
78
79
  update_interval=timedelta(seconds=SCAN_INTERVAL),
79
80
  )
@@ -83,8 +83,8 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
83
83
  if not gateway:
84
84
  raise ConfigEntryNotReady(f"Cannot find device {device}")
85
85
 
86
- signal_coordinator = SignalCoordinator(hass, gateway)
87
- network_coordinator = NetworkCoordinator(hass, gateway)
86
+ signal_coordinator = SignalCoordinator(hass, entry, gateway)
87
+ network_coordinator = NetworkCoordinator(hass, entry, gateway)
88
88
 
89
89
  # Fetch initial data so we have data when entities subscribe
90
90
  await signal_coordinator.async_config_entry_first_refresh()
@@ -16,13 +16,14 @@ _LOGGER = logging.getLogger(__name__)
16
16
  class SignalCoordinator(DataUpdateCoordinator):
17
17
  """Signal strength coordinator."""
18
18
 
19
- def __init__(self, hass, gateway):
19
+ def __init__(self, hass, entry, gateway):
20
20
  """Initialize signal strength coordinator."""
21
21
  super().__init__(
22
22
  hass,
23
23
  _LOGGER,
24
24
  name="Device signal state",
25
25
  update_interval=timedelta(seconds=DEFAULT_SCAN_INTERVAL),
26
+ config_entry=entry,
26
27
  )
27
28
  self._gateway = gateway
28
29
 
@@ -38,13 +39,14 @@ class SignalCoordinator(DataUpdateCoordinator):
38
39
  class NetworkCoordinator(DataUpdateCoordinator):
39
40
  """Network info coordinator."""
40
41
 
41
- def __init__(self, hass, gateway):
42
+ def __init__(self, hass, entry, gateway):
42
43
  """Initialize network info coordinator."""
43
44
  super().__init__(
44
45
  hass,
45
46
  _LOGGER,
46
47
  name="Device network state",
47
48
  update_interval=timedelta(seconds=DEFAULT_SCAN_INTERVAL),
49
+ config_entry=entry,
48
50
  )
49
51
  self._gateway = gateway
50
52
 
@@ -46,7 +46,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: SnooConfigEntry) -> bool
46
46
  coordinators: dict[str, SnooCoordinator] = {}
47
47
  tasks = []
48
48
  for device in devices:
49
- coordinators[device.serialNumber] = SnooCoordinator(hass, device, snoo)
49
+ coordinators[device.serialNumber] = SnooCoordinator(hass, entry, device, snoo)
50
50
  tasks.append(coordinators[device.serialNumber].setup())
51
51
  await asyncio.gather(*tasks)
52
52
  entry.runtime_data = coordinators
@@ -19,11 +19,18 @@ class SnooCoordinator(DataUpdateCoordinator[SnooData]):
19
19
 
20
20
  config_entry: SnooConfigEntry
21
21
 
22
- def __init__(self, hass: HomeAssistant, device: SnooDevice, snoo: Snoo) -> None:
22
+ def __init__(
23
+ self,
24
+ hass: HomeAssistant,
25
+ entry: SnooConfigEntry,
26
+ device: SnooDevice,
27
+ snoo: Snoo,
28
+ ) -> None:
23
29
  """Set up Snoo Coordinator."""
24
30
  super().__init__(
25
31
  hass,
26
32
  name=device.name,
33
+ config_entry=entry,
27
34
  logger=_LOGGER,
28
35
  )
29
36
  self.device_unique_id = device.serialNumber
@@ -121,6 +121,7 @@
121
121
  "temperature": "\u0398\u03b5\u03c1\u03bc\u03bf\u03ba\u03c1\u03b1\u03c3\u03af\u03b1",
122
122
  "timestamp": "\u03a7\u03c1\u03bf\u03bd\u03b9\u03ba\u03ae \u03c3\u03ae\u03bc\u03b1\u03bd\u03c3\u03b7",
123
123
  "volatile_organic_compounds": "\u03a0\u03c4\u03b7\u03c4\u03b9\u03ba\u03ad\u03c2 \u03bf\u03c1\u03b3\u03b1\u03bd\u03b9\u03ba\u03ad\u03c2 \u03b5\u03bd\u03ce\u03c3\u03b5\u03b9\u03c2 (VOCs)",
124
+ "volatile_organic_compounds_parts": "\u039c\u03ad\u03c1\u03b7 \u03c0\u03c4\u03b7\u03c4\u03b9\u03ba\u03ce\u03bd \u03bf\u03c1\u03b3\u03b1\u03bd\u03b9\u03ba\u03ce\u03bd \u03b5\u03bd\u03ce\u03c3\u03b5\u03c9\u03bd",
124
125
  "voltage": "\u03a4\u03ac\u03c3\u03b7",
125
126
  "volume": "\u039f\u03b3\u03ba\u03bf\u03c2",
126
127
  "volume_flow_rate": "\u03a1\u03c5\u03b8\u03bc\u03cc\u03c2 \u03cc\u03b3\u03ba\u03bf\u03c5 \u03c1\u03bf\u03ae\u03c2",
@@ -121,6 +121,7 @@
121
121
  "temperature": "Temperatura",
122
122
  "timestamp": "Marca de tiempo",
123
123
  "volatile_organic_compounds": "Compuestos org\u00e1nicos vol\u00e1tiles",
124
+ "volatile_organic_compounds_parts": "Partes de compuestos org\u00e1nicos vol\u00e1tiles",
124
125
  "voltage": "Voltaje",
125
126
  "volume": "Volumen",
126
127
  "volume_flow_rate": "Caudal volum\u00e9trico",
@@ -121,6 +121,7 @@
121
121
  "temperature": "\u05d8\u05de\u05e4\u05e8\u05d8\u05d5\u05e8\u05d4",
122
122
  "timestamp": "\u05d7\u05d5\u05ea\u05de\u05ea \u05d6\u05de\u05df",
123
123
  "volatile_organic_compounds": "\u05ea\u05e8\u05db\u05d5\u05d1\u05d5\u05ea \u05d0\u05d5\u05e8\u05d2\u05e0\u05d9\u05d5\u05ea \u05e0\u05d3\u05d9\u05e4\u05d5\u05ea",
124
+ "volatile_organic_compounds_parts": "\u05d7\u05dc\u05e7\u05d9 \u05ea\u05e8\u05db\u05d5\u05d1\u05d5\u05ea \u05d0\u05d5\u05e8\u05d2\u05e0\u05d9\u05d5\u05ea \u05e0\u05d3\u05d9\u05e4\u05d5\u05ea",
124
125
  "voltage": "\u05de\u05ea\u05d7",
125
126
  "volume": "\u05e0\u05e4\u05d7",
126
127
  "volume_flow_rate": "\u05e7\u05e6\u05d1 \u05d6\u05e8\u05d9\u05de\u05ea \u05e0\u05e4\u05d7",
@@ -72,6 +72,9 @@
72
72
  "platform": {
73
73
  "name": "Ard\u00e1n"
74
74
  },
75
+ "transfers": {
76
+ "name": "Aistrithe"
77
+ },
75
78
  "trip_duration": {
76
79
  "name": "Fad an turais"
77
80
  }
@@ -216,6 +216,7 @@ class AbstractTemplateCover(AbstractTemplateEntity, CoverEntity):
216
216
 
217
217
  _entity_id_format = ENTITY_ID_FORMAT
218
218
  _optimistic_entity = True
219
+ _extra_optimistic_options = (CONF_POSITION,)
219
220
 
220
221
  # The super init is not called because TemplateEntity and TriggerEntity will call AbstractTemplateEntity.__init__.
221
222
  # This ensures that the __init__ on AbstractTemplateEntity is not called twice.
@@ -20,6 +20,7 @@ class AbstractTemplateEntity(Entity):
20
20
 
21
21
  _entity_id_format: str
22
22
  _optimistic_entity: bool = False
23
+ _extra_optimistic_options: tuple[str, ...] | None = None
23
24
  _template: Template | None = None
24
25
 
25
26
  def __init__(
@@ -35,9 +36,14 @@ class AbstractTemplateEntity(Entity):
35
36
  if self._optimistic_entity:
36
37
  self._template = config.get(CONF_STATE)
37
38
 
38
- self._attr_assumed_state = self._template is None or config.get(
39
- CONF_OPTIMISTIC, False
40
- )
39
+ optimistic = self._template is None
40
+ if self._extra_optimistic_options:
41
+ optimistic = optimistic and all(
42
+ config.get(option) is None
43
+ for option in self._extra_optimistic_options
44
+ )
45
+
46
+ self._attr_assumed_state = optimistic or config.get(CONF_OPTIMISTIC, False)
41
47
 
42
48
  if (object_id := config.get(CONF_OBJECT_ID)) is not None:
43
49
  self.entity_id = async_generate_entity_id(
@@ -440,6 +440,12 @@
440
440
  }
441
441
  }
442
442
  },
443
+ "issues": {
444
+ "deprecated_battery_level": {
445
+ "title": "Deprecated battery level option in {entity_name}",
446
+ "description": "The template vacuum options `battery_level` and `battery_level_template` are being removed in 2026.8.\n\nPlease remove the `battery_level` or `battery_level_template` option from the YAML configuration for {entity_id} ({entity_name})."
447
+ }
448
+ },
443
449
  "options": {
444
450
  "step": {
445
451
  "alarm_control_panel": {
@@ -445,6 +445,12 @@
445
445
  "message": "Fehler beim Auswerten des Codeformat-Template \u201e{code_format_template}\u201c f\u00fcr {entity_id}:{cause}"
446
446
  }
447
447
  },
448
+ "issues": {
449
+ "deprecated_battery_level": {
450
+ "description": "Die Staubsauger-Template-Optionen `battery_level` und `battery_level_template` werden in 2026.8 entfernt.\n\nBitte entferne die Option `battery_level` oder `battery_level_template` aus der YAML-Konfiguration f\u00fcr {entity_id} ({entity_name}).",
451
+ "title": "Veraltete Batteriestand-Option in {entity_name}"
452
+ }
453
+ },
448
454
  "options": {
449
455
  "step": {
450
456
  "alarm_control_panel": {
@@ -288,6 +288,7 @@
288
288
  },
289
289
  "sensor_device_class": {
290
290
  "options": {
291
+ "absolute_humidity": "\u0391\u03c0\u03cc\u03bb\u03c5\u03c4\u03b7 \u03c5\u03b3\u03c1\u03b1\u03c3\u03af\u03b1",
291
292
  "apparent_power": "\u03a6\u03b1\u03b9\u03bd\u03bf\u03bc\u03b5\u03bd\u03b9\u03ba\u03ae \u03b9\u03c3\u03c7\u03cd\u03c2",
292
293
  "aqi": "\u0394\u03b5\u03af\u03ba\u03c4\u03b7\u03c2 \u03c0\u03bf\u03b9\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2 \u03b1\u03ad\u03c1\u03b1",
293
294
  "area": "\u03a0\u03b5\u03c1\u03b9\u03bf\u03c7\u03ae",
@@ -335,6 +336,7 @@
335
336
  "temperature": "\u0398\u03b5\u03c1\u03bc\u03bf\u03ba\u03c1\u03b1\u03c3\u03af\u03b1",
336
337
  "timestamp": "\u03a7\u03c1\u03bf\u03bd\u03b9\u03ba\u03ae \u03c3\u03ae\u03bc\u03b1\u03bd\u03c3\u03b7",
337
338
  "volatile_organic_compounds": "\u03a0\u03c4\u03b7\u03c4\u03b9\u03ba\u03ad\u03c2 \u03bf\u03c1\u03b3\u03b1\u03bd\u03b9\u03ba\u03ad\u03c2 \u03b5\u03bd\u03ce\u03c3\u03b5\u03b9\u03c2 (VOCs)",
339
+ "volatile_organic_compounds_parts": "\u039c\u03ad\u03c1\u03b7 \u03c0\u03c4\u03b7\u03c4\u03b9\u03ba\u03ce\u03bd \u03bf\u03c1\u03b3\u03b1\u03bd\u03b9\u03ba\u03ce\u03bd \u03b5\u03bd\u03ce\u03c3\u03b5\u03c9\u03bd",
338
340
  "voltage": "\u03a4\u03ac\u03c3\u03b7",
339
341
  "volume": "\u039f\u03b3\u03ba\u03bf\u03c2",
340
342
  "volume_flow_rate": "\u03a1\u03c5\u03b8\u03bc\u03cc\u03c2 \u03cc\u03b3\u03ba\u03bf\u03c5 \u03c1\u03bf\u03ae\u03c2",
@@ -445,6 +445,12 @@
445
445
  "message": "Error evaluating code format template \"{code_format_template}\" for {entity_id}: {cause}"
446
446
  }
447
447
  },
448
+ "issues": {
449
+ "deprecated_battery_level": {
450
+ "description": "The template vacuum options `battery_level` and `battery_level_template` are being removed in 2026.8.\n\nPlease remove the `battery_level` or `battery_level_template` option from the YAML configuration for {entity_id} ({entity_name}).",
451
+ "title": "Deprecated battery level option in {entity_name}"
452
+ }
453
+ },
448
454
  "options": {
449
455
  "step": {
450
456
  "alarm_control_panel": {