Use climate enums in tado (#70742)

This commit is contained in:
epenet 2022-04-26 08:35:49 +02:00 committed by GitHub
parent 6df53d7c1f
commit f68eda97bc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 34 additions and 43 deletions

View file

@ -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])

View file

@ -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 = {