Use climate enums in nexia (#70725)
This commit is contained in:
parent
dbf567d664
commit
7fb8bb7769
2 changed files with 29 additions and 36 deletions
|
@ -18,21 +18,15 @@ from nexia.util import find_humidity_setpoint
|
|||
from nexia.zone import NexiaThermostatZone
|
||||
import voluptuous as vol
|
||||
|
||||
from homeassistant.components.climate import ClimateEntity, ClimateEntityFeature
|
||||
from homeassistant.components.climate import ClimateEntity
|
||||
from homeassistant.components.climate.const import (
|
||||
ATTR_HUMIDITY,
|
||||
ATTR_HVAC_MODE,
|
||||
ATTR_TARGET_TEMP_HIGH,
|
||||
ATTR_TARGET_TEMP_LOW,
|
||||
CURRENT_HVAC_COOL,
|
||||
CURRENT_HVAC_HEAT,
|
||||
CURRENT_HVAC_IDLE,
|
||||
CURRENT_HVAC_OFF,
|
||||
HVAC_MODE_AUTO,
|
||||
HVAC_MODE_COOL,
|
||||
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, TEMP_CELSIUS, TEMP_FAHRENHEIT
|
||||
|
@ -75,7 +69,7 @@ SET_HVAC_RUN_MODE_SCHEMA = vol.All(
|
|||
{
|
||||
vol.Optional(ATTR_RUN_MODE): vol.In([HOLD_PERMANENT, HOLD_RESUME_SCHEDULE]),
|
||||
vol.Optional(ATTR_HVAC_MODE): vol.In(
|
||||
[HVAC_MODE_HEAT, HVAC_MODE_COOL, HVAC_MODE_AUTO]
|
||||
[HVACMode.HEAT, HVACMode.COOL, HVACMode.AUTO]
|
||||
),
|
||||
}
|
||||
),
|
||||
|
@ -91,22 +85,22 @@ SET_HVAC_RUN_MODE_SCHEMA = vol.All(
|
|||
#
|
||||
#
|
||||
HA_TO_NEXIA_HVAC_MODE_MAP = {
|
||||
HVAC_MODE_HEAT: OPERATION_MODE_HEAT,
|
||||
HVAC_MODE_COOL: OPERATION_MODE_COOL,
|
||||
HVAC_MODE_HEAT_COOL: OPERATION_MODE_AUTO,
|
||||
HVAC_MODE_AUTO: OPERATION_MODE_AUTO,
|
||||
HVAC_MODE_OFF: OPERATION_MODE_OFF,
|
||||
HVACMode.HEAT: OPERATION_MODE_HEAT,
|
||||
HVACMode.COOL: OPERATION_MODE_COOL,
|
||||
HVACMode.HEAT_COOL: OPERATION_MODE_AUTO,
|
||||
HVACMode.AUTO: OPERATION_MODE_AUTO,
|
||||
HVACMode.OFF: OPERATION_MODE_OFF,
|
||||
}
|
||||
NEXIA_TO_HA_HVAC_MODE_MAP = {
|
||||
value: key for key, value in HA_TO_NEXIA_HVAC_MODE_MAP.items()
|
||||
}
|
||||
|
||||
HVAC_MODES = [
|
||||
HVAC_MODE_OFF,
|
||||
HVAC_MODE_AUTO,
|
||||
HVAC_MODE_HEAT_COOL,
|
||||
HVAC_MODE_HEAT,
|
||||
HVAC_MODE_COOL,
|
||||
HVACMode.OFF,
|
||||
HVACMode.AUTO,
|
||||
HVACMode.HEAT_COOL,
|
||||
HVACMode.HEAT,
|
||||
HVACMode.COOL,
|
||||
]
|
||||
|
||||
NEXIA_SUPPORTED = (
|
||||
|
@ -275,25 +269,25 @@ class NexiaZone(NexiaThermostatZoneEntity, ClimateEntity):
|
|||
return self._zone.get_heating_setpoint()
|
||||
|
||||
@property
|
||||
def hvac_action(self) -> str:
|
||||
def hvac_action(self) -> HVACAction:
|
||||
"""Operation ie. heat, cool, idle."""
|
||||
system_status = self._thermostat.get_system_status()
|
||||
zone_called = self._zone.is_calling()
|
||||
|
||||
if self._zone.get_requested_mode() == OPERATION_MODE_OFF:
|
||||
return CURRENT_HVAC_OFF
|
||||
return HVACAction.OFF
|
||||
if not zone_called:
|
||||
return CURRENT_HVAC_IDLE
|
||||
return HVACAction.IDLE
|
||||
if system_status == SYSTEM_STATUS_COOL:
|
||||
return CURRENT_HVAC_COOL
|
||||
return HVACAction.COOLING
|
||||
if system_status == SYSTEM_STATUS_HEAT:
|
||||
return CURRENT_HVAC_HEAT
|
||||
return HVACAction.HEATING
|
||||
if system_status == SYSTEM_STATUS_IDLE:
|
||||
return CURRENT_HVAC_IDLE
|
||||
return CURRENT_HVAC_IDLE
|
||||
return HVACAction.IDLE
|
||||
return HVACAction.IDLE
|
||||
|
||||
@property
|
||||
def hvac_mode(self):
|
||||
def hvac_mode(self) -> HVACMode:
|
||||
"""Return current mode, as the user-visible name."""
|
||||
mode = self._zone.get_requested_mode()
|
||||
hold = self._zone.is_in_permanent_hold()
|
||||
|
@ -304,7 +298,7 @@ class NexiaZone(NexiaThermostatZoneEntity, ClimateEntity):
|
|||
# heating and cooling to the
|
||||
# temp range.
|
||||
if hold and mode == OPERATION_MODE_AUTO:
|
||||
return HVAC_MODE_HEAT_COOL
|
||||
return HVACMode.HEAT_COOL
|
||||
|
||||
return NEXIA_TO_HA_HVAC_MODE_MAP[mode]
|
||||
|
||||
|
@ -406,9 +400,9 @@ class NexiaZone(NexiaThermostatZoneEntity, ClimateEntity):
|
|||
self.set_hvac_mode(OPERATION_MODE_AUTO)
|
||||
self._signal_zone_update()
|
||||
|
||||
def set_hvac_mode(self, hvac_mode: str) -> None:
|
||||
def set_hvac_mode(self, hvac_mode: HVACMode) -> None:
|
||||
"""Set the system mode (Auto, Heat_Cool, Cool, Heat, etc)."""
|
||||
if hvac_mode == HVAC_MODE_AUTO:
|
||||
if hvac_mode == HVACMode.AUTO:
|
||||
self._zone.call_return_to_schedule()
|
||||
self._zone.set_mode(mode=OPERATION_MODE_AUTO)
|
||||
else:
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
"""The lock tests for the august platform."""
|
||||
|
||||
from homeassistant.components.climate.const import HVAC_MODE_HEAT_COOL
|
||||
from homeassistant.components.climate.const import HVACMode
|
||||
|
||||
from .util import async_init_integration
|
||||
|
||||
|
@ -11,7 +10,7 @@ async def test_climate_zones(hass):
|
|||
await async_init_integration(hass)
|
||||
|
||||
state = hass.states.get("climate.nick_office")
|
||||
assert state.state == HVAC_MODE_HEAT_COOL
|
||||
assert state.state == HVACMode.HEAT_COOL
|
||||
expected_attributes = {
|
||||
"attribution": "Data provided by mynexia.com",
|
||||
"current_humidity": 52.0,
|
||||
|
@ -45,7 +44,7 @@ async def test_climate_zones(hass):
|
|||
)
|
||||
|
||||
state = hass.states.get("climate.kitchen")
|
||||
assert state.state == HVAC_MODE_HEAT_COOL
|
||||
assert state.state == HVACMode.HEAT_COOL
|
||||
|
||||
expected_attributes = {
|
||||
"attribution": "Data provided by mynexia.com",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue