Use climate enums in advantage_air (#70621)

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

View File

@ -3,19 +3,14 @@ from __future__ import annotations
import logging import logging
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 (
FAN_AUTO, FAN_AUTO,
FAN_HIGH, FAN_HIGH,
FAN_LOW, FAN_LOW,
FAN_MEDIUM, FAN_MEDIUM,
HVAC_MODE_AUTO, ClimateEntityFeature,
HVAC_MODE_COOL, HVACMode,
HVAC_MODE_DRY,
HVAC_MODE_FAN_ONLY,
HVAC_MODE_HEAT,
HVAC_MODE_HEAT_COOL,
HVAC_MODE_OFF,
) )
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
@ -33,20 +28,20 @@ from .const import (
from .entity import AdvantageAirEntity from .entity import AdvantageAirEntity
ADVANTAGE_AIR_HVAC_MODES = { ADVANTAGE_AIR_HVAC_MODES = {
"heat": HVAC_MODE_HEAT, "heat": HVACMode.HEAT,
"cool": HVAC_MODE_COOL, "cool": HVACMode.COOL,
"vent": HVAC_MODE_FAN_ONLY, "vent": HVACMode.FAN_ONLY,
"dry": HVAC_MODE_DRY, "dry": HVACMode.DRY,
"myauto": HVAC_MODE_AUTO, "myauto": HVACMode.AUTO,
} }
HASS_HVAC_MODES = {v: k for k, v in ADVANTAGE_AIR_HVAC_MODES.items()} HASS_HVAC_MODES = {v: k for k, v in ADVANTAGE_AIR_HVAC_MODES.items()}
AC_HVAC_MODES = [ AC_HVAC_MODES = [
HVAC_MODE_OFF, HVACMode.OFF,
HVAC_MODE_COOL, HVACMode.COOL,
HVAC_MODE_HEAT, HVACMode.HEAT,
HVAC_MODE_FAN_ONLY, HVACMode.FAN_ONLY,
HVAC_MODE_DRY, HVACMode.DRY,
] ]
ADVANTAGE_AIR_FAN_MODES = { ADVANTAGE_AIR_FAN_MODES = {
@ -59,7 +54,7 @@ HASS_FAN_MODES = {v: k for k, v in ADVANTAGE_AIR_FAN_MODES.items()}
FAN_SPEEDS = {FAN_LOW: 30, FAN_MEDIUM: 60, FAN_HIGH: 100} FAN_SPEEDS = {FAN_LOW: 30, FAN_MEDIUM: 60, FAN_HIGH: 100}
ADVANTAGE_AIR_SERVICE_SET_MYZONE = "set_myzone" ADVANTAGE_AIR_SERVICE_SET_MYZONE = "set_myzone"
ZONE_HVAC_MODES = [HVAC_MODE_OFF, HVAC_MODE_HEAT_COOL] ZONE_HVAC_MODES = [HVACMode.OFF, HVACMode.HEAT_COOL]
PARALLEL_UPDATES = 0 PARALLEL_UPDATES = 0
@ -116,7 +111,7 @@ class AdvantageAirAC(AdvantageAirClimateEntity):
self._attr_name = self._ac["name"] self._attr_name = self._ac["name"]
self._attr_unique_id = f'{self.coordinator.data["system"]["rid"]}-{ac_key}' self._attr_unique_id = f'{self.coordinator.data["system"]["rid"]}-{ac_key}'
if self._ac.get("myAutoModeEnabled"): if self._ac.get("myAutoModeEnabled"):
self._attr_hvac_modes = AC_HVAC_MODES + [HVAC_MODE_AUTO] self._attr_hvac_modes = AC_HVAC_MODES + [HVACMode.AUTO]
@property @property
def target_temperature(self): def target_temperature(self):
@ -128,7 +123,7 @@ class AdvantageAirAC(AdvantageAirClimateEntity):
"""Return the current HVAC modes.""" """Return the current HVAC modes."""
if self._ac["state"] == ADVANTAGE_AIR_STATE_ON: if self._ac["state"] == ADVANTAGE_AIR_STATE_ON:
return ADVANTAGE_AIR_HVAC_MODES.get(self._ac["mode"]) return ADVANTAGE_AIR_HVAC_MODES.get(self._ac["mode"])
return HVAC_MODE_OFF return HVACMode.OFF
@property @property
def fan_mode(self): def fan_mode(self):
@ -137,7 +132,7 @@ class AdvantageAirAC(AdvantageAirClimateEntity):
async def async_set_hvac_mode(self, hvac_mode): async def async_set_hvac_mode(self, hvac_mode):
"""Set the HVAC Mode and State.""" """Set the HVAC Mode and State."""
if hvac_mode == HVAC_MODE_OFF: if hvac_mode == HVACMode.OFF:
await self.async_change( await self.async_change(
{self.ac_key: {"info": {"state": ADVANTAGE_AIR_STATE_OFF}}} {self.ac_key: {"info": {"state": ADVANTAGE_AIR_STATE_OFF}}}
) )
@ -183,8 +178,8 @@ class AdvantageAirZone(AdvantageAirClimateEntity):
def hvac_mode(self): def hvac_mode(self):
"""Return the current state as HVAC mode.""" """Return the current state as HVAC mode."""
if self._zone["state"] == ADVANTAGE_AIR_STATE_OPEN: if self._zone["state"] == ADVANTAGE_AIR_STATE_OPEN:
return HVAC_MODE_HEAT_COOL return HVACMode.HEAT_COOL
return HVAC_MODE_OFF return HVACMode.OFF
@property @property
def current_temperature(self): def current_temperature(self):
@ -198,7 +193,7 @@ class AdvantageAirZone(AdvantageAirClimateEntity):
async def async_set_hvac_mode(self, hvac_mode): async def async_set_hvac_mode(self, hvac_mode):
"""Set the HVAC Mode and State.""" """Set the HVAC Mode and State."""
if hvac_mode == HVAC_MODE_OFF: if hvac_mode == HVACMode.OFF:
await self.async_change( await self.async_change(
{ {
self.ac_key: { self.ac_key: {

View File

@ -1,5 +1,4 @@
"""Test the Advantage Air Climate Platform.""" """Test the Advantage Air Climate Platform."""
from json import loads from json import loads
from homeassistant.components.advantage_air.climate import ( from homeassistant.components.advantage_air.climate import (
@ -17,11 +16,10 @@ from homeassistant.components.climate.const import (
ATTR_HVAC_MODE, ATTR_HVAC_MODE,
DOMAIN as CLIMATE_DOMAIN, DOMAIN as CLIMATE_DOMAIN,
FAN_LOW, FAN_LOW,
HVAC_MODE_FAN_ONLY,
HVAC_MODE_OFF,
SERVICE_SET_FAN_MODE, SERVICE_SET_FAN_MODE,
SERVICE_SET_HVAC_MODE, SERVICE_SET_HVAC_MODE,
SERVICE_SET_TEMPERATURE, SERVICE_SET_TEMPERATURE,
HVACMode,
) )
from homeassistant.const import ATTR_ENTITY_ID, ATTR_TEMPERATURE from homeassistant.const import ATTR_ENTITY_ID, ATTR_TEMPERATURE
from homeassistant.helpers import entity_registry as er from homeassistant.helpers import entity_registry as er
@ -56,7 +54,7 @@ async def test_climate_async_setup_entry(hass, aioclient_mock):
entity_id = "climate.ac_one" entity_id = "climate.ac_one"
state = hass.states.get(entity_id) state = hass.states.get(entity_id)
assert state assert state
assert state.state == HVAC_MODE_FAN_ONLY assert state.state == HVACMode.FAN_ONLY
assert state.attributes.get("min_temp") == 16 assert state.attributes.get("min_temp") == 16
assert state.attributes.get("max_temp") == 32 assert state.attributes.get("max_temp") == 32
assert state.attributes.get("temperature") == 24 assert state.attributes.get("temperature") == 24
@ -69,7 +67,7 @@ async def test_climate_async_setup_entry(hass, aioclient_mock):
await hass.services.async_call( await hass.services.async_call(
CLIMATE_DOMAIN, CLIMATE_DOMAIN,
SERVICE_SET_HVAC_MODE, SERVICE_SET_HVAC_MODE,
{ATTR_ENTITY_ID: [entity_id], ATTR_HVAC_MODE: HVAC_MODE_FAN_ONLY}, {ATTR_ENTITY_ID: [entity_id], ATTR_HVAC_MODE: HVACMode.FAN_ONLY},
blocking=True, blocking=True,
) )
assert len(aioclient_mock.mock_calls) == 3 assert len(aioclient_mock.mock_calls) == 3
@ -77,14 +75,14 @@ async def test_climate_async_setup_entry(hass, aioclient_mock):
assert aioclient_mock.mock_calls[-2][1].path == "/setAircon" assert aioclient_mock.mock_calls[-2][1].path == "/setAircon"
data = loads(aioclient_mock.mock_calls[-2][1].query["json"]) data = loads(aioclient_mock.mock_calls[-2][1].query["json"])
assert data["ac1"]["info"]["state"] == ADVANTAGE_AIR_STATE_ON assert data["ac1"]["info"]["state"] == ADVANTAGE_AIR_STATE_ON
assert data["ac1"]["info"]["mode"] == HASS_HVAC_MODES[HVAC_MODE_FAN_ONLY] assert data["ac1"]["info"]["mode"] == HASS_HVAC_MODES[HVACMode.FAN_ONLY]
assert aioclient_mock.mock_calls[-1][0] == "GET" assert aioclient_mock.mock_calls[-1][0] == "GET"
assert aioclient_mock.mock_calls[-1][1].path == "/getSystemData" assert aioclient_mock.mock_calls[-1][1].path == "/getSystemData"
await hass.services.async_call( await hass.services.async_call(
CLIMATE_DOMAIN, CLIMATE_DOMAIN,
SERVICE_SET_HVAC_MODE, SERVICE_SET_HVAC_MODE,
{ATTR_ENTITY_ID: [entity_id], ATTR_HVAC_MODE: HVAC_MODE_OFF}, {ATTR_ENTITY_ID: [entity_id], ATTR_HVAC_MODE: HVACMode.OFF},
blocking=True, blocking=True,
) )
assert len(aioclient_mock.mock_calls) == 5 assert len(aioclient_mock.mock_calls) == 5
@ -139,7 +137,7 @@ async def test_climate_async_setup_entry(hass, aioclient_mock):
await hass.services.async_call( await hass.services.async_call(
CLIMATE_DOMAIN, CLIMATE_DOMAIN,
SERVICE_SET_HVAC_MODE, SERVICE_SET_HVAC_MODE,
{ATTR_ENTITY_ID: [entity_id], ATTR_HVAC_MODE: HVAC_MODE_FAN_ONLY}, {ATTR_ENTITY_ID: [entity_id], ATTR_HVAC_MODE: HVACMode.FAN_ONLY},
blocking=True, blocking=True,
) )
assert len(aioclient_mock.mock_calls) == 11 assert len(aioclient_mock.mock_calls) == 11
@ -151,7 +149,7 @@ async def test_climate_async_setup_entry(hass, aioclient_mock):
await hass.services.async_call( await hass.services.async_call(
CLIMATE_DOMAIN, CLIMATE_DOMAIN,
SERVICE_SET_HVAC_MODE, SERVICE_SET_HVAC_MODE,
{ATTR_ENTITY_ID: [entity_id], ATTR_HVAC_MODE: HVAC_MODE_OFF}, {ATTR_ENTITY_ID: [entity_id], ATTR_HVAC_MODE: HVACMode.OFF},
blocking=True, blocking=True,
) )
assert len(aioclient_mock.mock_calls) == 13 assert len(aioclient_mock.mock_calls) == 13