Use climate enums in tolo (#70743)

This commit is contained in:
epenet 2022-04-26 08:47:17 +02:00 committed by GitHub
parent b9379b5a88
commit 24b7d1f47b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -5,20 +5,13 @@ from typing import Any
from tololib.const import Calefaction from tololib.const import Calefaction
from homeassistant.components.climate import ( from homeassistant.components.climate import ClimateEntity
HVAC_MODE_HEAT,
HVAC_MODE_OFF,
ClimateEntity,
ClimateEntityFeature,
)
from homeassistant.components.climate.const import ( from homeassistant.components.climate.const import (
CURRENT_HVAC_DRY,
CURRENT_HVAC_HEAT,
CURRENT_HVAC_IDLE,
CURRENT_HVAC_OFF,
FAN_OFF, FAN_OFF,
FAN_ON, FAN_ON,
HVAC_MODE_DRY, ClimateEntityFeature,
HVACAction,
HVACMode,
) )
from homeassistant.config_entries import ConfigEntry from homeassistant.config_entries import ConfigEntry
from homeassistant.const import ATTR_TEMPERATURE, PRECISION_WHOLE, TEMP_CELSIUS from homeassistant.const import ATTR_TEMPERATURE, PRECISION_WHOLE, TEMP_CELSIUS
@ -49,7 +42,7 @@ class SaunaClimate(ToloSaunaCoordinatorEntity, ClimateEntity):
"""Sauna climate control.""" """Sauna climate control."""
_attr_fan_modes = [FAN_ON, FAN_OFF] _attr_fan_modes = [FAN_ON, FAN_OFF]
_attr_hvac_modes = [HVAC_MODE_OFF, HVAC_MODE_HEAT, HVAC_MODE_DRY] _attr_hvac_modes = [HVACMode.OFF, HVACMode.HEAT, HVACMode.DRY]
_attr_max_humidity = DEFAULT_MAX_HUMIDITY _attr_max_humidity = DEFAULT_MAX_HUMIDITY
_attr_max_temp = DEFAULT_MAX_TEMP _attr_max_temp = DEFAULT_MAX_TEMP
_attr_min_humidity = DEFAULT_MIN_HUMIDITY _attr_min_humidity = DEFAULT_MIN_HUMIDITY
@ -93,28 +86,28 @@ class SaunaClimate(ToloSaunaCoordinatorEntity, ClimateEntity):
return self.coordinator.data.settings.target_humidity return self.coordinator.data.settings.target_humidity
@property @property
def hvac_mode(self) -> str: def hvac_mode(self) -> HVACMode:
"""Get current HVAC mode.""" """Get current HVAC mode."""
if self.coordinator.data.status.power_on: if self.coordinator.data.status.power_on:
return HVAC_MODE_HEAT return HVACMode.HEAT
if ( if (
not self.coordinator.data.status.power_on not self.coordinator.data.status.power_on
and self.coordinator.data.status.fan_on and self.coordinator.data.status.fan_on
): ):
return HVAC_MODE_DRY return HVACMode.DRY
return HVAC_MODE_OFF return HVACMode.OFF
@property @property
def hvac_action(self) -> str | None: def hvac_action(self) -> HVACAction | None:
"""Execute HVAC action.""" """Execute HVAC action."""
if self.coordinator.data.status.calefaction == Calefaction.HEAT: if self.coordinator.data.status.calefaction == Calefaction.HEAT:
return CURRENT_HVAC_HEAT return HVACAction.HEATING
if self.coordinator.data.status.calefaction == Calefaction.KEEP: if self.coordinator.data.status.calefaction == Calefaction.KEEP:
return CURRENT_HVAC_IDLE return HVACAction.IDLE
if self.coordinator.data.status.calefaction == Calefaction.INACTIVE: if self.coordinator.data.status.calefaction == Calefaction.INACTIVE:
if self.coordinator.data.status.fan_on: if self.coordinator.data.status.fan_on:
return CURRENT_HVAC_DRY return HVACAction.DRYING
return CURRENT_HVAC_OFF return HVACAction.OFF
return None return None
@property @property
@ -124,13 +117,13 @@ class SaunaClimate(ToloSaunaCoordinatorEntity, ClimateEntity):
return FAN_ON return FAN_ON
return FAN_OFF return FAN_OFF
def set_hvac_mode(self, hvac_mode: str) -> None: def set_hvac_mode(self, hvac_mode: HVACMode) -> None:
"""Set HVAC mode.""" """Set HVAC mode."""
if hvac_mode == HVAC_MODE_OFF: if hvac_mode == HVACMode.OFF:
self._set_power_and_fan(False, False) self._set_power_and_fan(False, False)
if hvac_mode == HVAC_MODE_HEAT: if hvac_mode == HVACMode.HEAT:
self._set_power_and_fan(True, False) self._set_power_and_fan(True, False)
if hvac_mode == HVAC_MODE_DRY: if hvac_mode == HVACMode.DRY:
self._set_power_and_fan(False, True) self._set_power_and_fan(False, True)
def set_fan_mode(self, fan_mode: str) -> None: def set_fan_mode(self, fan_mode: str) -> None: