Use climate enums in airzone (#70624)
parent
1bc9744be3
commit
65af9cb1a0
|
@ -29,19 +29,9 @@ from aioairzone.exceptions import AirzoneError
|
|||
|
||||
from homeassistant.components.climate import ClimateEntity
|
||||
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,
|
||||
HVACAction,
|
||||
HVACMode,
|
||||
)
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import ATTR_TEMPERATURE
|
||||
|
@ -56,28 +46,28 @@ from .coordinator import AirzoneUpdateCoordinator
|
|||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
|
||||
HVAC_ACTION_LIB_TO_HASS: Final[dict[OperationMode, str]] = {
|
||||
OperationMode.STOP: CURRENT_HVAC_OFF,
|
||||
OperationMode.COOLING: CURRENT_HVAC_COOL,
|
||||
OperationMode.HEATING: CURRENT_HVAC_HEAT,
|
||||
OperationMode.FAN: CURRENT_HVAC_FAN,
|
||||
OperationMode.DRY: CURRENT_HVAC_DRY,
|
||||
HVAC_ACTION_LIB_TO_HASS: Final[dict[OperationMode, HVACAction]] = {
|
||||
OperationMode.STOP: HVACAction.OFF,
|
||||
OperationMode.COOLING: HVACAction.COOLING,
|
||||
OperationMode.HEATING: HVACAction.HEATING,
|
||||
OperationMode.FAN: HVACAction.FAN,
|
||||
OperationMode.DRY: HVACAction.DRYING,
|
||||
}
|
||||
HVAC_MODE_LIB_TO_HASS: Final[dict[OperationMode, str]] = {
|
||||
OperationMode.STOP: HVAC_MODE_OFF,
|
||||
OperationMode.COOLING: HVAC_MODE_COOL,
|
||||
OperationMode.HEATING: HVAC_MODE_HEAT,
|
||||
OperationMode.FAN: HVAC_MODE_FAN_ONLY,
|
||||
OperationMode.DRY: HVAC_MODE_DRY,
|
||||
OperationMode.AUTO: HVAC_MODE_HEAT_COOL,
|
||||
HVAC_MODE_LIB_TO_HASS: Final[dict[OperationMode, HVACMode]] = {
|
||||
OperationMode.STOP: HVACMode.OFF,
|
||||
OperationMode.COOLING: HVACMode.COOL,
|
||||
OperationMode.HEATING: HVACMode.HEAT,
|
||||
OperationMode.FAN: HVACMode.FAN_ONLY,
|
||||
OperationMode.DRY: HVACMode.DRY,
|
||||
OperationMode.AUTO: HVACMode.HEAT_COOL,
|
||||
}
|
||||
HVAC_MODE_HASS_TO_LIB: Final[dict[str, OperationMode]] = {
|
||||
HVAC_MODE_OFF: OperationMode.STOP,
|
||||
HVAC_MODE_COOL: OperationMode.COOLING,
|
||||
HVAC_MODE_HEAT: OperationMode.HEATING,
|
||||
HVAC_MODE_FAN_ONLY: OperationMode.FAN,
|
||||
HVAC_MODE_DRY: OperationMode.DRY,
|
||||
HVAC_MODE_HEAT_COOL: OperationMode.AUTO,
|
||||
HVAC_MODE_HASS_TO_LIB: Final[dict[HVACMode, OperationMode]] = {
|
||||
HVACMode.OFF: OperationMode.STOP,
|
||||
HVACMode.COOL: OperationMode.COOLING,
|
||||
HVACMode.HEAT: OperationMode.HEATING,
|
||||
HVACMode.FAN_ONLY: OperationMode.FAN,
|
||||
HVACMode.DRY: OperationMode.DRY,
|
||||
HVACMode.HEAT_COOL: OperationMode.AUTO,
|
||||
}
|
||||
|
||||
|
||||
|
@ -154,10 +144,10 @@ class AirzoneClimate(AirzoneZoneEntity, ClimateEntity):
|
|||
}
|
||||
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."""
|
||||
params = {}
|
||||
if hvac_mode == HVAC_MODE_OFF:
|
||||
if hvac_mode == HVACMode.OFF:
|
||||
params[API_ON] = 0
|
||||
else:
|
||||
mode = HVAC_MODE_HASS_TO_LIB[hvac_mode]
|
||||
|
@ -195,8 +185,8 @@ class AirzoneClimate(AirzoneZoneEntity, ClimateEntity):
|
|||
if self.get_airzone_value(AZD_DEMAND):
|
||||
self._attr_hvac_action = HVAC_ACTION_LIB_TO_HASS[mode]
|
||||
else:
|
||||
self._attr_hvac_action = CURRENT_HVAC_IDLE
|
||||
self._attr_hvac_action = HVACAction.IDLE
|
||||
else:
|
||||
self._attr_hvac_action = CURRENT_HVAC_OFF
|
||||
self._attr_hvac_mode = HVAC_MODE_OFF
|
||||
self._attr_hvac_action = HVACAction.OFF
|
||||
self._attr_hvac_mode = HVACMode.OFF
|
||||
self._attr_target_temperature = self.get_airzone_value(AZD_TEMP_SET)
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
"""The climate tests for the Airzone platform."""
|
||||
|
||||
from unittest.mock import patch
|
||||
|
||||
from aioairzone.common import OperationMode
|
||||
|
@ -24,17 +23,11 @@ from homeassistant.components.climate.const import (
|
|||
ATTR_MAX_TEMP,
|
||||
ATTR_MIN_TEMP,
|
||||
ATTR_TARGET_TEMP_STEP,
|
||||
CURRENT_HVAC_HEAT,
|
||||
CURRENT_HVAC_IDLE,
|
||||
CURRENT_HVAC_OFF,
|
||||
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_TEMPERATURE,
|
||||
HVACAction,
|
||||
HVACMode,
|
||||
)
|
||||
from homeassistant.const import (
|
||||
ATTR_ENTITY_ID,
|
||||
|
@ -54,16 +47,16 @@ async def test_airzone_create_climates(hass: HomeAssistant) -> None:
|
|||
await async_init_integration(hass)
|
||||
|
||||
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_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) == [
|
||||
HVAC_MODE_OFF,
|
||||
HVAC_MODE_FAN_ONLY,
|
||||
HVAC_MODE_COOL,
|
||||
HVAC_MODE_HEAT,
|
||||
HVAC_MODE_DRY,
|
||||
HVACMode.OFF,
|
||||
HVACMode.FAN_ONLY,
|
||||
HVACMode.COOL,
|
||||
HVACMode.HEAT,
|
||||
HVACMode.DRY,
|
||||
]
|
||||
assert state.attributes.get(ATTR_MAX_TEMP) == 30
|
||||
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
|
||||
|
||||
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_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) == [
|
||||
HVAC_MODE_OFF,
|
||||
HVAC_MODE_FAN_ONLY,
|
||||
HVAC_MODE_COOL,
|
||||
HVAC_MODE_HEAT,
|
||||
HVAC_MODE_DRY,
|
||||
HVACMode.OFF,
|
||||
HVACMode.FAN_ONLY,
|
||||
HVACMode.COOL,
|
||||
HVACMode.HEAT,
|
||||
HVACMode.DRY,
|
||||
]
|
||||
assert state.attributes.get(ATTR_MAX_TEMP) == 30
|
||||
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
|
||||
|
||||
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_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) == [
|
||||
HVAC_MODE_OFF,
|
||||
HVAC_MODE_FAN_ONLY,
|
||||
HVAC_MODE_COOL,
|
||||
HVAC_MODE_HEAT,
|
||||
HVAC_MODE_DRY,
|
||||
HVACMode.OFF,
|
||||
HVACMode.FAN_ONLY,
|
||||
HVACMode.COOL,
|
||||
HVACMode.HEAT,
|
||||
HVACMode.DRY,
|
||||
]
|
||||
assert state.attributes.get(ATTR_MAX_TEMP) == 30
|
||||
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
|
||||
|
||||
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_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) == [
|
||||
HVAC_MODE_OFF,
|
||||
HVAC_MODE_FAN_ONLY,
|
||||
HVAC_MODE_COOL,
|
||||
HVAC_MODE_HEAT,
|
||||
HVAC_MODE_DRY,
|
||||
HVACMode.OFF,
|
||||
HVACMode.FAN_ONLY,
|
||||
HVACMode.COOL,
|
||||
HVACMode.HEAT,
|
||||
HVACMode.DRY,
|
||||
]
|
||||
assert state.attributes.get(ATTR_MAX_TEMP) == 30
|
||||
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
|
||||
|
||||
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_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) == [
|
||||
HVAC_MODE_OFF,
|
||||
HVAC_MODE_FAN_ONLY,
|
||||
HVAC_MODE_COOL,
|
||||
HVAC_MODE_HEAT,
|
||||
HVAC_MODE_DRY,
|
||||
HVACMode.OFF,
|
||||
HVACMode.FAN_ONLY,
|
||||
HVACMode.COOL,
|
||||
HVACMode.HEAT,
|
||||
HVACMode.DRY,
|
||||
]
|
||||
assert state.attributes.get(ATTR_MAX_TEMP) == 30
|
||||
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")
|
||||
assert state.state == HVAC_MODE_HEAT
|
||||
assert state.state == HVACMode.HEAT
|
||||
|
||||
HVAC_MOCK = {
|
||||
API_DATA: [
|
||||
|
@ -192,7 +185,7 @@ async def test_airzone_climate_turn_on_off(hass: HomeAssistant) -> None:
|
|||
)
|
||||
|
||||
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:
|
||||
|
@ -219,13 +212,13 @@ async def test_airzone_climate_set_hvac_mode(hass: HomeAssistant) -> None:
|
|||
SERVICE_SET_HVAC_MODE,
|
||||
{
|
||||
ATTR_ENTITY_ID: "climate.salon",
|
||||
ATTR_HVAC_MODE: HVAC_MODE_COOL,
|
||||
ATTR_HVAC_MODE: HVACMode.COOL,
|
||||
},
|
||||
blocking=True,
|
||||
)
|
||||
|
||||
state = hass.states.get("climate.salon")
|
||||
assert state.state == HVAC_MODE_COOL
|
||||
assert state.state == HVACMode.COOL
|
||||
|
||||
HVAC_MOCK_2 = {
|
||||
API_DATA: [
|
||||
|
@ -245,13 +238,13 @@ async def test_airzone_climate_set_hvac_mode(hass: HomeAssistant) -> None:
|
|||
SERVICE_SET_HVAC_MODE,
|
||||
{
|
||||
ATTR_ENTITY_ID: "climate.salon",
|
||||
ATTR_HVAC_MODE: HVAC_MODE_OFF,
|
||||
ATTR_HVAC_MODE: HVACMode.OFF,
|
||||
},
|
||||
blocking=True,
|
||||
)
|
||||
|
||||
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:
|
||||
|
@ -278,13 +271,13 @@ async def test_airzone_climate_set_hvac_slave_error(hass: HomeAssistant) -> None
|
|||
SERVICE_SET_HVAC_MODE,
|
||||
{
|
||||
ATTR_ENTITY_ID: "climate.dorm_2",
|
||||
ATTR_HVAC_MODE: HVAC_MODE_COOL,
|
||||
ATTR_HVAC_MODE: HVACMode.COOL,
|
||||
},
|
||||
blocking=True,
|
||||
)
|
||||
|
||||
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:
|
||||
|
|
Loading…
Reference in New Issue