1 """Support for climates."""
3 from __future__
import annotations
5 from enum
import StrEnum
8 from aiocomelit
import ComelitSerialBridgeObject
9 from aiocomelit.const
import CLIMATE
24 from .const
import DOMAIN
25 from .coordinator
import ComelitSerialBridge
29 """Serial Bridge clima modes."""
38 """Serial Bridge clima commands."""
47 API_STATUS: dict[str, dict[str, Any]] = {
48 ClimaComelitMode.OFF: {
50 "hvac_mode": HVACMode.OFF,
51 "hvac_action": HVACAction.OFF,
53 ClimaComelitMode.LOWER: {
55 "hvac_mode": HVACMode.COOL,
56 "hvac_action": HVACAction.COOLING,
58 ClimaComelitMode.UPPER: {
60 "hvac_mode": HVACMode.HEAT,
61 "hvac_action": HVACAction.HEATING,
65 MODE_TO_ACTION: dict[HVACMode, ClimaComelitCommand] = {
66 HVACMode.OFF: ClimaComelitCommand.OFF,
67 HVACMode.AUTO: ClimaComelitCommand.AUTO,
68 HVACMode.COOL: ClimaComelitCommand.MANUAL,
69 HVACMode.HEAT: ClimaComelitCommand.MANUAL,
75 config_entry: ConfigEntry,
76 async_add_entities: AddEntitiesCallback,
78 """Set up Comelit climates."""
80 coordinator: ComelitSerialBridge = hass.data[DOMAIN][config_entry.entry_id]
84 for device
in coordinator.data[CLIMATE].values()
91 _attr_hvac_modes = [HVACMode.AUTO, HVACMode.COOL, HVACMode.HEAT, HVACMode.OFF]
94 _attr_supported_features = (
95 ClimateEntityFeature.TARGET_TEMPERATURE
96 | ClimateEntityFeature.TURN_OFF
97 | ClimateEntityFeature.TURN_ON
99 _attr_target_temperature_step = PRECISION_TENTHS
100 _attr_temperature_unit = UnitOfTemperature.CELSIUS
101 _attr_has_entity_name =
True
103 _enable_turn_on_off_backwards_compatibility =
False
107 coordinator: ComelitSerialBridge,
108 device: ComelitSerialBridgeObject,
109 config_entry_entry_id: str,
111 """Init light entity."""
112 self.
_api_api = coordinator.api
122 """Return clima device data."""
126 return self.coordinator.data[CLIMATE][self.
_device_device_device.index].val[0]
130 """Return device mode."""
132 return self.
_clima_clima[2]
136 "Return device active/idle."
137 return self.
_clima_clima[1]
141 """Return device in automatic/manual mode."""
142 return self.
_clima_clima[3] == ClimaComelitMode.AUTO
146 """Set target temperature."""
147 return self.
_clima_clima[4] / 10
151 """Return current temperature."""
152 return self.
_clima_clima[0] / 10
156 """HVAC current mode."""
171 """HVAC current action."""
174 return HVACAction.OFF
177 return HVACAction.IDLE
185 """Set new target temperature."""
187 target_temp := kwargs.get(ATTR_TEMPERATURE)
191 await self.coordinator.api.set_clima_status(
194 await self.coordinator.api.set_clima_status(
195 self.
_device_device_device.index, ClimaComelitCommand.SET, target_temp
201 if hvac_mode != HVACMode.OFF:
202 await self.coordinator.api.set_clima_status(
205 await self.coordinator.api.set_clima_status(
HVACMode|None hvac_mode(self)
float target_temperature(self)
bool _api_automatic(self)
None async_set_hvac_mode(self, HVACMode hvac_mode)
float current_temperature(self)
HVACAction|None hvac_action(self)
None __init__(self, ComelitSerialBridge coordinator, ComelitSerialBridgeObject device, str config_entry_entry_id)
None async_set_temperature(self, **Any kwargs)
HVACMode|None hvac_mode(self)
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)