1 """Support for Atlantic Electrical Heater (With Adjustable Temperature Setpoint)."""
3 from __future__
import annotations
7 from pyoverkiz.enums
import OverkizCommand, OverkizCommandParam, OverkizState
20 from ..const
import DOMAIN
21 from ..coordinator
import OverkizDataUpdateCoordinator
22 from ..entity
import OverkizEntity
25 PRESET_COMFORT1 =
"comfort-1"
26 PRESET_COMFORT2 =
"comfort-2"
27 PRESET_FROST_PROTECTION =
"frost_protection"
29 PRESET_EXTERNAL =
"external"
33 OVERKIZ_TO_PRESET_MODE: dict[str, str] = {
34 OverkizCommandParam.OFF: PRESET_NONE,
35 OverkizCommandParam.FROSTPROTECTION: PRESET_FROST_PROTECTION,
36 OverkizCommandParam.ECO: PRESET_ECO,
37 OverkizCommandParam.COMFORT: PRESET_COMFORT,
38 OverkizCommandParam.COMFORT_1: PRESET_COMFORT1,
39 OverkizCommandParam.COMFORT_2: PRESET_COMFORT2,
40 OverkizCommandParam.AUTO: PRESET_AUTO,
41 OverkizCommandParam.BOOST: PRESET_BOOST,
42 OverkizCommandParam.EXTERNAL: PRESET_EXTERNAL,
43 OverkizCommandParam.INTERNAL: PRESET_PROG,
46 PRESET_MODE_TO_OVERKIZ = {v: k
for k, v
in OVERKIZ_TO_PRESET_MODE.items()}
49 OVERKIZ_TO_HVAC_MODE: dict[str, HVACMode] = {
50 OverkizCommandParam.ON: HVACMode.HEAT,
51 OverkizCommandParam.OFF: HVACMode.OFF,
52 OverkizCommandParam.AUTO: HVACMode.AUTO,
53 OverkizCommandParam.BASIC: HVACMode.HEAT,
54 OverkizCommandParam.STANDBY: HVACMode.OFF,
55 OverkizCommandParam.EXTERNAL: HVACMode.AUTO,
56 OverkizCommandParam.INTERNAL: HVACMode.AUTO,
59 HVAC_MODE_TO_OVERKIZ = {v: k
for k, v
in OVERKIZ_TO_HVAC_MODE.items()}
61 TEMPERATURE_SENSOR_DEVICE_INDEX = 2
65 OverkizEntity, ClimateEntity
67 """Representation of Atlantic Electrical Heater (With Adjustable Temperature Setpoint)."""
69 _attr_hvac_modes = [*HVAC_MODE_TO_OVERKIZ]
70 _attr_preset_modes = [*PRESET_MODE_TO_OVERKIZ]
71 _attr_temperature_unit = UnitOfTemperature.CELSIUS
72 _attr_supported_features = (
73 ClimateEntityFeature.PRESET_MODE
74 | ClimateEntityFeature.TARGET_TEMPERATURE
75 | ClimateEntityFeature.TURN_OFF
76 | ClimateEntityFeature.TURN_ON
78 _attr_translation_key = DOMAIN
79 _enable_turn_on_off_backwards_compatibility =
False
82 self, device_url: str, coordinator: OverkizDataUpdateCoordinator
85 super().
__init__(device_url, coordinator)
87 TEMPERATURE_SENSOR_DEVICE_INDEX
92 """Return hvac operation ie. heat, cool mode."""
93 states = self.
devicedevice.states
94 if (state := states[OverkizState.CORE_OPERATING_MODE])
and state.value_as_str:
95 return OVERKIZ_TO_HVAC_MODE[state.value_as_str]
96 if (state := states[OverkizState.CORE_ON_OFF])
and state.value_as_str:
97 return OVERKIZ_TO_HVAC_MODE[state.value_as_str]
101 """Set new target hvac mode."""
102 await self.
executorexecutor.async_execute_command(
103 OverkizCommand.SET_OPERATING_MODE, HVAC_MODE_TO_OVERKIZ[hvac_mode]
108 """Return the current preset mode, e.g., home, away, temp."""
110 states = self.
devicedevice.states
113 operating_mode := states[OverkizState.CORE_OPERATING_MODE]
114 )
and operating_mode.value_as_str == OverkizCommandParam.EXTERNAL:
115 return PRESET_EXTERNAL
118 state := states[OverkizState.IO_TARGET_HEATING_LEVEL]
119 )
and state.value_as_str:
120 return OVERKIZ_TO_PRESET_MODE[state.value_as_str]
124 """Set new preset mode."""
126 if preset_mode == PRESET_EXTERNAL:
127 command = OverkizCommand.SET_SCHEDULING_TYPE
128 elif preset_mode
in [PRESET_AUTO, PRESET_PROG]:
129 command = OverkizCommand.SET_OPERATING_MODE
131 command = OverkizCommand.SET_HEATING_LEVEL
132 await self.
executorexecutor.async_execute_command(
133 command, PRESET_MODE_TO_OVERKIZ[preset_mode]
138 """Return the temperature."""
139 if state := self.
devicedevice.states[OverkizState.CORE_TARGET_TEMPERATURE]:
140 return state.value_as_float
145 """Return the current temperature."""
147 temperature := self.
temperature_devicetemperature_device.states[OverkizState.CORE_TEMPERATURE]
149 return temperature.value_as_float
153 """Set new temperature."""
154 temperature = kwargs[ATTR_TEMPERATURE]
155 await self.
executorexecutor.async_execute_command(
156 OverkizCommand.SET_TARGET_TEMPERATURE, temperature
str|None preset_mode(self)
None async_set_temperature(self, **Any kwargs)
float|None target_temperature(self)
None async_set_hvac_mode(self, HVACMode hvac_mode)
float|None current_temperature(self)
None __init__(self, str device_url, OverkizDataUpdateCoordinator coordinator)
None async_set_preset_mode(self, str preset_mode)