mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 13:17:32 +00:00
Use climate enums in elkm1 (#70635)
This commit is contained in:
parent
8d71595f31
commit
e235926037
@ -8,17 +8,14 @@ from elkm1_lib.elements import Element
|
||||
from elkm1_lib.elk import Elk
|
||||
from elkm1_lib.thermostats import Thermostat
|
||||
|
||||
from homeassistant.components.climate import ClimateEntity, ClimateEntityFeature
|
||||
from homeassistant.components.climate import ClimateEntity
|
||||
from homeassistant.components.climate.const import (
|
||||
ATTR_TARGET_TEMP_HIGH,
|
||||
ATTR_TARGET_TEMP_LOW,
|
||||
FAN_AUTO,
|
||||
FAN_ON,
|
||||
HVAC_MODE_COOL,
|
||||
HVAC_MODE_FAN_ONLY,
|
||||
HVAC_MODE_HEAT,
|
||||
HVAC_MODE_HEAT_COOL,
|
||||
HVAC_MODE_OFF,
|
||||
ClimateEntityFeature,
|
||||
HVACMode,
|
||||
)
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import PRECISION_WHOLE
|
||||
@ -29,25 +26,25 @@ from . import ElkEntity, create_elk_entities
|
||||
from .const import DOMAIN
|
||||
|
||||
SUPPORT_HVAC = [
|
||||
HVAC_MODE_OFF,
|
||||
HVAC_MODE_HEAT,
|
||||
HVAC_MODE_COOL,
|
||||
HVAC_MODE_HEAT_COOL,
|
||||
HVAC_MODE_FAN_ONLY,
|
||||
HVACMode.OFF,
|
||||
HVACMode.HEAT,
|
||||
HVACMode.COOL,
|
||||
HVACMode.HEAT_COOL,
|
||||
HVACMode.FAN_ONLY,
|
||||
]
|
||||
HASS_TO_ELK_HVAC_MODES = {
|
||||
HVAC_MODE_OFF: (ThermostatMode.OFF.value, ThermostatFan.AUTO.value),
|
||||
HVAC_MODE_HEAT: (ThermostatMode.HEAT.value, None),
|
||||
HVAC_MODE_COOL: (ThermostatMode.COOL.value, None),
|
||||
HVAC_MODE_HEAT_COOL: (ThermostatMode.AUTO.value, None),
|
||||
HVAC_MODE_FAN_ONLY: (ThermostatMode.OFF.value, ThermostatFan.ON.value),
|
||||
HVACMode.OFF: (ThermostatMode.OFF.value, ThermostatFan.AUTO.value),
|
||||
HVACMode.HEAT: (ThermostatMode.HEAT.value, None),
|
||||
HVACMode.COOL: (ThermostatMode.COOL.value, None),
|
||||
HVACMode.HEAT_COOL: (ThermostatMode.AUTO.value, None),
|
||||
HVACMode.FAN_ONLY: (ThermostatMode.OFF.value, ThermostatFan.ON.value),
|
||||
}
|
||||
ELK_TO_HASS_HVAC_MODES = {
|
||||
ThermostatMode.OFF.value: HVAC_MODE_OFF,
|
||||
ThermostatMode.COOL.value: HVAC_MODE_COOL,
|
||||
ThermostatMode.HEAT.value: HVAC_MODE_HEAT,
|
||||
ThermostatMode.EMERGENCY_HEAT.value: HVAC_MODE_HEAT,
|
||||
ThermostatMode.AUTO.value: HVAC_MODE_HEAT_COOL,
|
||||
ThermostatMode.OFF.value: HVACMode.OFF,
|
||||
ThermostatMode.COOL.value: HVACMode.COOL,
|
||||
ThermostatMode.HEAT.value: HVACMode.HEAT,
|
||||
ThermostatMode.EMERGENCY_HEAT.value: HVACMode.HEAT,
|
||||
ThermostatMode.AUTO.value: HVACMode.HEAT_COOL,
|
||||
}
|
||||
HASS_TO_ELK_FAN_MODES = {
|
||||
FAN_AUTO: (None, ThermostatFan.AUTO.value),
|
||||
@ -87,7 +84,7 @@ class ElkThermostat(ElkEntity, ClimateEntity):
|
||||
def __init__(self, element: Element, elk: Elk, elk_data: dict[str, Any]) -> None:
|
||||
"""Initialize climate entity."""
|
||||
super().__init__(element, elk, elk_data)
|
||||
self._state: str = HVAC_MODE_OFF
|
||||
self._state: str = HVACMode.OFF
|
||||
|
||||
@property
|
||||
def temperature_unit(self) -> str:
|
||||
@ -137,7 +134,7 @@ class ElkThermostat(ElkEntity, ClimateEntity):
|
||||
return self._state
|
||||
|
||||
@property
|
||||
def hvac_modes(self) -> list[str]:
|
||||
def hvac_modes(self) -> list[HVACMode]:
|
||||
"""Return the list of available operation modes."""
|
||||
return SUPPORT_HVAC
|
||||
|
||||
@ -172,7 +169,7 @@ class ElkThermostat(ElkEntity, ClimateEntity):
|
||||
if fan is not None:
|
||||
self._element.set(ThermostatSetting.FAN.value, fan)
|
||||
|
||||
async def async_set_hvac_mode(self, hvac_mode: str) -> None:
|
||||
async def async_set_hvac_mode(self, hvac_mode: HVACMode) -> None:
|
||||
"""Set thermostat operation mode."""
|
||||
thermostat_mode, fan_mode = HASS_TO_ELK_HVAC_MODES[hvac_mode]
|
||||
self._elk_set(thermostat_mode, fan_mode)
|
||||
@ -192,7 +189,7 @@ class ElkThermostat(ElkEntity, ClimateEntity):
|
||||
|
||||
async def async_set_fan_mode(self, fan_mode: str) -> None:
|
||||
"""Set new target fan mode."""
|
||||
thermostat_mode, elk_fan_mode = HASS_TO_ELK_HVAC_MODES[fan_mode]
|
||||
thermostat_mode, elk_fan_mode = HASS_TO_ELK_FAN_MODES[fan_mode]
|
||||
self._elk_set(thermostat_mode, elk_fan_mode)
|
||||
|
||||
async def async_set_temperature(self, **kwargs: Any) -> None:
|
||||
@ -206,5 +203,5 @@ class ElkThermostat(ElkEntity, ClimateEntity):
|
||||
|
||||
def _element_changed(self, element: Element, changeset: Any) -> None:
|
||||
self._state = ELK_TO_HASS_HVAC_MODES[self._element.mode]
|
||||
if self._state == HVAC_MODE_OFF and self._element.fan == ThermostatFan.ON.value:
|
||||
self._state = HVAC_MODE_FAN_ONLY
|
||||
if self._state == HVACMode.OFF and self._element.fan == ThermostatFan.ON.value:
|
||||
self._state = HVACMode.FAN_ONLY
|
||||
|
Loading…
x
Reference in New Issue
Block a user