Skip to content

Commit fdebb82

Browse files
✨ Implement on/off for water heater
This is not visible in the UI but can be used as an action. This can be especially useful for power shedding
1 parent 768c391 commit fdebb82

File tree

1 file changed

+36
-1
lines changed

1 file changed

+36
-1
lines changed

custom_components/aquarea/water_heater.py

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
from __future__ import annotations
22
import logging
33

4+
from typing import Any
5+
46
from homeassistant.config_entries import ConfigEntry
57
from homeassistant.core import HomeAssistant, callback
68
from homeassistant.helpers.entity_platform import AddEntitiesCallback
@@ -16,7 +18,7 @@
1618
STATE_PERFORMANCE,
1719
)
1820

19-
from .definitions import lookup_by_value, OperatingMode
21+
from .definitions import OperatingMode
2022
from . import build_device_info
2123
from .const import DeviceType
2224

@@ -164,6 +166,39 @@ def heat_delta_received(message):
164166
1,
165167
)
166168

169+
@callback
170+
def operating_mode_received(message):
171+
self._operating_mode = OperatingMode.from_mqtt(message.payload)
172+
self.async_write_ha_state()
173+
174+
await mqtt.async_subscribe(
175+
self.hass,
176+
f"{self.discovery_prefix}main/Operating_Mode_State",
177+
operating_mode_received,
178+
1,
179+
)
180+
181+
async def async_turn_on(self, **kwargs: Any) -> None:
182+
new_operating_mode = self._operating_mode | OperatingMode.DHW
183+
await async_publish(
184+
self.hass,
185+
f"{self.discovery_prefix}commands/SetOperationMode",
186+
new_operating_mode.to_mqtt(),
187+
0,
188+
False,
189+
"utf-8",
190+
)
191+
async def async_turn_off(self, **kwargs: Any) -> None:
192+
new_operating_mode = self._operating_mode & ~OperatingMode.DHW
193+
await async_publish(
194+
self.hass,
195+
f"{self.discovery_prefix}commands/SetOperationMode",
196+
new_operating_mode.to_mqtt(),
197+
0,
198+
False,
199+
"utf-8",
200+
)
201+
167202
@property
168203
def device_info(self):
169204
return build_device_info(DeviceType.HEATPUMP, self.discovery_prefix)

0 commit comments

Comments
 (0)