1 """Support for humidifiers."""
3 from __future__
import annotations
5 from enum
import StrEnum
8 from aiocomelit
import ComelitSerialBridgeObject
9 from aiocomelit.const
import CLIMATE
15 HumidifierDeviceClass,
17 HumidifierEntityFeature,
25 from .const
import DOMAIN
26 from .coordinator
import ComelitSerialBridge
30 """Serial Bridge humidifier modes."""
39 """Serial Bridge humidifier commands."""
50 MODE_TO_ACTION: dict[str, HumidifierComelitCommand] = {
51 MODE_AUTO: HumidifierComelitCommand.AUTO,
52 MODE_NORMAL: HumidifierComelitCommand.MANUAL,
58 config_entry: ConfigEntry,
59 async_add_entities: AddEntitiesCallback,
61 """Set up Comelit humidifiers."""
63 coordinator: ComelitSerialBridge = hass.data[DOMAIN][config_entry.entry_id]
65 entities: list[ComelitHumidifierEntity] = []
66 for device
in coordinator.data[CLIMATE].values():
71 config_entry.entry_id,
72 active_mode=HumidifierComelitMode.LOWER,
73 active_action=HumidifierAction.DRYING,
74 set_command=HumidifierComelitCommand.LOWER,
75 device_class=HumidifierDeviceClass.DEHUMIDIFIER,
82 config_entry.entry_id,
83 active_mode=HumidifierComelitMode.UPPER,
84 active_action=HumidifierAction.HUMIDIFYING,
85 set_command=HumidifierComelitCommand.UPPER,
86 device_class=HumidifierDeviceClass.HUMIDIFIER,
94 """Humidifier device."""
96 _attr_supported_features = HumidifierEntityFeature.MODES
97 _attr_available_modes = [MODE_NORMAL, MODE_AUTO]
98 _attr_min_humidity = 10
99 _attr_max_humidity = 90
100 _attr_has_entity_name =
True
104 coordinator: ComelitSerialBridge,
105 device: ComelitSerialBridgeObject,
106 config_entry_entry_id: str,
107 active_mode: HumidifierComelitMode,
108 active_action: HumidifierAction,
109 set_command: HumidifierComelitCommand,
110 device_class: HumidifierDeviceClass,
112 """Init light entity."""
113 self.
_api_api = coordinator.api
118 self.
_attr_unique_id_attr_unique_id = f
"{config_entry_entry_id}-{device.index}-{device_class}"
119 self.
_attr_device_info_attr_device_info = coordinator.platform_device_info(device, device_class)
128 """Return humidifier device data."""
132 return self.coordinator.data[CLIMATE][self.
_device_device_device.index].val[1]
136 """Return device mode."""
142 "Return device active/idle."
147 """Return device in automatic/manual mode."""
148 return self.
_humidifier_humidifier[3] == HumidifierComelitMode.AUTO
152 """Set target humidity."""
157 """Return current humidity."""
162 """Return true is humidifier is on."""
167 """Return current mode."""
168 return MODE_AUTO
if self.
_api_automatic_api_automatic
else MODE_NORMAL
171 def action(self) -> HumidifierAction | None:
172 """Return current action."""
175 return HumidifierAction.OFF
180 return HumidifierAction.IDLE
183 """Set new target humidity."""
186 translation_domain=DOMAIN,
187 translation_key=
"humidity_while_off",
190 await self.coordinator.api.set_humidity_status(
193 await self.coordinator.api.set_humidity_status(
194 self.
_device_device_device.index, HumidifierComelitCommand.SET, humidity
198 """Set humidifier mode."""
199 await self.coordinator.api.set_humidity_status(
205 await self.coordinator.api.set_humidity_status(
211 await self.coordinator.api.set_humidity_status(
None async_turn_on(self, **Any kwargs)
float target_humidity(self)
list[Any] _humidifier(self)
None async_set_mode(self, str mode)
HumidifierAction|None action(self)
None async_turn_off(self, **Any kwargs)
float current_humidity(self)
None async_set_humidity(self, int humidity)
bool _api_automatic(self)
None __init__(self, ComelitSerialBridge coordinator, ComelitSerialBridgeObject device, str config_entry_entry_id, HumidifierComelitMode active_mode, HumidifierAction active_action, HumidifierComelitCommand set_command, HumidifierDeviceClass device_class)
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)