mirror of
https://github.com/home-assistant/core.git
synced 2025-07-26 14:47:38 +00:00
Use climate enums in tado (#70742)
This commit is contained in:
parent
6df53d7c1f
commit
f68eda97bc
@ -1,16 +1,18 @@
|
|||||||
"""Support for Tado thermostats."""
|
"""Support for Tado thermostats."""
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
import voluptuous as vol
|
import voluptuous as vol
|
||||||
|
|
||||||
from homeassistant.components.climate import ClimateEntity, ClimateEntityFeature
|
from homeassistant.components.climate import ClimateEntity
|
||||||
from homeassistant.components.climate.const import (
|
from homeassistant.components.climate.const import (
|
||||||
CURRENT_HVAC_OFF,
|
|
||||||
FAN_AUTO,
|
FAN_AUTO,
|
||||||
HVAC_MODE_HEAT,
|
|
||||||
HVAC_MODE_OFF,
|
|
||||||
PRESET_AWAY,
|
PRESET_AWAY,
|
||||||
PRESET_HOME,
|
PRESET_HOME,
|
||||||
|
ClimateEntityFeature,
|
||||||
|
HVACAction,
|
||||||
|
HVACMode,
|
||||||
)
|
)
|
||||||
from homeassistant.config_entries import ConfigEntry
|
from homeassistant.config_entries import ConfigEntry
|
||||||
from homeassistant.const import ATTR_TEMPERATURE, PRECISION_TENTHS, TEMP_CELSIUS
|
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"]
|
cool_temperatures = capabilities[CONST_MODE_COOL]["temperatures"]
|
||||||
else:
|
else:
|
||||||
supported_hvac_modes.append(HVAC_MODE_HEAT)
|
supported_hvac_modes.append(HVACMode.HEAT)
|
||||||
|
|
||||||
if CONST_MODE_HEAT in capabilities:
|
if CONST_MODE_HEAT in capabilities:
|
||||||
heat_temperatures = capabilities[CONST_MODE_HEAT]["temperatures"]
|
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_fan_speed = CONST_FAN_OFF
|
||||||
self._current_tado_hvac_mode = CONST_MODE_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._current_tado_swing_mode = TADO_SWING_OFF
|
||||||
|
|
||||||
self._tado_zone_data = None
|
self._tado_zone_data = None
|
||||||
@ -308,15 +310,15 @@ class TadoClimate(TadoZoneEntity, ClimateEntity):
|
|||||||
return self._tado_zone_data.current_temp
|
return self._tado_zone_data.current_temp
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def hvac_mode(self):
|
def hvac_mode(self) -> HVACMode:
|
||||||
"""Return hvac operation ie. heat, cool mode.
|
"""Return hvac operation ie. heat, cool mode.
|
||||||
|
|
||||||
Need to be one of HVAC_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
|
@property
|
||||||
def hvac_modes(self):
|
def hvac_modes(self) -> list[HVACMode]:
|
||||||
"""Return the list of available hvac operation modes.
|
"""Return the list of available hvac operation modes.
|
||||||
|
|
||||||
Need to be a subset of HVAC_MODES.
|
Need to be a subset of HVAC_MODES.
|
||||||
@ -324,13 +326,13 @@ class TadoClimate(TadoZoneEntity, ClimateEntity):
|
|||||||
return self._supported_hvac_modes
|
return self._supported_hvac_modes
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def hvac_action(self):
|
def hvac_action(self) -> HVACAction:
|
||||||
"""Return the current running hvac operation if supported.
|
"""Return the current running hvac operation if supported.
|
||||||
|
|
||||||
Need to be one of CURRENT_HVAC_*.
|
Need to be one of CURRENT_HVAC_*.
|
||||||
"""
|
"""
|
||||||
return TADO_HVAC_ACTION_TO_HA_HVAC_ACTION.get(
|
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
|
@property
|
||||||
@ -423,7 +425,7 @@ class TadoClimate(TadoZoneEntity, ClimateEntity):
|
|||||||
new_hvac_mode = CONST_MODE_COOL if self._ac_device else CONST_MODE_HEAT
|
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)
|
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."""
|
"""Set new target hvac mode."""
|
||||||
|
|
||||||
self._control_hvac(hvac_mode=HA_TO_TADO_HVAC_MODE_MAP[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 (
|
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_AUTO,
|
||||||
FAN_HIGH,
|
FAN_HIGH,
|
||||||
FAN_LOW,
|
FAN_LOW,
|
||||||
FAN_MEDIUM,
|
FAN_MEDIUM,
|
||||||
FAN_OFF,
|
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_AWAY,
|
||||||
PRESET_HOME,
|
PRESET_HOME,
|
||||||
|
HVACAction,
|
||||||
|
HVACMode,
|
||||||
)
|
)
|
||||||
|
|
||||||
TADO_HVAC_ACTION_TO_HA_HVAC_ACTION = {
|
TADO_HVAC_ACTION_TO_HA_HVAC_ACTION = {
|
||||||
CONST_HVAC_HEAT: CURRENT_HVAC_HEAT,
|
CONST_HVAC_HEAT: HVACAction.HEATING,
|
||||||
CONST_HVAC_DRY: CURRENT_HVAC_DRY,
|
CONST_HVAC_DRY: HVACAction.DRYING,
|
||||||
CONST_HVAC_FAN: CURRENT_HVAC_FAN,
|
CONST_HVAC_FAN: HVACAction.FAN,
|
||||||
CONST_HVAC_COOL: CURRENT_HVAC_COOL,
|
CONST_HVAC_COOL: HVACAction.COOLING,
|
||||||
CONST_HVAC_IDLE: CURRENT_HVAC_IDLE,
|
CONST_HVAC_IDLE: HVACAction.IDLE,
|
||||||
CONST_HVAC_OFF: CURRENT_HVAC_OFF,
|
CONST_HVAC_OFF: HVACAction.OFF,
|
||||||
CONST_HVAC_HOT_WATER: CURRENT_HVAC_HEAT,
|
CONST_HVAC_HOT_WATER: HVACAction.HEATING,
|
||||||
}
|
}
|
||||||
|
|
||||||
# Configuration
|
# Configuration
|
||||||
@ -121,10 +110,10 @@ ORDERED_KNOWN_TADO_MODES = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
TADO_MODES_TO_HA_CURRENT_HVAC_ACTION = {
|
TADO_MODES_TO_HA_CURRENT_HVAC_ACTION = {
|
||||||
CONST_MODE_HEAT: CURRENT_HVAC_HEAT,
|
CONST_MODE_HEAT: HVACAction.HEATING,
|
||||||
CONST_MODE_DRY: CURRENT_HVAC_DRY,
|
CONST_MODE_DRY: HVACAction.DRYING,
|
||||||
CONST_MODE_FAN: CURRENT_HVAC_FAN,
|
CONST_MODE_FAN: HVACAction.FAN,
|
||||||
CONST_MODE_COOL: CURRENT_HVAC_COOL,
|
CONST_MODE_COOL: HVACAction.COOLING,
|
||||||
}
|
}
|
||||||
|
|
||||||
# These modes will not allow a temp to be set
|
# 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
|
# This runs the smart schedule
|
||||||
#
|
#
|
||||||
HA_TO_TADO_HVAC_MODE_MAP = {
|
HA_TO_TADO_HVAC_MODE_MAP = {
|
||||||
HVAC_MODE_OFF: CONST_MODE_OFF,
|
HVACMode.OFF: CONST_MODE_OFF,
|
||||||
HVAC_MODE_HEAT_COOL: CONST_MODE_AUTO,
|
HVACMode.HEAT_COOL: CONST_MODE_AUTO,
|
||||||
HVAC_MODE_AUTO: CONST_MODE_SMART_SCHEDULE,
|
HVACMode.AUTO: CONST_MODE_SMART_SCHEDULE,
|
||||||
HVAC_MODE_HEAT: CONST_MODE_HEAT,
|
HVACMode.HEAT: CONST_MODE_HEAT,
|
||||||
HVAC_MODE_COOL: CONST_MODE_COOL,
|
HVACMode.COOL: CONST_MODE_COOL,
|
||||||
HVAC_MODE_DRY: CONST_MODE_DRY,
|
HVACMode.DRY: CONST_MODE_DRY,
|
||||||
HVAC_MODE_FAN_ONLY: CONST_MODE_FAN,
|
HVACMode.FAN_ONLY: CONST_MODE_FAN,
|
||||||
}
|
}
|
||||||
|
|
||||||
HA_TO_TADO_FAN_MODE_MAP = {
|
HA_TO_TADO_FAN_MODE_MAP = {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user