Home Assistant Unofficial Reference 2024.12.1
humidifier.py
Go to the documentation of this file.
1 """Demo platform that offers a fake humidifier device."""
2 
3 from __future__ import annotations
4 
5 from typing import Any
6 
8  HumidifierAction,
9  HumidifierDeviceClass,
10  HumidifierEntity,
11  HumidifierEntityFeature,
12 )
13 from homeassistant.config_entries import ConfigEntry
14 from homeassistant.core import HomeAssistant
15 from homeassistant.helpers.entity_platform import AddEntitiesCallback
16 
17 SUPPORT_FLAGS = HumidifierEntityFeature(0)
18 
19 
21  hass: HomeAssistant,
22  config_entry: ConfigEntry,
23  async_add_entities: AddEntitiesCallback,
24 ) -> None:
25  """Set up the Demo humidifier devices config entry."""
27  [
29  name="Humidifier",
30  mode=None,
31  target_humidity=68,
32  current_humidity=45,
33  action=HumidifierAction.HUMIDIFYING,
34  device_class=HumidifierDeviceClass.HUMIDIFIER,
35  ),
37  name="Dehumidifier",
38  mode=None,
39  target_humidity=54.2,
40  current_humidity=59.4,
41  action=HumidifierAction.DRYING,
42  device_class=HumidifierDeviceClass.DEHUMIDIFIER,
43  ),
45  name="Hygrostat",
46  mode="home",
47  available_modes=["home", "eco"],
48  target_humidity=50,
49  ),
50  ]
51  )
52 
53 
55  """Representation of a demo humidifier device."""
56 
57  _attr_should_poll = False
58 
59  def __init__(
60  self,
61  name: str,
62  mode: str | None,
63  target_humidity: float,
64  current_humidity: float | None = None,
65  available_modes: list[str] | None = None,
66  is_on: bool = True,
67  action: HumidifierAction | None = None,
68  device_class: HumidifierDeviceClass | None = None,
69  ) -> None:
70  """Initialize the humidifier device."""
71  self._attr_name_attr_name = name
72  self._attr_is_on_attr_is_on = is_on
73  self._attr_action_attr_action = action
74  self._attr_supported_features_attr_supported_features = SUPPORT_FLAGS
75  if mode is not None:
76  self._attr_supported_features_attr_supported_features |= HumidifierEntityFeature.MODES
77  self._attr_target_humidity_attr_target_humidity = target_humidity
78  self._attr_current_humidity_attr_current_humidity = current_humidity
79  self._attr_mode_attr_mode = mode
80  self._attr_available_modes_attr_available_modes = available_modes
81  self._attr_device_class_attr_device_class = device_class
82 
83  async def async_turn_on(self, **kwargs: Any) -> None:
84  """Turn the device on."""
85  self._attr_is_on_attr_is_on = True
86  self.async_write_ha_stateasync_write_ha_state()
87 
88  async def async_turn_off(self, **kwargs: Any) -> None:
89  """Turn the device off."""
90  self._attr_is_on_attr_is_on = False
91  self.async_write_ha_stateasync_write_ha_state()
92 
93  async def async_set_humidity(self, humidity: int) -> None:
94  """Set new humidity level."""
95  self._attr_target_humidity_attr_target_humidity = humidity
96  self.async_write_ha_stateasync_write_ha_state()
97 
98  async def async_set_mode(self, mode: str) -> None:
99  """Update mode."""
100  self._attr_mode_attr_mode = mode
101  self.async_write_ha_stateasync_write_ha_state()
None __init__(self, str name, str|None mode, float target_humidity, float|None current_humidity=None, list[str]|None available_modes=None, bool is_on=True, HumidifierAction|None action=None, HumidifierDeviceClass|None device_class=None)
Definition: humidifier.py:69
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)
Definition: humidifier.py:24