Home Assistant Unofficial Reference 2024.12.1
water_heater.py
Go to the documentation of this file.
1 """Demo platform that offers a fake water heater device."""
2 
3 from __future__ import annotations
4 
5 from typing import Any
6 
8  WaterHeaterEntity,
9  WaterHeaterEntityFeature,
10 )
11 from homeassistant.config_entries import ConfigEntry
12 from homeassistant.const import ATTR_TEMPERATURE, UnitOfTemperature
13 from homeassistant.core import HomeAssistant
14 from homeassistant.helpers.entity_platform import AddEntitiesCallback
15 
16 SUPPORT_FLAGS_HEATER = (
17  WaterHeaterEntityFeature.TARGET_TEMPERATURE
18  | WaterHeaterEntityFeature.ON_OFF
19  | WaterHeaterEntityFeature.OPERATION_MODE
20  | WaterHeaterEntityFeature.AWAY_MODE
21 )
22 
23 
25  hass: HomeAssistant,
26  config_entry: ConfigEntry,
27  async_add_entities: AddEntitiesCallback,
28 ) -> None:
29  """Set up the Demo config entry."""
31  [
33  "Demo Water Heater", 119, UnitOfTemperature.FAHRENHEIT, False, "eco"
34  ),
36  "Demo Water Heater Celsius", 45, UnitOfTemperature.CELSIUS, True, "eco"
37  ),
38  ]
39  )
40 
41 
43  """Representation of a demo water_heater device."""
44 
45  _attr_should_poll = False
46  _attr_supported_features = SUPPORT_FLAGS_HEATER
47 
48  def __init__(
49  self,
50  name: str,
51  target_temperature: int,
52  unit_of_measurement: str,
53  away: bool,
54  current_operation: str,
55  ) -> None:
56  """Initialize the water_heater device."""
57  self._attr_name_attr_name = name
58  if target_temperature is not None:
59  self._attr_supported_features_attr_supported_features |= WaterHeaterEntityFeature.TARGET_TEMPERATURE
60  if away is not None:
61  self._attr_supported_features_attr_supported_features |= WaterHeaterEntityFeature.AWAY_MODE
62  if current_operation is not None:
63  self._attr_supported_features_attr_supported_features |= WaterHeaterEntityFeature.OPERATION_MODE
64  self._attr_target_temperature_attr_target_temperature = target_temperature
65  self._attr_temperature_unit_attr_temperature_unit = unit_of_measurement
66  self._attr_is_away_mode_on_attr_is_away_mode_on = away
67  self._attr_current_operation_attr_current_operation = current_operation
68  self._attr_operation_list_attr_operation_list = [
69  "eco",
70  "electric",
71  "performance",
72  "high_demand",
73  "heat_pump",
74  "gas",
75  "off",
76  ]
77 
78  def set_temperature(self, **kwargs: Any) -> None:
79  """Set new target temperatures."""
80  self._attr_target_temperature_attr_target_temperature = kwargs.get(ATTR_TEMPERATURE)
81  self.schedule_update_ha_stateschedule_update_ha_state()
82 
83  def set_operation_mode(self, operation_mode: str) -> None:
84  """Set new operation mode."""
85  self._attr_current_operation_attr_current_operation = operation_mode
86  self.schedule_update_ha_stateschedule_update_ha_state()
87 
88  def turn_away_mode_on(self) -> None:
89  """Turn away mode on."""
90  self._attr_is_away_mode_on_attr_is_away_mode_on = True
91  self.schedule_update_ha_stateschedule_update_ha_state()
92 
93  def turn_away_mode_off(self) -> None:
94  """Turn away mode off."""
95  self._attr_is_away_mode_on_attr_is_away_mode_on = False
96  self.schedule_update_ha_stateschedule_update_ha_state()
97 
98  def turn_on(self, **kwargs: Any) -> None:
99  """Turn on water heater."""
100  self.set_operation_modeset_operation_modeset_operation_mode("eco")
101 
102  def turn_off(self, **kwargs: Any) -> None:
103  """Turn off water heater."""
104  self.set_operation_modeset_operation_modeset_operation_mode("off")
None __init__(self, str name, int target_temperature, str unit_of_measurement, bool away, str current_operation)
Definition: water_heater.py:55
None set_operation_mode(self, str operation_mode)
Definition: __init__.py:328
None schedule_update_ha_state(self, bool force_refresh=False)
Definition: entity.py:1244
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)
Definition: water_heater.py:28