Use climate enums in tado (#70742)
This commit is contained in:
parent
6df53d7c1f
commit
f68eda97bc
2 changed files with 34 additions and 43 deletions
|
@ -1,16 +1,18 @@
|
|||
"""Support for Tado thermostats."""
|
||||
from __future__ import annotations
|
||||
|
||||
import logging
|
||||
|
||||
import voluptuous as vol
|
||||
|
||||
from homeassistant.components.climate import ClimateEntity, ClimateEntityFeature
|
||||
from homeassistant.components.climate import ClimateEntity
|
||||
from homeassistant.components.climate.const import (
|
||||
CURRENT_HVAC_OFF,
|
||||
FAN_AUTO,
|
||||
HVAC_MODE_HEAT,
|
||||
HVAC_MODE_OFF,
|
||||
PRESET_AWAY,
|
||||
PRESET_HOME,
|
||||
ClimateEntityFeature,
|
||||
HVACAction,
|
||||
HVACMode,
|
||||
)
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import ATTR_TEMPERATURE, PRECISION_TENTHS, TEMP_CELSIUS
|
||||
|
@ -160,7 +162,7 @@ def create_climate_entity(tado, name: str, zone_id: int, device_info: dict):
|
|||
|
||||
cool_temperatures = capabilities[CONST_MODE_COOL]["temperatures"]
|
||||
else:
|
||||
supported_hvac_modes.append(HVAC_MODE_HEAT)
|
||||
supported_hvac_modes.append(HVACMode.HEAT)
|
||||
|
||||
if CONST_MODE_HEAT in capabilities:
|
||||
heat_temperatures = capabilities[CONST_MODE_HEAT]["temperatures"]
|
||||
|
@ -260,7 +262,7 @@ class TadoClimate(TadoZoneEntity, ClimateEntity):
|
|||
|
||||
self._current_tado_fan_speed = CONST_FAN_OFF
|
||||
self._current_tado_hvac_mode = CONST_MODE_OFF
|
||||
self._current_tado_hvac_action = CURRENT_HVAC_OFF
|
||||
self._current_tado_hvac_action = HVACAction.OFF
|
||||
self._current_tado_swing_mode = TADO_SWING_OFF
|
||||
|
||||
self._tado_zone_data = None
|
||||
|
@ -308,15 +310,15 @@ class TadoClimate(TadoZoneEntity, ClimateEntity):
|
|||
return self._tado_zone_data.current_temp
|
||||
|
||||
@property
|
||||
def hvac_mode(self):
|
||||
def hvac_mode(self) -> HVACMode:
|
||||
"""Return hvac operation ie. heat, cool mode.
|
||||
|
||||
Need to be one of HVAC_MODE_*.
|
||||
"""
|
||||
return TADO_TO_HA_HVAC_MODE_MAP.get(self._current_tado_hvac_mode, HVAC_MODE_OFF)
|
||||
return TADO_TO_HA_HVAC_MODE_MAP.get(self._current_tado_hvac_mode, HVACMode.OFF)
|
||||
|
||||
@property
|
||||
def hvac_modes(self):
|
||||
def hvac_modes(self) -> list[HVACMode]:
|
||||
"""Return the list of available hvac operation modes.
|
||||
|
||||
Need to be a subset of HVAC_MODES.
|
||||
|
@ -324,13 +326,13 @@ class TadoClimate(TadoZoneEntity, ClimateEntity):
|
|||
return self._supported_hvac_modes
|
||||
|
||||
@property
|
||||
def hvac_action(self):
|
||||
def hvac_action(self) -> HVACAction:
|
||||
"""Return the current running hvac operation if supported.
|
||||
|
||||
Need to be one of CURRENT_HVAC_*.
|
||||
"""
|
||||
return TADO_HVAC_ACTION_TO_HA_HVAC_ACTION.get(
|
||||
self._tado_zone_data.current_hvac_action, CURRENT_HVAC_OFF
|
||||
self._tado_zone_data.current_hvac_action, HVACAction.OFF
|
||||
)
|
||||
|
||||
@property
|
||||
|
@ -423,7 +425,7 @@ class TadoClimate(TadoZoneEntity, ClimateEntity):
|
|||
new_hvac_mode = CONST_MODE_COOL if self._ac_device else CONST_MODE_HEAT
|
||||
self._control_hvac(target_temp=temperature, hvac_mode=new_hvac_mode)
|
||||
|
||||
def set_hvac_mode(self, hvac_mode):
|
||||
def set_hvac_mode(self, hvac_mode: HVACMode) -> None:
|
||||
"""Set new target hvac mode."""
|
||||
|
||||
self._control_hvac(hvac_mode=HA_TO_TADO_HVAC_MODE_MAP[hvac_mode])
|
||||
|
|
|
@ -11,36 +11,25 @@ from PyTado.const import (
|
|||
)
|
||||
|
||||
from homeassistant.components.climate.const import (
|
||||
CURRENT_HVAC_COOL,
|
||||
CURRENT_HVAC_DRY,
|
||||
CURRENT_HVAC_FAN,
|
||||
CURRENT_HVAC_HEAT,
|
||||
CURRENT_HVAC_IDLE,
|
||||
CURRENT_HVAC_OFF,
|
||||
FAN_AUTO,
|
||||
FAN_HIGH,
|
||||
FAN_LOW,
|
||||
FAN_MEDIUM,
|
||||
FAN_OFF,
|
||||
HVAC_MODE_AUTO,
|
||||
HVAC_MODE_COOL,
|
||||
HVAC_MODE_DRY,
|
||||
HVAC_MODE_FAN_ONLY,
|
||||
HVAC_MODE_HEAT,
|
||||
HVAC_MODE_HEAT_COOL,
|
||||
HVAC_MODE_OFF,
|
||||
PRESET_AWAY,
|
||||
PRESET_HOME,
|
||||
HVACAction,
|
||||
HVACMode,
|
||||
)
|
||||
|
||||
TADO_HVAC_ACTION_TO_HA_HVAC_ACTION = {
|
||||
CONST_HVAC_HEAT: CURRENT_HVAC_HEAT,
|
||||
CONST_HVAC_DRY: CURRENT_HVAC_DRY,
|
||||
CONST_HVAC_FAN: CURRENT_HVAC_FAN,
|
||||
CONST_HVAC_COOL: CURRENT_HVAC_COOL,
|
||||
CONST_HVAC_IDLE: CURRENT_HVAC_IDLE,
|
||||
CONST_HVAC_OFF: CURRENT_HVAC_OFF,
|
||||
CONST_HVAC_HOT_WATER: CURRENT_HVAC_HEAT,
|
||||
CONST_HVAC_HEAT: HVACAction.HEATING,
|
||||
CONST_HVAC_DRY: HVACAction.DRYING,
|
||||
CONST_HVAC_FAN: HVACAction.FAN,
|
||||
CONST_HVAC_COOL: HVACAction.COOLING,
|
||||
CONST_HVAC_IDLE: HVACAction.IDLE,
|
||||
CONST_HVAC_OFF: HVACAction.OFF,
|
||||
CONST_HVAC_HOT_WATER: HVACAction.HEATING,
|
||||
}
|
||||
|
||||
# Configuration
|
||||
|
@ -121,10 +110,10 @@ ORDERED_KNOWN_TADO_MODES = [
|
|||
]
|
||||
|
||||
TADO_MODES_TO_HA_CURRENT_HVAC_ACTION = {
|
||||
CONST_MODE_HEAT: CURRENT_HVAC_HEAT,
|
||||
CONST_MODE_DRY: CURRENT_HVAC_DRY,
|
||||
CONST_MODE_FAN: CURRENT_HVAC_FAN,
|
||||
CONST_MODE_COOL: CURRENT_HVAC_COOL,
|
||||
CONST_MODE_HEAT: HVACAction.HEATING,
|
||||
CONST_MODE_DRY: HVACAction.DRYING,
|
||||
CONST_MODE_FAN: HVACAction.FAN,
|
||||
CONST_MODE_COOL: HVACAction.COOLING,
|
||||
}
|
||||
|
||||
# These modes will not allow a temp to be set
|
||||
|
@ -137,13 +126,13 @@ TADO_MODES_WITH_NO_TEMP_SETTING = [CONST_MODE_AUTO, CONST_MODE_DRY, CONST_MODE_F
|
|||
# This runs the smart schedule
|
||||
#
|
||||
HA_TO_TADO_HVAC_MODE_MAP = {
|
||||
HVAC_MODE_OFF: CONST_MODE_OFF,
|
||||
HVAC_MODE_HEAT_COOL: CONST_MODE_AUTO,
|
||||
HVAC_MODE_AUTO: CONST_MODE_SMART_SCHEDULE,
|
||||
HVAC_MODE_HEAT: CONST_MODE_HEAT,
|
||||
HVAC_MODE_COOL: CONST_MODE_COOL,
|
||||
HVAC_MODE_DRY: CONST_MODE_DRY,
|
||||
HVAC_MODE_FAN_ONLY: CONST_MODE_FAN,
|
||||
HVACMode.OFF: CONST_MODE_OFF,
|
||||
HVACMode.HEAT_COOL: CONST_MODE_AUTO,
|
||||
HVACMode.AUTO: CONST_MODE_SMART_SCHEDULE,
|
||||
HVACMode.HEAT: CONST_MODE_HEAT,
|
||||
HVACMode.COOL: CONST_MODE_COOL,
|
||||
HVACMode.DRY: CONST_MODE_DRY,
|
||||
HVACMode.FAN_ONLY: CONST_MODE_FAN,
|
||||
}
|
||||
|
||||
HA_TO_TADO_FAN_MODE_MAP = {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue