1 """Representation of Z-Wave humidifiers."""
3 from __future__
import annotations
5 from dataclasses
import dataclass
8 from zwave_js_server.client
import Client
as ZwaveClient
9 from zwave_js_server.const
import CommandClass
10 from zwave_js_server.const.command_class.humidity_control
import (
11 HUMIDITY_CONTROL_SETPOINT_PROPERTY,
13 HumidityControlSetpointType,
15 from zwave_js_server.model.driver
import Driver
16 from zwave_js_server.model.value
import Value
as ZwaveValue
21 DOMAIN
as HUMIDIFIER_DOMAIN,
22 HumidifierDeviceClass,
24 HumidifierEntityDescription,
31 from .const
import DATA_CLIENT, DOMAIN
32 from .discovery
import ZwaveDiscoveryInfo
33 from .entity
import ZWaveBaseEntity
38 @dataclass(frozen=True, kw_only=True)
40 """A class that describes the humidifier or dehumidifier entity."""
43 on_mode: HumidityControlMode
46 inverse_mode: HumidityControlMode
49 setpoint_type: HumidityControlSetpointType
54 device_class=HumidifierDeviceClass.HUMIDIFIER,
55 on_mode=HumidityControlMode.HUMIDIFY,
56 inverse_mode=HumidityControlMode.DEHUMIDIFY,
57 setpoint_type=HumidityControlSetpointType.HUMIDIFIER,
63 device_class=HumidifierDeviceClass.DEHUMIDIFIER,
64 on_mode=HumidityControlMode.DEHUMIDIFY,
65 inverse_mode=HumidityControlMode.HUMIDIFY,
66 setpoint_type=HumidityControlSetpointType.DEHUMIDIFIER,
72 config_entry: ConfigEntry,
73 async_add_entities: AddEntitiesCallback,
75 """Set up Z-Wave humidifier from config entry."""
76 client: ZwaveClient = config_entry.runtime_data[DATA_CLIENT]
79 def async_add_humidifier(info: ZwaveDiscoveryInfo) ->
None:
80 """Add Z-Wave Humidifier."""
81 driver = client.driver
82 assert driver
is not None
83 entities: list[ZWaveBaseEntity] = []
86 str(HumidityControlMode.HUMIDIFY.value)
87 in info.primary_value.metadata.states
91 config_entry, driver, info, HUMIDIFIER_ENTITY_DESCRIPTION
96 str(HumidityControlMode.DEHUMIDIFY.value)
97 in info.primary_value.metadata.states
101 config_entry, driver, info, DEHUMIDIFIER_ENTITY_DESCRIPTION
107 config_entry.async_on_unload(
110 f
"{DOMAIN}_{config_entry.entry_id}_add_{HUMIDIFIER_DOMAIN}",
111 async_add_humidifier,
117 """Representation of a Z-Wave Humidifier or Dehumidifier."""
119 entity_description: ZwaveHumidifierEntityDescription
120 _current_mode: ZwaveValue
121 _setpoint: ZwaveValue |
None =
None
125 config_entry: ConfigEntry,
127 info: ZwaveDiscoveryInfo,
128 description: ZwaveHumidifierEntityDescription,
130 """Initialize humidifier."""
131 super().
__init__(config_entry, driver, info)
141 HUMIDITY_CONTROL_SETPOINT_PROPERTY,
142 command_class=CommandClass.HUMIDITY_CONTROL_SETPOINT,
143 value_property_key=description.setpoint_type,
144 add_to_watched_value_ids=
True,
149 """Return True if entity is on."""
161 """Turn on device."""
165 if mode == HumidityControlMode.OFF:
168 new_mode = HumidityControlMode.AUTO
175 """Turn off device."""
179 if mode == HumidityControlMode.AUTO:
183 new_mode = HumidityControlMode.OFF
185 new_mode = HumidityControlMode.OFF
193 """Return the humidity we try to reach."""
199 """Set new target humidity."""
205 """Return the minimum humidity."""
206 min_value = DEFAULT_MIN_HUMIDITY
208 min_value = self.
_setpoint_setpoint.metadata.min
213 """Return the maximum humidity."""
214 max_value = DEFAULT_MAX_HUMIDITY
216 max_value = self.
_setpoint_setpoint.metadata.max
SetValueResult|None _async_set_value(self, ZwaveValue value, Any new_value, dict|None options=None, bool|None wait_for_result=None)
ZwaveValue|None get_zwave_value(self, str|int value_property, int|None command_class=None, int|None endpoint=None, int|str|None value_property_key=None, bool add_to_watched_value_ids=True, bool check_all_endpoints=False)
None __init__(self, ConfigEntry config_entry, Driver driver, ZwaveDiscoveryInfo info, ZwaveHumidifierEntityDescription description)
bool _supports_inverse_mode(self)
None async_set_humidity(self, int humidity)
None async_turn_off(self, **Any kwargs)
int|None target_humidity(self)
None async_turn_on(self, **Any kwargs)
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)
Callable[[], None] async_dispatcher_connect(HomeAssistant hass, str signal, Callable[..., Any] target)