Use climate enums in airzone (#70624)

This commit is contained in:
epenet 2022-04-26 09:21:44 +02:00 committed by GitHub
parent 1bc9744be3
commit 65af9cb1a0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 72 additions and 89 deletions

View File

@ -29,19 +29,9 @@ from aioairzone.exceptions import AirzoneError
from homeassistant.components.climate import ClimateEntity from homeassistant.components.climate import ClimateEntity
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,
HVAC_MODE_COOL,
HVAC_MODE_DRY,
HVAC_MODE_FAN_ONLY,
HVAC_MODE_HEAT,
HVAC_MODE_HEAT_COOL,
HVAC_MODE_OFF,
ClimateEntityFeature, ClimateEntityFeature,
HVACAction,
HVACMode,
) )
from homeassistant.config_entries import ConfigEntry from homeassistant.config_entries import ConfigEntry
from homeassistant.const import ATTR_TEMPERATURE from homeassistant.const import ATTR_TEMPERATURE
@ -56,28 +46,28 @@ from .coordinator import AirzoneUpdateCoordinator
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
HVAC_ACTION_LIB_TO_HASS: Final[dict[OperationMode, str]] = { HVAC_ACTION_LIB_TO_HASS: Final[dict[OperationMode, HVACAction]] = {
OperationMode.STOP: CURRENT_HVAC_OFF, OperationMode.STOP: HVACAction.OFF,
OperationMode.COOLING: CURRENT_HVAC_COOL, OperationMode.COOLING: HVACAction.COOLING,
OperationMode.HEATING: CURRENT_HVAC_HEAT, OperationMode.HEATING: HVACAction.HEATING,
OperationMode.FAN: CURRENT_HVAC_FAN, OperationMode.FAN: HVACAction.FAN,
OperationMode.DRY: CURRENT_HVAC_DRY, OperationMode.DRY: HVACAction.DRYING,
} }
HVAC_MODE_LIB_TO_HASS: Final[dict[OperationMode, str]] = { HVAC_MODE_LIB_TO_HASS: Final[dict[OperationMode, HVACMode]] = {
OperationMode.STOP: HVAC_MODE_OFF, OperationMode.STOP: HVACMode.OFF,
OperationMode.COOLING: HVAC_MODE_COOL, OperationMode.COOLING: HVACMode.COOL,
OperationMode.HEATING: HVAC_MODE_HEAT, OperationMode.HEATING: HVACMode.HEAT,
OperationMode.FAN: HVAC_MODE_FAN_ONLY, OperationMode.FAN: HVACMode.FAN_ONLY,
OperationMode.DRY: HVAC_MODE_DRY, OperationMode.DRY: HVACMode.DRY,
OperationMode.AUTO: HVAC_MODE_HEAT_COOL, OperationMode.AUTO: HVACMode.HEAT_COOL,
} }
HVAC_MODE_HASS_TO_LIB: Final[dict[str, OperationMode]] = { HVAC_MODE_HASS_TO_LIB: Final[dict[HVACMode, OperationMode]] = {
HVAC_MODE_OFF: OperationMode.STOP, HVACMode.OFF: OperationMode.STOP,
HVAC_MODE_COOL: OperationMode.COOLING, HVACMode.COOL: OperationMode.COOLING,
HVAC_MODE_HEAT: OperationMode.HEATING, HVACMode.HEAT: OperationMode.HEATING,
HVAC_MODE_FAN_ONLY: OperationMode.FAN, HVACMode.FAN_ONLY: OperationMode.FAN,
HVAC_MODE_DRY: OperationMode.DRY, HVACMode.DRY: OperationMode.DRY,
HVAC_MODE_HEAT_COOL: OperationMode.AUTO, HVACMode.HEAT_COOL: OperationMode.AUTO,
} }
@ -154,10 +144,10 @@ class AirzoneClimate(AirzoneZoneEntity, ClimateEntity):
} }
await self._async_update_hvac_params(params) await self._async_update_hvac_params(params)
async def async_set_hvac_mode(self, hvac_mode: str) -> None: async def async_set_hvac_mode(self, hvac_mode: HVACMode) -> None:
"""Set hvac mode.""" """Set hvac mode."""
params = {} params = {}
if hvac_mode == HVAC_MODE_OFF: if hvac_mode == HVACMode.OFF:
params[API_ON] = 0 params[API_ON] = 0
else: else:
mode = HVAC_MODE_HASS_TO_LIB[hvac_mode] mode = HVAC_MODE_HASS_TO_LIB[hvac_mode]
@ -195,8 +185,8 @@ class AirzoneClimate(AirzoneZoneEntity, ClimateEntity):
if self.get_airzone_value(AZD_DEMAND): if self.get_airzone_value(AZD_DEMAND):
self._attr_hvac_action = HVAC_ACTION_LIB_TO_HASS[mode] self._attr_hvac_action = HVAC_ACTION_LIB_TO_HASS[mode]
else: else:
self._attr_hvac_action = CURRENT_HVAC_IDLE self._attr_hvac_action = HVACAction.IDLE
else: else:
self._attr_hvac_action = CURRENT_HVAC_OFF self._attr_hvac_action = HVACAction.OFF
self._attr_hvac_mode = HVAC_MODE_OFF self._attr_hvac_mode = HVACMode.OFF
self._attr_target_temperature = self.get_airzone_value(AZD_TEMP_SET) self._attr_target_temperature = self.get_airzone_value(AZD_TEMP_SET)

View File

@ -1,5 +1,4 @@
"""The climate tests for the Airzone platform.""" """The climate tests for the Airzone platform."""
from unittest.mock import patch from unittest.mock import patch
from aioairzone.common import OperationMode from aioairzone.common import OperationMode
@ -24,17 +23,11 @@ from homeassistant.components.climate.const import (
ATTR_MAX_TEMP, ATTR_MAX_TEMP,
ATTR_MIN_TEMP, ATTR_MIN_TEMP,
ATTR_TARGET_TEMP_STEP, ATTR_TARGET_TEMP_STEP,
CURRENT_HVAC_HEAT,
CURRENT_HVAC_IDLE,
CURRENT_HVAC_OFF,
DOMAIN as CLIMATE_DOMAIN, DOMAIN as CLIMATE_DOMAIN,
HVAC_MODE_COOL,
HVAC_MODE_DRY,
HVAC_MODE_FAN_ONLY,
HVAC_MODE_HEAT,
HVAC_MODE_OFF,
SERVICE_SET_HVAC_MODE, SERVICE_SET_HVAC_MODE,
SERVICE_SET_TEMPERATURE, SERVICE_SET_TEMPERATURE,
HVACAction,
HVACMode,
) )
from homeassistant.const import ( from homeassistant.const import (
ATTR_ENTITY_ID, ATTR_ENTITY_ID,
@ -54,16 +47,16 @@ async def test_airzone_create_climates(hass: HomeAssistant) -> None:
await async_init_integration(hass) await async_init_integration(hass)
state = hass.states.get("climate.despacho") state = hass.states.get("climate.despacho")
assert state.state == HVAC_MODE_OFF assert state.state == HVACMode.OFF
assert state.attributes.get(ATTR_CURRENT_HUMIDITY) == 36 assert state.attributes.get(ATTR_CURRENT_HUMIDITY) == 36
assert state.attributes.get(ATTR_CURRENT_TEMPERATURE) == 21.2 assert state.attributes.get(ATTR_CURRENT_TEMPERATURE) == 21.2
assert state.attributes.get(ATTR_HVAC_ACTION) == CURRENT_HVAC_OFF assert state.attributes.get(ATTR_HVAC_ACTION) == HVACAction.OFF
assert state.attributes.get(ATTR_HVAC_MODES) == [ assert state.attributes.get(ATTR_HVAC_MODES) == [
HVAC_MODE_OFF, HVACMode.OFF,
HVAC_MODE_FAN_ONLY, HVACMode.FAN_ONLY,
HVAC_MODE_COOL, HVACMode.COOL,
HVAC_MODE_HEAT, HVACMode.HEAT,
HVAC_MODE_DRY, HVACMode.DRY,
] ]
assert state.attributes.get(ATTR_MAX_TEMP) == 30 assert state.attributes.get(ATTR_MAX_TEMP) == 30
assert state.attributes.get(ATTR_MIN_TEMP) == 15 assert state.attributes.get(ATTR_MIN_TEMP) == 15
@ -71,16 +64,16 @@ async def test_airzone_create_climates(hass: HomeAssistant) -> None:
assert state.attributes.get(ATTR_TEMPERATURE) == 19.4 assert state.attributes.get(ATTR_TEMPERATURE) == 19.4
state = hass.states.get("climate.dorm_1") state = hass.states.get("climate.dorm_1")
assert state.state == HVAC_MODE_HEAT assert state.state == HVACMode.HEAT
assert state.attributes.get(ATTR_CURRENT_HUMIDITY) == 35 assert state.attributes.get(ATTR_CURRENT_HUMIDITY) == 35
assert state.attributes.get(ATTR_CURRENT_TEMPERATURE) == 20.8 assert state.attributes.get(ATTR_CURRENT_TEMPERATURE) == 20.8
assert state.attributes.get(ATTR_HVAC_ACTION) == CURRENT_HVAC_IDLE assert state.attributes.get(ATTR_HVAC_ACTION) == HVACAction.IDLE
assert state.attributes.get(ATTR_HVAC_MODES) == [ assert state.attributes.get(ATTR_HVAC_MODES) == [
HVAC_MODE_OFF, HVACMode.OFF,
HVAC_MODE_FAN_ONLY, HVACMode.FAN_ONLY,
HVAC_MODE_COOL, HVACMode.COOL,
HVAC_MODE_HEAT, HVACMode.HEAT,
HVAC_MODE_DRY, HVACMode.DRY,
] ]
assert state.attributes.get(ATTR_MAX_TEMP) == 30 assert state.attributes.get(ATTR_MAX_TEMP) == 30
assert state.attributes.get(ATTR_MIN_TEMP) == 15 assert state.attributes.get(ATTR_MIN_TEMP) == 15
@ -88,16 +81,16 @@ async def test_airzone_create_climates(hass: HomeAssistant) -> None:
assert state.attributes.get(ATTR_TEMPERATURE) == 19.3 assert state.attributes.get(ATTR_TEMPERATURE) == 19.3
state = hass.states.get("climate.dorm_2") state = hass.states.get("climate.dorm_2")
assert state.state == HVAC_MODE_OFF assert state.state == HVACMode.OFF
assert state.attributes.get(ATTR_CURRENT_HUMIDITY) == 40 assert state.attributes.get(ATTR_CURRENT_HUMIDITY) == 40
assert state.attributes.get(ATTR_CURRENT_TEMPERATURE) == 20.5 assert state.attributes.get(ATTR_CURRENT_TEMPERATURE) == 20.5
assert state.attributes.get(ATTR_HVAC_ACTION) == CURRENT_HVAC_OFF assert state.attributes.get(ATTR_HVAC_ACTION) == HVACAction.OFF
assert state.attributes.get(ATTR_HVAC_MODES) == [ assert state.attributes.get(ATTR_HVAC_MODES) == [
HVAC_MODE_OFF, HVACMode.OFF,
HVAC_MODE_FAN_ONLY, HVACMode.FAN_ONLY,
HVAC_MODE_COOL, HVACMode.COOL,
HVAC_MODE_HEAT, HVACMode.HEAT,
HVAC_MODE_DRY, HVACMode.DRY,
] ]
assert state.attributes.get(ATTR_MAX_TEMP) == 30 assert state.attributes.get(ATTR_MAX_TEMP) == 30
assert state.attributes.get(ATTR_MIN_TEMP) == 15 assert state.attributes.get(ATTR_MIN_TEMP) == 15
@ -105,16 +98,16 @@ async def test_airzone_create_climates(hass: HomeAssistant) -> None:
assert state.attributes.get(ATTR_TEMPERATURE) == 19.5 assert state.attributes.get(ATTR_TEMPERATURE) == 19.5
state = hass.states.get("climate.dorm_ppal") state = hass.states.get("climate.dorm_ppal")
assert state.state == HVAC_MODE_HEAT assert state.state == HVACMode.HEAT
assert state.attributes.get(ATTR_CURRENT_HUMIDITY) == 39 assert state.attributes.get(ATTR_CURRENT_HUMIDITY) == 39
assert state.attributes.get(ATTR_CURRENT_TEMPERATURE) == 21.1 assert state.attributes.get(ATTR_CURRENT_TEMPERATURE) == 21.1
assert state.attributes.get(ATTR_HVAC_ACTION) == CURRENT_HVAC_HEAT assert state.attributes.get(ATTR_HVAC_ACTION) == HVACAction.HEATING
assert state.attributes.get(ATTR_HVAC_MODES) == [ assert state.attributes.get(ATTR_HVAC_MODES) == [
HVAC_MODE_OFF, HVACMode.OFF,
HVAC_MODE_FAN_ONLY, HVACMode.FAN_ONLY,
HVAC_MODE_COOL, HVACMode.COOL,
HVAC_MODE_HEAT, HVACMode.HEAT,
HVAC_MODE_DRY, HVACMode.DRY,
] ]
assert state.attributes.get(ATTR_MAX_TEMP) == 30 assert state.attributes.get(ATTR_MAX_TEMP) == 30
assert state.attributes.get(ATTR_MIN_TEMP) == 15 assert state.attributes.get(ATTR_MIN_TEMP) == 15
@ -122,16 +115,16 @@ async def test_airzone_create_climates(hass: HomeAssistant) -> None:
assert state.attributes.get(ATTR_TEMPERATURE) == 19.2 assert state.attributes.get(ATTR_TEMPERATURE) == 19.2
state = hass.states.get("climate.salon") state = hass.states.get("climate.salon")
assert state.state == HVAC_MODE_OFF assert state.state == HVACMode.OFF
assert state.attributes.get(ATTR_CURRENT_HUMIDITY) == 34 assert state.attributes.get(ATTR_CURRENT_HUMIDITY) == 34
assert state.attributes.get(ATTR_CURRENT_TEMPERATURE) == 19.6 assert state.attributes.get(ATTR_CURRENT_TEMPERATURE) == 19.6
assert state.attributes.get(ATTR_HVAC_ACTION) == CURRENT_HVAC_OFF assert state.attributes.get(ATTR_HVAC_ACTION) == HVACAction.OFF
assert state.attributes.get(ATTR_HVAC_MODES) == [ assert state.attributes.get(ATTR_HVAC_MODES) == [
HVAC_MODE_OFF, HVACMode.OFF,
HVAC_MODE_FAN_ONLY, HVACMode.FAN_ONLY,
HVAC_MODE_COOL, HVACMode.COOL,
HVAC_MODE_HEAT, HVACMode.HEAT,
HVAC_MODE_DRY, HVACMode.DRY,
] ]
assert state.attributes.get(ATTR_MAX_TEMP) == 30 assert state.attributes.get(ATTR_MAX_TEMP) == 30
assert state.attributes.get(ATTR_MIN_TEMP) == 15 assert state.attributes.get(ATTR_MIN_TEMP) == 15
@ -167,7 +160,7 @@ async def test_airzone_climate_turn_on_off(hass: HomeAssistant) -> None:
) )
state = hass.states.get("climate.salon") state = hass.states.get("climate.salon")
assert state.state == HVAC_MODE_HEAT assert state.state == HVACMode.HEAT
HVAC_MOCK = { HVAC_MOCK = {
API_DATA: [ API_DATA: [
@ -192,7 +185,7 @@ async def test_airzone_climate_turn_on_off(hass: HomeAssistant) -> None:
) )
state = hass.states.get("climate.salon") state = hass.states.get("climate.salon")
assert state.state == HVAC_MODE_OFF assert state.state == HVACMode.OFF
async def test_airzone_climate_set_hvac_mode(hass: HomeAssistant) -> None: async def test_airzone_climate_set_hvac_mode(hass: HomeAssistant) -> None:
@ -219,13 +212,13 @@ async def test_airzone_climate_set_hvac_mode(hass: HomeAssistant) -> None:
SERVICE_SET_HVAC_MODE, SERVICE_SET_HVAC_MODE,
{ {
ATTR_ENTITY_ID: "climate.salon", ATTR_ENTITY_ID: "climate.salon",
ATTR_HVAC_MODE: HVAC_MODE_COOL, ATTR_HVAC_MODE: HVACMode.COOL,
}, },
blocking=True, blocking=True,
) )
state = hass.states.get("climate.salon") state = hass.states.get("climate.salon")
assert state.state == HVAC_MODE_COOL assert state.state == HVACMode.COOL
HVAC_MOCK_2 = { HVAC_MOCK_2 = {
API_DATA: [ API_DATA: [
@ -245,13 +238,13 @@ async def test_airzone_climate_set_hvac_mode(hass: HomeAssistant) -> None:
SERVICE_SET_HVAC_MODE, SERVICE_SET_HVAC_MODE,
{ {
ATTR_ENTITY_ID: "climate.salon", ATTR_ENTITY_ID: "climate.salon",
ATTR_HVAC_MODE: HVAC_MODE_OFF, ATTR_HVAC_MODE: HVACMode.OFF,
}, },
blocking=True, blocking=True,
) )
state = hass.states.get("climate.salon") state = hass.states.get("climate.salon")
assert state.state == HVAC_MODE_OFF assert state.state == HVACMode.OFF
async def test_airzone_climate_set_hvac_slave_error(hass: HomeAssistant) -> None: async def test_airzone_climate_set_hvac_slave_error(hass: HomeAssistant) -> None:
@ -278,13 +271,13 @@ async def test_airzone_climate_set_hvac_slave_error(hass: HomeAssistant) -> None
SERVICE_SET_HVAC_MODE, SERVICE_SET_HVAC_MODE,
{ {
ATTR_ENTITY_ID: "climate.dorm_2", ATTR_ENTITY_ID: "climate.dorm_2",
ATTR_HVAC_MODE: HVAC_MODE_COOL, ATTR_HVAC_MODE: HVACMode.COOL,
}, },
blocking=True, blocking=True,
) )
state = hass.states.get("climate.dorm_2") state = hass.states.get("climate.dorm_2")
assert state.state == HVAC_MODE_OFF assert state.state == HVACMode.OFF
async def test_airzone_climate_set_temp(hass: HomeAssistant) -> None: async def test_airzone_climate_set_temp(hass: HomeAssistant) -> None: