Home Assistant Unofficial Reference 2024.12.1
water_heater.py
Go to the documentation of this file.
1 """Support for Genius Hub water_heater devices."""
2 
3 from __future__ import annotations
4 
6  WaterHeaterEntity,
7  WaterHeaterEntityFeature,
8 )
9 from homeassistant.const import STATE_OFF
10 from homeassistant.core import HomeAssistant
11 from homeassistant.helpers.entity_platform import AddEntitiesCallback
12 
13 from . import GeniusHubConfigEntry
14 from .entity import GeniusHeatingZone
15 
16 STATE_AUTO = "auto"
17 STATE_MANUAL = "manual"
18 
19 # Genius Hub HW zones support only Off, Override/Boost & Timer modes
20 HA_OPMODE_TO_GH = {STATE_OFF: "off", STATE_AUTO: "timer", STATE_MANUAL: "override"}
21 GH_STATE_TO_HA = {
22  "off": STATE_OFF,
23  "timer": STATE_AUTO,
24  "footprint": None,
25  "away": None,
26  "override": STATE_MANUAL,
27  "early": None,
28  "test": None,
29  "linked": None,
30  "other": None,
31 }
32 
33 GH_HEATERS = ["hot water temperature"]
34 
35 
37  hass: HomeAssistant,
38  entry: GeniusHubConfigEntry,
39  async_add_entities: AddEntitiesCallback,
40 ) -> None:
41  """Set up the Genius Hub water heater entities."""
42 
43  broker = entry.runtime_data
44 
46  GeniusWaterHeater(broker, z)
47  for z in broker.client.zone_objs
48  if z.data.get("type") in GH_HEATERS
49  )
50 
51 
53  """Representation of a Genius Hub water_heater device."""
54 
55  _attr_supported_features = (
56  WaterHeaterEntityFeature.TARGET_TEMPERATURE
57  | WaterHeaterEntityFeature.OPERATION_MODE
58  )
59 
60  def __init__(self, broker, zone) -> None:
61  """Initialize the water_heater device."""
62  super().__init__(broker, zone)
63 
64  self._max_temp_max_temp = 80.0
65  self._min_temp_min_temp = 30.0
66 
67  @property
68  def operation_list(self) -> list[str]:
69  """Return the list of available operation modes."""
70  return list(HA_OPMODE_TO_GH)
71 
72  @property
73  def current_operation(self) -> str | None:
74  """Return the current operation mode."""
75  return GH_STATE_TO_HA[self._zone_zone.data["mode"]]
76 
77  async def async_set_operation_mode(self, operation_mode: str) -> None:
78  """Set a new operation mode for this boiler."""
79  await self._zone_zone.set_mode(HA_OPMODE_TO_GH[operation_mode])
None async_setup_entry(HomeAssistant hass, GeniusHubConfigEntry entry, AddEntitiesCallback async_add_entities)
Definition: water_heater.py:40