1 """Support for Atlantic Electrical Heater."""
3 from __future__
import annotations
5 from typing
import cast
7 from pyoverkiz.enums
import OverkizCommand, OverkizCommandParam, OverkizState
19 from ..const
import DOMAIN
20 from ..entity
import OverkizEntity
22 PRESET_COMFORT1 =
"comfort-1"
23 PRESET_COMFORT2 =
"comfort-2"
24 PRESET_FROST_PROTECTION =
"frost_protection"
26 OVERKIZ_TO_HVAC_MODES: dict[str, HVACMode] = {
27 OverkizCommandParam.ON: HVACMode.HEAT,
28 OverkizCommandParam.COMFORT: HVACMode.HEAT,
29 OverkizCommandParam.OFF: HVACMode.OFF,
31 HVAC_MODES_TO_OVERKIZ = {v: k
for k, v
in OVERKIZ_TO_HVAC_MODES.items()}
33 OVERKIZ_TO_PRESET_MODES: 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,
42 PRESET_MODES_TO_OVERKIZ = {v: k
for k, v
in OVERKIZ_TO_PRESET_MODES.items()}
46 """Representation of Atlantic Electrical Heater."""
48 _attr_hvac_modes = [*HVAC_MODES_TO_OVERKIZ]
49 _attr_preset_modes = [*PRESET_MODES_TO_OVERKIZ]
50 _attr_supported_features = (
51 ClimateEntityFeature.PRESET_MODE
52 | ClimateEntityFeature.TURN_OFF
53 | ClimateEntityFeature.TURN_ON
55 _attr_temperature_unit = UnitOfTemperature.CELSIUS
56 _attr_translation_key = DOMAIN
57 _enable_turn_on_off_backwards_compatibility =
False
61 """Return hvac operation ie. heat, cool mode."""
62 return OVERKIZ_TO_HVAC_MODES[
63 cast(str, self.
executorexecutor.select_state(OverkizState.CORE_ON_OFF))
67 """Set new target hvac mode."""
68 await self.
executorexecutor.async_execute_command(
69 OverkizCommand.SET_HEATING_LEVEL, HVAC_MODES_TO_OVERKIZ[hvac_mode]
74 """Return the current preset mode, e.g., home, away, temp."""
75 return OVERKIZ_TO_PRESET_MODES[
76 cast(str, self.
executorexecutor.select_state(OverkizState.IO_TARGET_HEATING_LEVEL))
80 """Set new preset mode."""
81 await self.
executorexecutor.async_execute_command(
82 OverkizCommand.SET_HEATING_LEVEL, PRESET_MODES_TO_OVERKIZ[preset_mode]
str|None preset_mode(self)
None async_set_preset_mode(self, str preset_mode)
None async_set_hvac_mode(self, HVACMode hvac_mode)