homeassistant 2025.11.0__py3-none-any.whl → 2025.11.0b2__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 (256) hide show
  1. homeassistant/components/alexa_devices/manifest.json +1 -1
  2. homeassistant/components/alexa_devices/translations/bg.json +0 -13
  3. homeassistant/components/ambient_network/sensor.py +5 -5
  4. homeassistant/components/blink/translations/bg.json +1 -8
  5. homeassistant/components/brother/translations/bg.json +6 -0
  6. homeassistant/components/brother/translations/ca.json +5 -1
  7. homeassistant/components/brother/translations/cs.json +2 -2
  8. homeassistant/components/brother/translations/da.json +5 -1
  9. homeassistant/components/brother/translations/de.json +4 -4
  10. homeassistant/components/brother/translations/el.json +5 -1
  11. homeassistant/components/brother/translations/en-GB.json +4 -4
  12. homeassistant/components/brother/translations/en.json +4 -4
  13. homeassistant/components/brother/translations/es-419.json +5 -0
  14. homeassistant/components/brother/translations/es.json +2 -2
  15. homeassistant/components/brother/translations/et.json +2 -2
  16. homeassistant/components/brother/translations/fi.json +5 -1
  17. homeassistant/components/brother/translations/fr.json +5 -1
  18. homeassistant/components/brother/translations/ga.json +10 -2
  19. homeassistant/components/brother/translations/hu.json +5 -1
  20. homeassistant/components/brother/translations/id.json +5 -1
  21. homeassistant/components/brother/translations/it.json +5 -1
  22. homeassistant/components/brother/translations/ja.json +5 -1
  23. homeassistant/components/brother/translations/ko.json +5 -1
  24. homeassistant/components/brother/translations/lb.json +2 -1
  25. homeassistant/components/brother/translations/lt.json +2 -2
  26. homeassistant/components/brother/translations/nb.json +5 -1
  27. homeassistant/components/brother/translations/nl.json +5 -1
  28. homeassistant/components/brother/translations/pl.json +7 -3
  29. homeassistant/components/brother/translations/pt-BR.json +5 -1
  30. homeassistant/components/brother/translations/pt.json +10 -2
  31. homeassistant/components/brother/translations/ro.json +2 -1
  32. homeassistant/components/brother/translations/ru.json +5 -1
  33. homeassistant/components/brother/translations/sk.json +2 -2
  34. homeassistant/components/brother/translations/sl.json +10 -2
  35. homeassistant/components/brother/translations/sv.json +10 -2
  36. homeassistant/components/brother/translations/tr.json +5 -1
  37. homeassistant/components/brother/translations/uk.json +5 -1
  38. homeassistant/components/brother/translations/vi.json +5 -1
  39. homeassistant/components/brother/translations/zh-Hans.json +2 -2
  40. homeassistant/components/brother/translations/zh-Hant.json +4 -4
  41. homeassistant/components/bryant_evolution/translations/lt.json +0 -3
  42. homeassistant/components/control4/translations/es.json +1 -2
  43. homeassistant/components/cover/translations/es.json +7 -7
  44. homeassistant/components/daikin/translations/es.json +0 -1
  45. homeassistant/components/ecovacs/translations/es.json +0 -27
  46. homeassistant/components/ecovacs/translations/sr-Latn.json +0 -18
  47. homeassistant/components/enmax/__init__.py +1 -0
  48. homeassistant/components/enmax/manifest.json +6 -0
  49. homeassistant/components/esphome/__init__.py +3 -5
  50. homeassistant/components/esphome/translations/he.json +2 -2
  51. homeassistant/components/firefly_iii/translations/bg.json +0 -3
  52. homeassistant/components/foscam/manifest.json +1 -1
  53. homeassistant/components/frontend/__init__.py +1 -1
  54. homeassistant/components/frontend/manifest.json +1 -1
  55. homeassistant/components/google_sheets/translations/bg.json +0 -10
  56. homeassistant/components/google_sheets/translations/es.json +0 -9
  57. homeassistant/components/google_sheets/translations/sr-Latn.json +0 -14
  58. homeassistant/components/habitica/translations/es.json +0 -26
  59. homeassistant/components/hassio/issues.py +2 -0
  60. homeassistant/components/hassio/translations/es.json +0 -13
  61. homeassistant/components/holiday/manifest.json +1 -1
  62. homeassistant/components/homeassistant_connect_zbt2/config_flow.py +1 -18
  63. homeassistant/components/homeassistant_connect_zbt2/const.py +0 -58
  64. homeassistant/components/homeassistant_hardware/firmware_config_flow.py +0 -5
  65. homeassistant/components/homewizard/translations/es.json +2 -4
  66. homeassistant/components/http/__init__.py +2 -13
  67. homeassistant/components/http/strings.json +0 -4
  68. homeassistant/components/http/translations/de.json +0 -4
  69. homeassistant/components/http/translations/en-GB.json +0 -4
  70. homeassistant/components/http/translations/en.json +0 -4
  71. homeassistant/components/http/translations/es.json +0 -4
  72. homeassistant/components/http/translations/et.json +0 -4
  73. homeassistant/components/http/translations/lt.json +0 -4
  74. homeassistant/components/http/translations/sk.json +0 -4
  75. homeassistant/components/http/translations/zh-Hant.json +0 -4
  76. homeassistant/components/input_boolean/translations/cs.json +2 -2
  77. homeassistant/components/jewish_calendar/translations/es.json +0 -6
  78. homeassistant/components/knx/translations/bg.json +0 -93
  79. homeassistant/components/knx/translations/es.json +8 -39
  80. homeassistant/components/knx/translations/sr-Latn.json +1 -44
  81. homeassistant/components/lametric/translations/es.json +0 -1
  82. homeassistant/components/lg_thinq/sensor.py +0 -1
  83. homeassistant/components/litterrobot/manifest.json +1 -1
  84. homeassistant/components/london_underground/translations/he.json +0 -1
  85. homeassistant/components/matrix/translations/bg.json +1 -2
  86. homeassistant/components/matter/translations/bg.json +0 -7
  87. homeassistant/components/matter/translations/es.json +3 -26
  88. homeassistant/components/mcp/translations/es.json +0 -4
  89. homeassistant/components/mqtt/translations/es.json +4 -4
  90. homeassistant/components/mqtt/translations/he.json +2 -2
  91. homeassistant/components/nederlandse_spoorwegen/translations/bg.json +1 -2
  92. homeassistant/components/nextdns/translations/bg.json +1 -2
  93. homeassistant/components/nina/translations/bg.json +6 -0
  94. homeassistant/components/nina/translations/es.json +1 -40
  95. homeassistant/components/nina/translations/sr-Latn.json +0 -28
  96. homeassistant/components/nintendo_parental_controls/translations/bg.json +0 -19
  97. homeassistant/components/nuki/translations/es.json +0 -4
  98. homeassistant/components/octoprint/translations/es.json +0 -16
  99. homeassistant/components/oralb/translations/es.json +0 -1
  100. homeassistant/components/overkiz/translations/lt.json +1 -2
  101. homeassistant/components/plugwise/climate.py +26 -86
  102. homeassistant/components/plugwise/manifest.json +1 -1
  103. homeassistant/components/plugwise/strings.json +0 -3
  104. homeassistant/components/plugwise/translations/de.json +0 -3
  105. homeassistant/components/plugwise/translations/en-GB.json +0 -3
  106. homeassistant/components/plugwise/translations/en.json +0 -3
  107. homeassistant/components/plugwise/translations/es.json +0 -3
  108. homeassistant/components/plugwise/translations/et.json +0 -3
  109. homeassistant/components/plugwise/translations/lt.json +0 -3
  110. homeassistant/components/plugwise/translations/sk.json +0 -3
  111. homeassistant/components/plugwise/translations/zh-Hant.json +0 -3
  112. homeassistant/components/portainer/translations/bg.json +1 -8
  113. homeassistant/components/portainer/translations/sr-Latn.json +1 -3
  114. homeassistant/components/probe_plus/translations/es.json +0 -5
  115. homeassistant/components/ps4/translations/es.json +1 -9
  116. homeassistant/components/reolink/manifest.json +1 -1
  117. homeassistant/components/reolink/translations/cs.json +0 -1
  118. homeassistant/components/reolink/translations/en-GB.json +0 -1
  119. homeassistant/components/reolink/translations/es.json +0 -1
  120. homeassistant/components/reolink/translations/et.json +0 -1
  121. homeassistant/components/reolink/translations/lt.json +0 -1
  122. homeassistant/components/reolink/translations/pl.json +7 -8
  123. homeassistant/components/reolink/translations/sk.json +0 -1
  124. homeassistant/components/ruuvitag_ble/manifest.json +1 -1
  125. homeassistant/components/shelly/translations/bg.json +1 -2
  126. homeassistant/components/shelly/translations/es.json +3 -10
  127. homeassistant/components/slide_local/translations/es.json +1 -1
  128. homeassistant/components/smarttub/manifest.json +1 -1
  129. homeassistant/components/somfy_mylink/translations/es.json +3 -3
  130. homeassistant/components/soundtouch/__init__.py +1 -10
  131. homeassistant/components/sql/translations/es.json +0 -27
  132. homeassistant/components/sql/translations/sr-Latn.json +0 -9
  133. homeassistant/components/squeezebox/translations/es.json +0 -63
  134. homeassistant/components/{sunricher_dali → sunricher_dali_center}/__init__.py +2 -2
  135. homeassistant/components/{sunricher_dali → sunricher_dali_center}/config_flow.py +2 -2
  136. homeassistant/components/sunricher_dali_center/const.py +5 -0
  137. homeassistant/components/{sunricher_dali → sunricher_dali_center}/light.py +2 -2
  138. homeassistant/components/{sunricher_dali → sunricher_dali_center}/manifest.json +3 -3
  139. homeassistant/components/{sunricher_dali → sunricher_dali_center}/strings.json +6 -4
  140. homeassistant/components/sunricher_dali_center/translations/cs.json +29 -0
  141. homeassistant/components/{sunricher_dali → sunricher_dali_center}/translations/de.json +7 -5
  142. homeassistant/components/sunricher_dali_center/translations/el.json +11 -0
  143. homeassistant/components/{sunricher_dali → sunricher_dali_center}/translations/en-GB.json +6 -4
  144. homeassistant/components/{sunricher_dali → sunricher_dali_center}/translations/en.json +6 -4
  145. homeassistant/components/{sunricher_dali → sunricher_dali_center}/translations/es.json +6 -4
  146. homeassistant/components/sunricher_dali_center/translations/et.json +29 -0
  147. homeassistant/components/sunricher_dali_center/translations/ga.json +29 -0
  148. homeassistant/components/sunricher_dali_center/translations/he.json +11 -0
  149. homeassistant/components/sunricher_dali_center/translations/it.json +11 -0
  150. homeassistant/components/sunricher_dali_center/translations/lt.json +29 -0
  151. homeassistant/components/sunricher_dali_center/translations/nl.json +11 -0
  152. homeassistant/components/sunricher_dali_center/translations/pt.json +29 -0
  153. homeassistant/components/sunricher_dali_center/translations/sk.json +29 -0
  154. homeassistant/components/sunricher_dali_center/translations/sr-Latn.json +11 -0
  155. homeassistant/components/sunricher_dali_center/translations/zh-Hans.json +29 -0
  156. homeassistant/components/sunricher_dali_center/translations/zh-Hant.json +29 -0
  157. homeassistant/components/{sunricher_dali → sunricher_dali_center}/types.py +2 -2
  158. homeassistant/components/switch_as_x/translations/cs.json +1 -1
  159. homeassistant/components/switch_as_x/translations/es.json +4 -4
  160. homeassistant/components/system_bridge/translations/es.json +0 -1
  161. homeassistant/components/telegram_bot/translations/bg.json +0 -11
  162. homeassistant/components/telegram_bot/translations/es.json +7 -42
  163. homeassistant/components/template/translations/es.json +3 -11
  164. homeassistant/components/tesla_fleet/manifest.json +1 -1
  165. homeassistant/components/teslemetry/manifest.json +1 -1
  166. homeassistant/components/tessie/manifest.json +1 -1
  167. homeassistant/components/tessie/translations/es.json +0 -3
  168. homeassistant/components/transmission/translations/bg.json +0 -10
  169. homeassistant/components/usb/utils.py +23 -22
  170. homeassistant/components/vesync/humidifier.py +1 -3
  171. homeassistant/components/vesync/strings.json +0 -11
  172. homeassistant/components/vesync/translations/bg.json +0 -11
  173. homeassistant/components/vesync/translations/cs.json +0 -11
  174. homeassistant/components/vesync/translations/de.json +0 -11
  175. homeassistant/components/vesync/translations/en-GB.json +0 -11
  176. homeassistant/components/vesync/translations/en.json +0 -11
  177. homeassistant/components/vesync/translations/es.json +0 -11
  178. homeassistant/components/vesync/translations/et.json +0 -11
  179. homeassistant/components/vesync/translations/he.json +0 -11
  180. homeassistant/components/vesync/translations/lt.json +0 -11
  181. homeassistant/components/vesync/translations/sk.json +0 -11
  182. homeassistant/components/vesync/translations/zh-Hans.json +0 -11
  183. homeassistant/components/vesync/translations/zh-Hant.json +0 -11
  184. homeassistant/components/volvo/translations/bg.json +0 -5
  185. homeassistant/components/volvo/translations/cs.json +0 -5
  186. homeassistant/components/volvo/translations/en-GB.json +0 -5
  187. homeassistant/components/volvo/translations/es.json +0 -11
  188. homeassistant/components/volvo/translations/lt.json +0 -5
  189. homeassistant/components/volvo/translations/sk.json +0 -5
  190. homeassistant/components/whirlpool/translations/bg.json +0 -22
  191. homeassistant/components/whirlpool/translations/es.json +0 -81
  192. homeassistant/components/workday/manifest.json +1 -1
  193. homeassistant/components/xbox/translations/bg.json +0 -36
  194. homeassistant/components/xbox/translations/es.json +0 -21
  195. homeassistant/components/xbox/translations/sr-Latn.json +0 -1
  196. homeassistant/components/yardian/translations/bg.json +0 -7
  197. homeassistant/components/yardian/translations/es.json +0 -16
  198. homeassistant/components/zha/__init__.py +1 -16
  199. homeassistant/components/zha/config_flow.py +48 -163
  200. homeassistant/components/zha/manifest.json +1 -1
  201. homeassistant/components/zha/radio_manager.py +2 -3
  202. homeassistant/components/zha/strings.json +15 -68
  203. homeassistant/components/zha/translations/bg.json +3 -20
  204. homeassistant/components/zha/translations/ca.json +3 -0
  205. homeassistant/components/zha/translations/cs.json +16 -30
  206. homeassistant/components/zha/translations/da.json +3 -0
  207. homeassistant/components/zha/translations/de.json +15 -68
  208. homeassistant/components/zha/translations/el.json +3 -0
  209. homeassistant/components/zha/translations/en-GB.json +15 -68
  210. homeassistant/components/zha/translations/en.json +15 -68
  211. homeassistant/components/zha/translations/es.json +18 -119
  212. homeassistant/components/zha/translations/et.json +15 -68
  213. homeassistant/components/zha/translations/fi.json +3 -0
  214. homeassistant/components/zha/translations/fr.json +18 -0
  215. homeassistant/components/zha/translations/ga.json +3 -0
  216. homeassistant/components/zha/translations/gsw.json +3 -0
  217. homeassistant/components/zha/translations/hu.json +3 -0
  218. homeassistant/components/zha/translations/id.json +3 -0
  219. homeassistant/components/zha/translations/it.json +3 -0
  220. homeassistant/components/zha/translations/ja.json +3 -0
  221. homeassistant/components/zha/translations/ko.json +9 -0
  222. homeassistant/components/zha/translations/lt.json +15 -68
  223. homeassistant/components/zha/translations/nb.json +3 -0
  224. homeassistant/components/zha/translations/nl.json +3 -0
  225. homeassistant/components/zha/translations/pl.json +3 -0
  226. homeassistant/components/zha/translations/pt-BR.json +3 -0
  227. homeassistant/components/zha/translations/pt.json +18 -0
  228. homeassistant/components/zha/translations/ro.json +3 -0
  229. homeassistant/components/zha/translations/ru.json +18 -0
  230. homeassistant/components/zha/translations/sk.json +15 -68
  231. homeassistant/components/zha/translations/sl.json +9 -0
  232. homeassistant/components/zha/translations/sr-Latn.json +14 -0
  233. homeassistant/components/zha/translations/sv.json +4 -0
  234. homeassistant/components/zha/translations/tr.json +3 -0
  235. homeassistant/components/zha/translations/uk.json +3 -0
  236. homeassistant/components/zha/translations/zh-Hans.json +16 -30
  237. homeassistant/components/zha/translations/zh-Hant.json +15 -68
  238. homeassistant/components/zwave_js/translations/es.json +0 -3
  239. homeassistant/const.py +1 -1
  240. homeassistant/generated/config_flows.py +1 -1
  241. homeassistant/generated/integrations.json +7 -2
  242. homeassistant/package_constraints.txt +1 -1
  243. homeassistant/util/language.py +7 -17
  244. {homeassistant-2025.11.0.dist-info → homeassistant-2025.11.0b2.dist-info}/METADATA +1 -1
  245. {homeassistant-2025.11.0.dist-info → homeassistant-2025.11.0b2.dist-info}/RECORD +251 -240
  246. homeassistant/components/fing/translations/bg.json +0 -20
  247. homeassistant/components/fing/translations/es.json +0 -31
  248. homeassistant/components/inels/translations/bg.json +0 -1
  249. homeassistant/components/inels/translations/es.json +0 -30
  250. homeassistant/components/sunricher_dali/const.py +0 -5
  251. /homeassistant/components/{sunricher_dali → sunricher_dali_center}/quality_scale.yaml +0 -0
  252. {homeassistant-2025.11.0.dist-info → homeassistant-2025.11.0b2.dist-info}/WHEEL +0 -0
  253. {homeassistant-2025.11.0.dist-info → homeassistant-2025.11.0b2.dist-info}/entry_points.txt +0 -0
  254. {homeassistant-2025.11.0.dist-info → homeassistant-2025.11.0b2.dist-info}/licenses/LICENSE.md +0 -0
  255. {homeassistant-2025.11.0.dist-info → homeassistant-2025.11.0b2.dist-info}/licenses/homeassistant/backports/LICENSE.Python +0 -0
  256. {homeassistant-2025.11.0.dist-info → homeassistant-2025.11.0b2.dist-info}/top_level.txt +0 -0
@@ -2,7 +2,6 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from dataclasses import dataclass
6
5
  from typing import Any
7
6
 
8
7
  from homeassistant.components.climate import (
@@ -14,44 +13,18 @@ from homeassistant.components.climate import (
14
13
  HVACAction,
15
14
  HVACMode,
16
15
  )
17
- from homeassistant.const import ATTR_TEMPERATURE, STATE_OFF, STATE_ON, UnitOfTemperature
16
+ from homeassistant.const import ATTR_TEMPERATURE, UnitOfTemperature
18
17
  from homeassistant.core import HomeAssistant, callback
19
- from homeassistant.exceptions import HomeAssistantError
20
18
  from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
21
- from homeassistant.helpers.restore_state import ExtraStoredData, RestoreEntity
22
19
 
23
20
  from .const import DOMAIN, MASTER_THERMOSTATS
24
21
  from .coordinator import PlugwiseConfigEntry, PlugwiseDataUpdateCoordinator
25
22
  from .entity import PlugwiseEntity
26
23
  from .util import plugwise_command
27
24
 
28
- ERROR_NO_SCHEDULE = "set_schedule_first"
29
25
  PARALLEL_UPDATES = 0
30
26
 
31
27
 
32
- @dataclass
33
- class PlugwiseClimateExtraStoredData(ExtraStoredData):
34
- """Object to hold extra stored data."""
35
-
36
- last_active_schedule: str | None
37
- previous_action_mode: str | None
38
-
39
- def as_dict(self) -> dict[str, Any]:
40
- """Return a dict representation of the text data."""
41
- return {
42
- "last_active_schedule": self.last_active_schedule,
43
- "previous_action_mode": self.previous_action_mode,
44
- }
45
-
46
- @classmethod
47
- def from_dict(cls, restored: dict[str, Any]) -> PlugwiseClimateExtraStoredData:
48
- """Initialize a stored data object from a dict."""
49
- return cls(
50
- last_active_schedule=restored.get("last_active_schedule"),
51
- previous_action_mode=restored.get("previous_action_mode"),
52
- )
53
-
54
-
55
28
  async def async_setup_entry(
56
29
  hass: HomeAssistant,
57
30
  entry: PlugwiseConfigEntry,
@@ -83,26 +56,14 @@ async def async_setup_entry(
83
56
  entry.async_on_unload(coordinator.async_add_listener(_add_entities))
84
57
 
85
58
 
86
- class PlugwiseClimateEntity(PlugwiseEntity, ClimateEntity, RestoreEntity):
59
+ class PlugwiseClimateEntity(PlugwiseEntity, ClimateEntity):
87
60
  """Representation of a Plugwise thermostat."""
88
61
 
89
62
  _attr_name = None
90
63
  _attr_temperature_unit = UnitOfTemperature.CELSIUS
91
64
  _attr_translation_key = DOMAIN
92
65
 
93
- _last_active_schedule: str | None = None
94
- _previous_action_mode: str | None = HVACAction.HEATING.value
95
-
96
- async def async_added_to_hass(self) -> None:
97
- """Run when entity about to be added."""
98
- await super().async_added_to_hass()
99
-
100
- if extra_data := await self.async_get_last_extra_data():
101
- plugwise_extra_data = PlugwiseClimateExtraStoredData.from_dict(
102
- extra_data.as_dict()
103
- )
104
- self._last_active_schedule = plugwise_extra_data.last_active_schedule
105
- self._previous_action_mode = plugwise_extra_data.previous_action_mode
66
+ _previous_mode: str = "heating"
106
67
 
107
68
  def __init__(
108
69
  self,
@@ -115,6 +76,7 @@ class PlugwiseClimateEntity(PlugwiseEntity, ClimateEntity, RestoreEntity):
115
76
 
116
77
  gateway_id: str = coordinator.api.gateway_id
117
78
  self._gateway_data = coordinator.data[gateway_id]
79
+
118
80
  self._location = device_id
119
81
  if (location := self.device.get("location")) is not None:
120
82
  self._location = location
@@ -143,19 +105,25 @@ class PlugwiseClimateEntity(PlugwiseEntity, ClimateEntity, RestoreEntity):
143
105
  self.device["thermostat"]["resolution"], 0.1
144
106
  )
145
107
 
108
+ def _previous_action_mode(self, coordinator: PlugwiseDataUpdateCoordinator) -> None:
109
+ """Return the previous action-mode when the regulation-mode is not heating or cooling.
110
+
111
+ Helper for set_hvac_mode().
112
+ """
113
+ # When no cooling available, _previous_mode is always heating
114
+ if (
115
+ "regulation_modes" in self._gateway_data
116
+ and "cooling" in self._gateway_data["regulation_modes"]
117
+ ):
118
+ mode = self._gateway_data["select_regulation_mode"]
119
+ if mode in ("cooling", "heating"):
120
+ self._previous_mode = mode
121
+
146
122
  @property
147
123
  def current_temperature(self) -> float:
148
124
  """Return the current temperature."""
149
125
  return self.device["sensors"]["temperature"]
150
126
 
151
- @property
152
- def extra_restore_state_data(self) -> PlugwiseClimateExtraStoredData:
153
- """Return text specific state data to be restored."""
154
- return PlugwiseClimateExtraStoredData(
155
- last_active_schedule=self._last_active_schedule,
156
- previous_action_mode=self._previous_action_mode,
157
- )
158
-
159
127
  @property
160
128
  def target_temperature(self) -> float:
161
129
  """Return the temperature we try to reach.
@@ -202,10 +170,9 @@ class PlugwiseClimateEntity(PlugwiseEntity, ClimateEntity, RestoreEntity):
202
170
 
203
171
  if self.coordinator.api.cooling_present:
204
172
  if "regulation_modes" in self._gateway_data:
205
- selected = self._gateway_data.get("select_regulation_mode")
206
- if selected == HVACAction.COOLING.value:
173
+ if self._gateway_data["select_regulation_mode"] == "cooling":
207
174
  hvac_modes.append(HVACMode.COOL)
208
- if selected == HVACAction.HEATING.value:
175
+ if self._gateway_data["select_regulation_mode"] == "heating":
209
176
  hvac_modes.append(HVACMode.HEAT)
210
177
  else:
211
178
  hvac_modes.append(HVACMode.HEAT_COOL)
@@ -217,16 +184,8 @@ class PlugwiseClimateEntity(PlugwiseEntity, ClimateEntity, RestoreEntity):
217
184
  @property
218
185
  def hvac_action(self) -> HVACAction:
219
186
  """Return the current running hvac operation if supported."""
220
- # Keep track of the previous hvac_action mode.
221
- # When no cooling available, _previous_action_mode is always heating
222
- if (
223
- "regulation_modes" in self._gateway_data
224
- and HVACAction.COOLING.value in self._gateway_data["regulation_modes"]
225
- ):
226
- mode = self._gateway_data["select_regulation_mode"]
227
- if mode in (HVACAction.COOLING.value, HVACAction.HEATING.value):
228
- self._previous_action_mode = mode
229
-
187
+ # Keep track of the previous action-mode
188
+ self._previous_action_mode(self.coordinator)
230
189
  if (action := self.device.get("control_state")) is not None:
231
190
  return HVACAction(action)
232
191
 
@@ -260,33 +219,14 @@ class PlugwiseClimateEntity(PlugwiseEntity, ClimateEntity, RestoreEntity):
260
219
  return
261
220
 
262
221
  if hvac_mode == HVACMode.OFF:
263
- await self.coordinator.api.set_regulation_mode(hvac_mode.value)
222
+ await self.coordinator.api.set_regulation_mode(hvac_mode)
264
223
  else:
265
- current = self.device.get("select_schedule")
266
- desired = current
267
-
268
- # Capture the last valid schedule
269
- if desired and desired != "off":
270
- self._last_active_schedule = desired
271
- elif desired == "off":
272
- desired = self._last_active_schedule
273
-
274
- # Enabling HVACMode.AUTO requires a previously set schedule for saving and restoring
275
- if hvac_mode == HVACMode.AUTO and not desired:
276
- raise HomeAssistantError(
277
- translation_domain=DOMAIN,
278
- translation_key=ERROR_NO_SCHEDULE,
279
- )
280
-
281
224
  await self.coordinator.api.set_schedule_state(
282
225
  self._location,
283
- STATE_ON if hvac_mode == HVACMode.AUTO else STATE_OFF,
284
- desired,
226
+ "on" if hvac_mode == HVACMode.AUTO else "off",
285
227
  )
286
- if self.hvac_mode == HVACMode.OFF and self._previous_action_mode:
287
- await self.coordinator.api.set_regulation_mode(
288
- self._previous_action_mode
289
- )
228
+ if self.hvac_mode == HVACMode.OFF:
229
+ await self.coordinator.api.set_regulation_mode(self._previous_mode)
290
230
 
291
231
  @plugwise_command
292
232
  async def async_set_preset_mode(self, preset_mode: str) -> None:
@@ -8,6 +8,6 @@
8
8
  "iot_class": "local_polling",
9
9
  "loggers": ["plugwise"],
10
10
  "quality_scale": "platinum",
11
- "requirements": ["plugwise==1.8.3"],
11
+ "requirements": ["plugwise==1.8.2"],
12
12
  "zeroconf": ["_plugwise._tcp.local."]
13
13
  }
@@ -314,9 +314,6 @@
314
314
  "invalid_xml_data": {
315
315
  "message": "[%key:component::plugwise::config::error::response_error%]"
316
316
  },
317
- "set_schedule_first": {
318
- "message": "Failed setting HVACMode, set a schedule first."
319
- },
320
317
  "unsupported_firmware": {
321
318
  "message": "[%key:component::plugwise::config::error::unsupported%]"
322
319
  }
@@ -314,9 +314,6 @@
314
314
  "invalid_xml_data": {
315
315
  "message": "Ung\u00fcltige XML-Daten oder Fehleranzeige empfangen"
316
316
  },
317
- "set_schedule_first": {
318
- "message": "Fehler beim Einstellen des HLK-Modus, lege zuerst einen Zeitplan fest."
319
- },
320
317
  "unsupported_firmware": {
321
318
  "message": "Ger\u00e4t mit nicht unterst\u00fctzter Firmware"
322
319
  }
@@ -314,9 +314,6 @@
314
314
  "invalid_xml_data": {
315
315
  "message": "Invalid XML data, or error indication received"
316
316
  },
317
- "set_schedule_first": {
318
- "message": "Failed setting HVACMode, set a schedule first."
319
- },
320
317
  "unsupported_firmware": {
321
318
  "message": "Device with unsupported firmware"
322
319
  }
@@ -314,9 +314,6 @@
314
314
  "invalid_xml_data": {
315
315
  "message": "Invalid XML data, or error indication received"
316
316
  },
317
- "set_schedule_first": {
318
- "message": "Failed setting HVACMode, set a schedule first."
319
- },
320
317
  "unsupported_firmware": {
321
318
  "message": "Device with unsupported firmware"
322
319
  }
@@ -314,9 +314,6 @@
314
314
  "invalid_xml_data": {
315
315
  "message": "Datos XML no v\u00e1lidos o indicaci\u00f3n de error recibida"
316
316
  },
317
- "set_schedule_first": {
318
- "message": "Error al configurar el modo de climatizaci\u00f3n (HVACMode); primero debes establecer una programaci\u00f3n."
319
- },
320
317
  "unsupported_firmware": {
321
318
  "message": "Dispositivo con firmware no compatible"
322
319
  }
@@ -314,9 +314,6 @@
314
314
  "invalid_xml_data": {
315
315
  "message": "Vigased XML-andmed v\u00f5i saadud veam\u00e4rguanne"
316
316
  },
317
- "set_schedule_first": {
318
- "message": "HVAC-re\u017eiimi seadistamine eba\u00f5nnestus, m\u00e4\u00e4ra esmalt ajakava."
319
- },
320
317
  "unsupported_firmware": {
321
318
  "message": "Toetamata p\u00fcsivaraga seade"
322
319
  }
@@ -314,9 +314,6 @@
314
314
  "invalid_xml_data": {
315
315
  "message": "Gauti neteisingi XML duomenys arba gautas klaidos prane\u0161imas"
316
316
  },
317
- "set_schedule_first": {
318
- "message": "Nepavyko nustatyti HVACMode, pirmiausia nustatykite tvarkara\u0161t\u012f."
319
- },
320
317
  "unsupported_firmware": {
321
318
  "message": "Prietaisas su nepalaikoma programine-technine \u012franga"
322
319
  }
@@ -314,9 +314,6 @@
314
314
  "invalid_xml_data": {
315
315
  "message": "Neplatn\u00e9 \u00fadaje XML alebo prijat\u00e9 chybov\u00e9 hl\u00e1senie"
316
316
  },
317
- "set_schedule_first": {
318
- "message": "Nastavenie re\u017eimu HVAC zlyhalo, najprv nastavte pl\u00e1n."
319
- },
320
317
  "unsupported_firmware": {
321
318
  "message": "Zariadenie s nepodporovan\u00fdm firmv\u00e9rom"
322
319
  }
@@ -314,9 +314,6 @@
314
314
  "invalid_xml_data": {
315
315
  "message": "XML \u8cc7\u6599\u7121\u6548\u3001\u6216\u63a5\u6536\u5230\u932f\u8aa4\u6307\u793a"
316
316
  },
317
- "set_schedule_first": {
318
- "message": "\u8a2d\u5b9a HVACMode \u5931\u6557\u3001\u8acb\u5148\u8a2d\u5b9a\u6392\u7a0b\u3002"
319
- },
320
317
  "unsupported_firmware": {
321
318
  "message": "\u88dd\u7f6e\u4f7f\u7528\u7684\u97cc\u9ad4\u4e0d\u652f\u63f4"
322
319
  }
@@ -2,8 +2,7 @@
2
2
  "config": {
3
3
  "abort": {
4
4
  "already_configured": "\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u0442\u043e \u0432\u0435\u0447\u0435 \u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d\u043e",
5
- "reauth_successful": "\u041f\u043e\u0432\u0442\u043e\u0440\u043d\u0430\u0442\u0430 \u0430\u0432\u0442\u0435\u043d\u0442\u0438\u043a\u0430\u0446\u0438\u044f \u0431\u0435\u0448\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u0430",
6
- "reconfigure_successful": "\u041f\u0440\u0435\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d\u0435\u0442\u043e \u0431\u0435\u0448\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e"
5
+ "reauth_successful": "\u041f\u043e\u0432\u0442\u043e\u0440\u043d\u0430\u0442\u0430 \u0430\u0432\u0442\u0435\u043d\u0442\u0438\u043a\u0430\u0446\u0438\u044f \u0431\u0435\u0448\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u0430"
7
6
  },
8
7
  "error": {
9
8
  "cannot_connect": "\u041d\u0435\u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u0432\u044a\u0440\u0437\u0432\u0430\u043d\u0435",
@@ -11,12 +10,6 @@
11
10
  "unknown": "\u041d\u0435\u043e\u0447\u0430\u043a\u0432\u0430\u043d\u0430 \u0433\u0440\u0435\u0448\u043a\u0430"
12
11
  },
13
12
  "step": {
14
- "reconfigure": {
15
- "data": {
16
- "url": "URL",
17
- "verify_ssl": "\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 SSL \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430"
18
- }
19
- },
20
13
  "user": {
21
14
  "data": {
22
15
  "url": "URL",
@@ -14,9 +14,7 @@
14
14
  "api_token": "API pristupni token za autentifikaciju sa Portainer\u2011om",
15
15
  "url": "URL, uklju\u010duju\u0107i port, tvoje Portainer instance",
16
16
  "verify_ssl": "Da li da se verifikuju SSL sertifikati. Onemogu\u0107i samo ako ima\u0161 samopotpisani sertifikat."
17
- },
18
- "description": "Upotrebite slede\u0107i obrazac da ponovo konfiguri\u0161ete svoju Portainer instancu.",
19
- "title": "Ponovo konfiguri\u0161i Portainer integraciju"
17
+ }
20
18
  },
21
19
  "user": {
22
20
  "data": {
@@ -45,10 +45,5 @@
45
45
  "name": "Tensi\u00f3n del rel\u00e9"
46
46
  }
47
47
  }
48
- },
49
- "exceptions": {
50
- "no_bleak_scanner": {
51
- "message": "No se ha encontrado ning\u00fan esc\u00e1ner Bluetooth compatible."
52
- }
53
48
  }
54
49
  }
@@ -3,9 +3,7 @@
3
3
  "abort": {
4
4
  "already_configured": "El dispositivo ya est\u00e1 configurado",
5
5
  "credential_error": "Error al obtener las credenciales.",
6
- "no_devices_found": "No se encontraron dispositivos en la red",
7
- "port_987_bind_error": "No se pudo enlazar con el puerto 987. Consulta la [documentaci\u00f3n]({ps4_docs_url}) para obtener informaci\u00f3n adicional.",
8
- "port_997_bind_error": "No se pudo enlazar con el puerto 997. Consulta la [documentaci\u00f3n]({ps4_docs_url}) para obtener informaci\u00f3n adicional."
6
+ "no_devices_found": "No se encontraron dispositivos en la red"
9
7
  },
10
8
  "error": {
11
9
  "cannot_connect": "No se pudo conectar",
@@ -15,12 +13,6 @@
15
13
  },
16
14
  "step": {
17
15
  "creds": {
18
- "data": {
19
- "token": "Token de PSN"
20
- },
21
- "data_description": {
22
- "token": "Para obtener tu token de PSN, por favor, sigue estas [instrucciones]({ps4_docs_url})."
23
- },
24
16
  "description": "Credenciales necesarias. Pulsa **Enviar** y luego en la aplicaci\u00f3n PS4 Second Screen, actualiza los dispositivos y selecciona el dispositivo **Home-Assistant** para continuar."
25
17
  },
26
18
  "link": {
@@ -19,5 +19,5 @@
19
19
  "iot_class": "local_push",
20
20
  "loggers": ["reolink_aio"],
21
21
  "quality_scale": "platinum",
22
- "requirements": ["reolink-aio==0.16.4"]
22
+ "requirements": ["reolink-aio==0.16.3"]
23
23
  }
@@ -835,7 +835,6 @@
835
835
  "vehicle_type": {
836
836
  "name": "Typ vozidla",
837
837
  "state": {
838
- "bus": "Autobus",
839
838
  "motorcycle": "Motocykl",
840
839
  "pickup_truck": "Pickup",
841
840
  "sedan": "Sedan",
@@ -835,7 +835,6 @@
835
835
  "vehicle_type": {
836
836
  "name": "Vehicle type",
837
837
  "state": {
838
- "bus": "Bus",
839
838
  "motorcycle": "Motorcycle",
840
839
  "pickup_truck": "Pickup truck",
841
840
  "sedan": "Saloon",
@@ -835,7 +835,6 @@
835
835
  "vehicle_type": {
836
836
  "name": "Tipo de veh\u00edculo",
837
837
  "state": {
838
- "bus": "Autob\u00fas",
839
838
  "motorcycle": "Motocicleta",
840
839
  "pickup_truck": "Camioneta pickup",
841
840
  "sedan": "Berlina",
@@ -835,7 +835,6 @@
835
835
  "vehicle_type": {
836
836
  "name": "S\u00f5iduki t\u00fc\u00fcp",
837
837
  "state": {
838
- "bus": "Buss",
839
838
  "motorcycle": "Mootorratas",
840
839
  "pickup_truck": "Kastiauto",
841
840
  "sedan": "Sedaan",
@@ -835,7 +835,6 @@
835
835
  "vehicle_type": {
836
836
  "name": "Transporto priemon\u0117s tipas",
837
837
  "state": {
838
- "bus": "Autobusas",
839
838
  "motorcycle": "Motociklas",
840
839
  "pickup_truck": "Pikapas",
841
840
  "sedan": "Sedanas",
@@ -654,8 +654,8 @@
654
654
  "animal_type": {
655
655
  "name": "Typ zwierz\u0119cia",
656
656
  "state": {
657
- "cat": "kot",
658
- "dog": "pies"
657
+ "cat": "Kot",
658
+ "dog": "Pies"
659
659
  }
660
660
  },
661
661
  "battery_state": {
@@ -686,8 +686,8 @@
686
686
  "person_type": {
687
687
  "name": "Typ osoby",
688
688
  "state": {
689
- "man": "m\u0119\u017cczyzna",
690
- "woman": "kobieta"
689
+ "man": "M\u0119\u017cczyzna",
690
+ "woman": "Kobieta"
691
691
  }
692
692
  },
693
693
  "ptz_pan_position": {
@@ -702,10 +702,9 @@
702
702
  "vehicle_type": {
703
703
  "name": "Typ pojazdu",
704
704
  "state": {
705
- "bus": "autobus",
706
- "motorcycle": "motocykl",
707
- "pickup_truck": "pickup",
708
- "sedan": "sedan",
705
+ "motorcycle": "Motocykl",
706
+ "pickup_truck": "Pickup",
707
+ "sedan": "Sedan",
709
708
  "suv": "SUV"
710
709
  }
711
710
  },
@@ -835,7 +835,6 @@
835
835
  "vehicle_type": {
836
836
  "name": "Typ vozidla",
837
837
  "state": {
838
- "bus": "Autobus",
839
838
  "motorcycle": "Motocykel",
840
839
  "pickup_truck": "N\u00e1kladn\u00e9 vozidlo Pickup",
841
840
  "sedan": "Sedan",
@@ -16,5 +16,5 @@
16
16
  "dependencies": ["bluetooth_adapters"],
17
17
  "documentation": "https://www.home-assistant.io/integrations/ruuvitag_ble",
18
18
  "iot_class": "local_push",
19
- "requirements": ["ruuvitag-ble==0.3.0"]
19
+ "requirements": ["ruuvitag-ble==0.2.1"]
20
20
  }
@@ -64,8 +64,7 @@
64
64
  "button1": "\u041f\u044a\u0440\u0432\u0438 \u0431\u0443\u0442\u043e\u043d",
65
65
  "button2": "\u0412\u0442\u043e\u0440\u0438 \u0431\u0443\u0442\u043e\u043d",
66
66
  "button3": "\u0422\u0440\u0435\u0442\u0438 \u0431\u0443\u0442\u043e\u043d",
67
- "button4": "\u0427\u0435\u0442\u0432\u044a\u0440\u0442\u0438 \u0431\u0443\u0442\u043e\u043d",
68
- "button5": "\u041f\u0435\u0442\u0438 \u0431\u0443\u0442\u043e\u043d"
67
+ "button4": "\u0427\u0435\u0442\u0432\u044a\u0440\u0442\u0438 \u0431\u0443\u0442\u043e\u043d"
69
68
  },
70
69
  "trigger_type": {
71
70
  "double": "{subtype} \u0434\u0432\u0443\u043a\u0440\u0430\u0442\u043d\u043e \u0449\u0440\u0430\u043a\u0432\u0430\u043d\u0435",
@@ -110,15 +110,11 @@
110
110
  "state": {
111
111
  "btn_down": "Bot\u00f3n abajo",
112
112
  "btn_up": "Bot\u00f3n arriba",
113
- "double": "Pulsaci\u00f3n doble",
114
113
  "double_push": "Pulsaci\u00f3n doble",
115
- "long": "Pulsaci\u00f3n larga",
116
114
  "long_push": "Pulsaci\u00f3n larga",
117
115
  "long_single": "Pulsaci\u00f3n larga y a continuaci\u00f3n pulsaci\u00f3n corta",
118
- "single": "Pulsaci\u00f3n simple",
119
116
  "single_long": "Pulsaci\u00f3n corta y a continuaci\u00f3n pulsaci\u00f3n larga",
120
117
  "single_push": "Pulsaci\u00f3n simple",
121
- "triple": "Pulsaci\u00f3n triple",
122
118
  "triple_push": "Pulsaci\u00f3n triple"
123
119
  }
124
120
  }
@@ -253,8 +249,7 @@
253
249
  },
254
250
  "step": {
255
251
  "confirm": {
256
- "description": "Tu dispositivo Shelly {device_name} con direcci\u00f3n IP {ip_address} ejecuta el firmware {firmware} y funciona como esc\u00e1ner BLE en modo activo. Esta versi\u00f3n de firmware no es compatible con el esc\u00e1ner BLE en modo activo. \n \nSelecciona el bot\u00f3n **Enviar** para iniciar la actualizaci\u00f3n OTA a la \u00faltima versi\u00f3n estable del firmware.",
257
- "title": "{device_name} est\u00e1 ejecutando un firmware no compatible"
252
+ "description": "Tu dispositivo Shelly {device_name} con direcci\u00f3n IP {ip_address} ejecuta el firmware {firmware} y funciona como esc\u00e1ner BLE en modo activo. Esta versi\u00f3n de firmware no es compatible con el esc\u00e1ner BLE en modo activo. \n \nSelecciona el bot\u00f3n **Enviar** para iniciar la actualizaci\u00f3n OTA a la \u00faltima versi\u00f3n estable del firmware."
258
253
  }
259
254
  }
260
255
  },
@@ -268,8 +263,7 @@
268
263
  },
269
264
  "step": {
270
265
  "confirm": {
271
- "description": "Tu dispositivo Shelly {device_name} con direcci\u00f3n IP {ip_address} ejecuta el firmware {firmware}. Esta versi\u00f3n de firmware no ser\u00e1 compatible con la integraci\u00f3n de Shelly a partir de Home Assistant {ha_version}. \n \nSelecciona el bot\u00f3n **Enviar** para iniciar la actualizaci\u00f3n OTA a la \u00faltima versi\u00f3n estable del firmware.",
272
- "title": "{device_name} est\u00e1 ejecutando un firmware desactualizado"
266
+ "description": "Tu dispositivo Shelly {device_name} con direcci\u00f3n IP {ip_address} ejecuta el firmware {firmware}. Esta versi\u00f3n de firmware no ser\u00e1 compatible con la integraci\u00f3n de Shelly a partir de Home Assistant {ha_version}. \n \nSelecciona el bot\u00f3n **Enviar** para iniciar la actualizaci\u00f3n OTA a la \u00faltima versi\u00f3n estable del firmware."
273
267
  }
274
268
  }
275
269
  },
@@ -286,8 +280,7 @@
286
280
  },
287
281
  "step": {
288
282
  "confirm": {
289
- "description": "Tu dispositivo Shelly {device_name} con direcci\u00f3n IP {ip_address} es un dispositivo que no est\u00e1 inactivo y el WebSocket de salida debe estar deshabilitado en su configuraci\u00f3n. \n \nSelecciona el bot\u00f3n **Enviar** para deshabilitar el WebSocket de salida.",
290
- "title": "El WebSocket de salida est\u00e1 habilitado para {device_name}"
283
+ "description": "Tu dispositivo Shelly {device_name} con direcci\u00f3n IP {ip_address} es un dispositivo que no est\u00e1 inactivo y el WebSocket de salida debe estar deshabilitado en su configuraci\u00f3n. \n \nSelecciona el bot\u00f3n **Enviar** para deshabilitar el WebSocket de salida."
291
284
  }
292
285
  }
293
286
  },
@@ -70,7 +70,7 @@
70
70
  "invert_position": "Invertir posici\u00f3n"
71
71
  },
72
72
  "data_description": {
73
- "invert_position": "Invierte la posici\u00f3n de la persiana Slide."
73
+ "invert_position": "Invierte la posici\u00f3n de la cubierta Slide."
74
74
  },
75
75
  "description": "Volver a configurar el dispositivo Slide",
76
76
  "title": "Configurar Slide"
@@ -6,5 +6,5 @@
6
6
  "documentation": "https://www.home-assistant.io/integrations/smarttub",
7
7
  "iot_class": "cloud_polling",
8
8
  "loggers": ["smarttub"],
9
- "requirements": ["python-smarttub==0.0.45"]
9
+ "requirements": ["python-smarttub==0.0.44"]
10
10
  }
@@ -30,16 +30,16 @@
30
30
  "step": {
31
31
  "init": {
32
32
  "data": {
33
- "target_id": "Configurar opciones para una persiana."
33
+ "target_id": "Configurar opciones para una cubierta."
34
34
  },
35
35
  "title": "Configurar las opciones de MyLink"
36
36
  },
37
37
  "target_config": {
38
38
  "data": {
39
- "reverse": "La persiana est\u00e1 invertida"
39
+ "reverse": "La cubierta est\u00e1 invertida"
40
40
  },
41
41
  "description": "Configurar opciones para `{target_name}`",
42
- "title": "Configurar la persiana de MyLink"
42
+ "title": "Configurar la cubierta de MyLink"
43
43
  }
44
44
  }
45
45
  }
@@ -4,13 +4,11 @@ import logging
4
4
 
5
5
  from libsoundtouch import soundtouch_device
6
6
  from libsoundtouch.device import SoundTouchDevice
7
- import requests
8
7
  import voluptuous as vol
9
8
 
10
9
  from homeassistant.config_entries import ConfigEntry
11
10
  from homeassistant.const import CONF_HOST, Platform
12
11
  from homeassistant.core import HomeAssistant, ServiceCall
13
- from homeassistant.exceptions import ConfigEntryNotReady
14
12
  from homeassistant.helpers import config_validation as cv
15
13
  from homeassistant.helpers.typing import ConfigType
16
14
 
@@ -132,14 +130,7 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
132
130
 
133
131
  async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
134
132
  """Set up Bose SoundTouch from a config entry."""
135
- try:
136
- device = await hass.async_add_executor_job(
137
- soundtouch_device, entry.data[CONF_HOST]
138
- )
139
- except requests.exceptions.ConnectionError as err:
140
- raise ConfigEntryNotReady(
141
- f"Unable to connect to SoundTouch device at {entry.data[CONF_HOST]}"
142
- ) from err
133
+ device = await hass.async_add_executor_job(soundtouch_device, entry.data[CONF_HOST])
143
134
 
144
135
  hass.data.setdefault(DOMAIN, {})[entry.entry_id] = SoundTouchData(device)
145
136