Use climate enums in daikin (#70766)

This commit is contained in:
epenet 2022-04-26 10:53:54 +02:00 committed by GitHub
parent cf8f2132a2
commit 3440be803c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -5,30 +5,19 @@ import logging
import voluptuous as vol import voluptuous as vol
from homeassistant.components.climate import ( from homeassistant.components.climate import PLATFORM_SCHEMA, ClimateEntity
PLATFORM_SCHEMA,
ClimateEntity,
ClimateEntityFeature,
)
from homeassistant.components.climate.const import ( from homeassistant.components.climate.const import (
ATTR_FAN_MODE, ATTR_FAN_MODE,
ATTR_HVAC_MODE, ATTR_HVAC_MODE,
ATTR_PRESET_MODE, ATTR_PRESET_MODE,
ATTR_SWING_MODE, ATTR_SWING_MODE,
CURRENT_HVAC_COOL,
CURRENT_HVAC_HEAT,
CURRENT_HVAC_IDLE,
CURRENT_HVAC_OFF,
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_BOOST, PRESET_BOOST,
PRESET_ECO, PRESET_ECO,
PRESET_NONE, PRESET_NONE,
ClimateEntityFeature,
HVACAction,
HVACMode,
) )
from homeassistant.config_entries import ConfigEntry from homeassistant.config_entries import ConfigEntry
from homeassistant.const import ATTR_TEMPERATURE, CONF_HOST, CONF_NAME, TEMP_CELSIUS from homeassistant.const import ATTR_TEMPERATURE, CONF_HOST, CONF_NAME, TEMP_CELSIUS
@ -53,27 +42,27 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
) )
HA_STATE_TO_DAIKIN = { HA_STATE_TO_DAIKIN = {
HVAC_MODE_FAN_ONLY: "fan", HVACMode.FAN_ONLY: "fan",
HVAC_MODE_DRY: "dry", HVACMode.DRY: "dry",
HVAC_MODE_COOL: "cool", HVACMode.COOL: "cool",
HVAC_MODE_HEAT: "hot", HVACMode.HEAT: "hot",
HVAC_MODE_HEAT_COOL: "auto", HVACMode.HEAT_COOL: "auto",
HVAC_MODE_OFF: "off", HVACMode.OFF: "off",
} }
DAIKIN_TO_HA_STATE = { DAIKIN_TO_HA_STATE = {
"fan": HVAC_MODE_FAN_ONLY, "fan": HVACMode.FAN_ONLY,
"dry": HVAC_MODE_DRY, "dry": HVACMode.DRY,
"cool": HVAC_MODE_COOL, "cool": HVACMode.COOL,
"hot": HVAC_MODE_HEAT, "hot": HVACMode.HEAT,
"auto": HVAC_MODE_HEAT_COOL, "auto": HVACMode.HEAT_COOL,
"off": HVAC_MODE_OFF, "off": HVACMode.OFF,
} }
HA_STATE_TO_CURRENT_HVAC = { HA_STATE_TO_CURRENT_HVAC = {
HVAC_MODE_COOL: CURRENT_HVAC_COOL, HVACMode.COOL: HVACAction.COOLING,
HVAC_MODE_HEAT: CURRENT_HVAC_HEAT, HVACMode.HEAT: HVACAction.HEATING,
HVAC_MODE_OFF: CURRENT_HVAC_OFF, HVACMode.OFF: HVACAction.OFF,
} }
HA_PRESET_TO_DAIKIN = { HA_PRESET_TO_DAIKIN = {
@ -212,29 +201,29 @@ class DaikinClimate(ClimateEntity):
await self._set(kwargs) await self._set(kwargs)
@property @property
def hvac_action(self): def hvac_action(self) -> HVACAction | None:
"""Return the current state.""" """Return the current state."""
ret = HA_STATE_TO_CURRENT_HVAC.get(self.hvac_mode) ret = HA_STATE_TO_CURRENT_HVAC.get(self.hvac_mode)
if ( if (
ret in (CURRENT_HVAC_COOL, CURRENT_HVAC_HEAT) ret in (HVACAction.COOLING, HVACAction.HEATING)
and self._api.device.support_compressor_frequency and self._api.device.support_compressor_frequency
and self._api.device.compressor_frequency == 0 and self._api.device.compressor_frequency == 0
): ):
return CURRENT_HVAC_IDLE return HVACAction.IDLE
return ret return ret
@property @property
def hvac_mode(self): def hvac_mode(self) -> HVACMode:
"""Return current operation ie. heat, cool, idle.""" """Return current operation ie. heat, cool, idle."""
daikin_mode = self._api.device.represent(HA_ATTR_TO_DAIKIN[ATTR_HVAC_MODE])[1] daikin_mode = self._api.device.represent(HA_ATTR_TO_DAIKIN[ATTR_HVAC_MODE])[1]
return DAIKIN_TO_HA_STATE.get(daikin_mode, HVAC_MODE_HEAT_COOL) return DAIKIN_TO_HA_STATE.get(daikin_mode, HVACMode.HEAT_COOL)
@property @property
def hvac_modes(self): def hvac_modes(self) -> list[HVACMode]:
"""Return the list of available operation modes.""" """Return the list of available operation modes."""
return self._list.get(ATTR_HVAC_MODE) return self._list.get(ATTR_HVAC_MODE)
async def async_set_hvac_mode(self, hvac_mode): async def async_set_hvac_mode(self, hvac_mode: HVACMode) -> None:
"""Set HVAC mode.""" """Set HVAC mode."""
await self._set({ATTR_HVAC_MODE: hvac_mode}) await self._set({ATTR_HVAC_MODE: hvac_mode})
@ -331,7 +320,7 @@ class DaikinClimate(ClimateEntity):
async def async_turn_off(self): async def async_turn_off(self):
"""Turn device off.""" """Turn device off."""
await self._api.device.set( await self._api.device.set(
{HA_ATTR_TO_DAIKIN[ATTR_HVAC_MODE]: HA_STATE_TO_DAIKIN[HVAC_MODE_OFF]} {HA_ATTR_TO_DAIKIN[ATTR_HVAC_MODE]: HA_STATE_TO_DAIKIN[HVACMode.OFF]}
) )
@property @property