mirror of
https://github.com/home-assistant/core.git
synced 2025-07-15 17:27:10 +00:00
Use climate enums in isy994 (#70678)
This commit is contained in:
parent
62c8687a86
commit
d288c569fa
@ -15,7 +15,7 @@ from pyisy.constants import (
|
||||
)
|
||||
from pyisy.nodes import Node
|
||||
|
||||
from homeassistant.components.climate import ClimateEntity, ClimateEntityFeature
|
||||
from homeassistant.components.climate import ClimateEntity
|
||||
from homeassistant.components.climate.const import (
|
||||
ATTR_TARGET_TEMP_HIGH,
|
||||
ATTR_TARGET_TEMP_LOW,
|
||||
@ -23,9 +23,9 @@ from homeassistant.components.climate.const import (
|
||||
FAN_AUTO,
|
||||
FAN_OFF,
|
||||
FAN_ON,
|
||||
HVAC_MODE_COOL,
|
||||
HVAC_MODE_HEAT,
|
||||
HVAC_MODE_OFF,
|
||||
ClimateEntityFeature,
|
||||
HVACAction,
|
||||
HVACMode,
|
||||
)
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import (
|
||||
@ -74,6 +74,7 @@ async def async_setup_entry(
|
||||
class ISYThermostatEntity(ISYNodeEntity, ClimateEntity):
|
||||
"""Representation of an ISY994 thermostat entity."""
|
||||
|
||||
_attr_hvac_modes = ISY_HVAC_MODES
|
||||
_attr_supported_features = (
|
||||
ClimateEntityFeature.FAN_MODE
|
||||
| ClimateEntityFeature.TARGET_TEMPERATURE
|
||||
@ -118,10 +119,10 @@ class ISYThermostatEntity(ISYNodeEntity, ClimateEntity):
|
||||
return int(humidity.value)
|
||||
|
||||
@property
|
||||
def hvac_mode(self) -> str:
|
||||
def hvac_mode(self) -> HVACMode:
|
||||
"""Return hvac operation ie. heat, cool mode."""
|
||||
if not (hvac_mode := self._node.aux_properties.get(CMD_CLIMATE_MODE)):
|
||||
return HVAC_MODE_OFF
|
||||
return HVACMode.OFF
|
||||
|
||||
# Which state values used depends on the mode property's UOM:
|
||||
uom = hvac_mode.uom
|
||||
@ -132,15 +133,10 @@ class ISYThermostatEntity(ISYNodeEntity, ClimateEntity):
|
||||
if self._node.protocol == PROTO_INSTEON
|
||||
else UOM_HVAC_MODE_GENERIC
|
||||
)
|
||||
return UOM_TO_STATES[uom].get(hvac_mode.value, HVAC_MODE_OFF)
|
||||
return UOM_TO_STATES[uom].get(hvac_mode.value, HVACMode.OFF)
|
||||
|
||||
@property
|
||||
def hvac_modes(self) -> list[str]:
|
||||
"""Return the list of available hvac operation modes."""
|
||||
return ISY_HVAC_MODES
|
||||
|
||||
@property
|
||||
def hvac_action(self) -> str | None:
|
||||
def hvac_action(self) -> HVACAction | None:
|
||||
"""Return the current running hvac operation if supported."""
|
||||
hvac_action = self._node.aux_properties.get(PROP_HEAT_COOL_STATE)
|
||||
if not hvac_action:
|
||||
@ -162,9 +158,9 @@ class ISYThermostatEntity(ISYNodeEntity, ClimateEntity):
|
||||
@property
|
||||
def target_temperature(self) -> float | None:
|
||||
"""Return the temperature we try to reach."""
|
||||
if self.hvac_mode == HVAC_MODE_COOL:
|
||||
if self.hvac_mode == HVACMode.COOL:
|
||||
return self.target_temperature_high
|
||||
if self.hvac_mode == HVAC_MODE_HEAT:
|
||||
if self.hvac_mode == HVACMode.HEAT:
|
||||
return self.target_temperature_low
|
||||
return None
|
||||
|
||||
@ -203,9 +199,9 @@ class ISYThermostatEntity(ISYNodeEntity, ClimateEntity):
|
||||
target_temp_low = kwargs.get(ATTR_TARGET_TEMP_LOW)
|
||||
target_temp_high = kwargs.get(ATTR_TARGET_TEMP_HIGH)
|
||||
if target_temp is not None:
|
||||
if self.hvac_mode == HVAC_MODE_COOL:
|
||||
if self.hvac_mode == HVACMode.COOL:
|
||||
target_temp_high = target_temp
|
||||
if self.hvac_mode == HVAC_MODE_HEAT:
|
||||
if self.hvac_mode == HVACMode.HEAT:
|
||||
target_temp_low = target_temp
|
||||
if target_temp_low is not None:
|
||||
await self._node.set_climate_setpoint_heat(int(target_temp_low))
|
||||
@ -225,7 +221,7 @@ class ISYThermostatEntity(ISYNodeEntity, ClimateEntity):
|
||||
self._fan_mode = fan_mode
|
||||
self.async_write_ha_state()
|
||||
|
||||
async def async_set_hvac_mode(self, hvac_mode: str) -> None:
|
||||
async def async_set_hvac_mode(self, hvac_mode: HVACMode) -> None:
|
||||
"""Set new target hvac mode."""
|
||||
_LOGGER.debug("Requested operation mode %s", hvac_mode)
|
||||
await self._node.set_climate_mode(HA_HVAC_TO_ISY.get(hvac_mode))
|
||||
|
@ -3,23 +3,14 @@ import logging
|
||||
|
||||
from homeassistant.components.binary_sensor import BinarySensorDeviceClass
|
||||
from homeassistant.components.climate.const import (
|
||||
CURRENT_HVAC_COOL,
|
||||
CURRENT_HVAC_FAN,
|
||||
CURRENT_HVAC_HEAT,
|
||||
CURRENT_HVAC_IDLE,
|
||||
FAN_AUTO,
|
||||
FAN_HIGH,
|
||||
FAN_MEDIUM,
|
||||
FAN_ON,
|
||||
HVAC_MODE_AUTO,
|
||||
HVAC_MODE_COOL,
|
||||
HVAC_MODE_DRY,
|
||||
HVAC_MODE_FAN_ONLY,
|
||||
HVAC_MODE_HEAT,
|
||||
HVAC_MODE_HEAT_COOL,
|
||||
HVAC_MODE_OFF,
|
||||
PRESET_AWAY,
|
||||
PRESET_BOOST,
|
||||
HVACAction,
|
||||
HVACMode,
|
||||
)
|
||||
from homeassistant.const import (
|
||||
CONCENTRATION_PARTS_PER_MILLION,
|
||||
@ -465,38 +456,38 @@ UOM_TO_STATES = {
|
||||
27: "factory reset",
|
||||
},
|
||||
UOM_HVAC_ACTIONS: { # Thermostat Heat/Cool State
|
||||
0: CURRENT_HVAC_IDLE,
|
||||
1: CURRENT_HVAC_HEAT,
|
||||
2: CURRENT_HVAC_COOL,
|
||||
3: CURRENT_HVAC_FAN,
|
||||
4: CURRENT_HVAC_HEAT, # Pending Heat
|
||||
5: CURRENT_HVAC_COOL, # Pending Cool
|
||||
0: HVACAction.IDLE.value,
|
||||
1: HVACAction.HEATING.value,
|
||||
2: HVACAction.COOLING.value,
|
||||
3: HVACAction.FAN.value,
|
||||
4: HVACAction.HEATING.value, # Pending Heat
|
||||
5: HVACAction.COOLING.value, # Pending Cool
|
||||
# >6 defined in ISY but not implemented, leaving for future expanision.
|
||||
6: CURRENT_HVAC_IDLE,
|
||||
7: CURRENT_HVAC_HEAT,
|
||||
8: CURRENT_HVAC_HEAT,
|
||||
9: CURRENT_HVAC_COOL,
|
||||
10: CURRENT_HVAC_HEAT,
|
||||
11: CURRENT_HVAC_HEAT,
|
||||
6: HVACAction.IDLE.value,
|
||||
7: HVACAction.HEATING.value,
|
||||
8: HVACAction.HEATING.value,
|
||||
9: HVACAction.COOLING.value,
|
||||
10: HVACAction.HEATING.value,
|
||||
11: HVACAction.HEATING.value,
|
||||
},
|
||||
UOM_HVAC_MODE_GENERIC: { # Thermostat Mode
|
||||
0: HVAC_MODE_OFF,
|
||||
1: HVAC_MODE_HEAT,
|
||||
2: HVAC_MODE_COOL,
|
||||
3: HVAC_MODE_AUTO,
|
||||
0: HVACMode.OFF.value,
|
||||
1: HVACMode.HEAT.value,
|
||||
2: HVACMode.COOL.value,
|
||||
3: HVACMode.AUTO.value,
|
||||
4: PRESET_BOOST,
|
||||
5: "resume",
|
||||
6: HVAC_MODE_FAN_ONLY,
|
||||
6: HVACMode.FAN_ONLY.value,
|
||||
7: "furnace",
|
||||
8: HVAC_MODE_DRY,
|
||||
8: HVACMode.DRY.value,
|
||||
9: "moist air",
|
||||
10: "auto changeover",
|
||||
11: "energy save heat",
|
||||
12: "energy save cool",
|
||||
13: PRESET_AWAY,
|
||||
14: HVAC_MODE_AUTO,
|
||||
15: HVAC_MODE_AUTO,
|
||||
16: HVAC_MODE_AUTO,
|
||||
14: HVACMode.AUTO.value,
|
||||
15: HVACMode.AUTO.value,
|
||||
16: HVACMode.AUTO.value,
|
||||
},
|
||||
"68": { # Thermostat Fan Mode
|
||||
0: FAN_AUTO,
|
||||
@ -589,14 +580,14 @@ UOM_TO_STATES = {
|
||||
}, # 1-99 are percentage open
|
||||
},
|
||||
UOM_HVAC_MODE_INSTEON: { # Insteon Thermostat Mode
|
||||
0: HVAC_MODE_OFF,
|
||||
1: HVAC_MODE_HEAT,
|
||||
2: HVAC_MODE_COOL,
|
||||
3: HVAC_MODE_HEAT_COOL,
|
||||
4: HVAC_MODE_FAN_ONLY,
|
||||
5: HVAC_MODE_AUTO, # Program Auto
|
||||
6: HVAC_MODE_AUTO, # Program Heat-Set @ Local Device Only
|
||||
7: HVAC_MODE_AUTO, # Program Cool-Set @ Local Device Only
|
||||
0: HVACMode.OFF.value,
|
||||
1: HVACMode.HEAT.value,
|
||||
2: HVACMode.COOL.value,
|
||||
3: HVACMode.HEAT_COOL.value,
|
||||
4: HVACMode.FAN_ONLY.value,
|
||||
5: HVACMode.AUTO.value, # Program Auto
|
||||
6: HVACMode.AUTO.value, # Program Heat-Set @ Local Device Only
|
||||
7: HVACMode.AUTO.value, # Program Cool-Set @ Local Device Only
|
||||
},
|
||||
UOM_FAN_MODES: {7: FAN_ON, 8: FAN_AUTO}, # Insteon Thermostat Fan Mode
|
||||
"115": { # Most recent On style action taken for lamp control
|
||||
@ -617,21 +608,21 @@ UOM_TO_STATES = {
|
||||
}
|
||||
|
||||
ISY_HVAC_MODES = [
|
||||
HVAC_MODE_OFF,
|
||||
HVAC_MODE_HEAT,
|
||||
HVAC_MODE_COOL,
|
||||
HVAC_MODE_HEAT_COOL,
|
||||
HVAC_MODE_AUTO,
|
||||
HVAC_MODE_FAN_ONLY,
|
||||
HVACMode.OFF,
|
||||
HVACMode.HEAT,
|
||||
HVACMode.COOL,
|
||||
HVACMode.HEAT_COOL,
|
||||
HVACMode.AUTO,
|
||||
HVACMode.FAN_ONLY,
|
||||
]
|
||||
|
||||
HA_HVAC_TO_ISY = {
|
||||
HVAC_MODE_OFF: "off",
|
||||
HVAC_MODE_HEAT: "heat",
|
||||
HVAC_MODE_COOL: "cool",
|
||||
HVAC_MODE_HEAT_COOL: "auto",
|
||||
HVAC_MODE_FAN_ONLY: "fan_only",
|
||||
HVAC_MODE_AUTO: "program_auto",
|
||||
HVACMode.OFF: "off",
|
||||
HVACMode.HEAT: "heat",
|
||||
HVACMode.COOL: "cool",
|
||||
HVACMode.HEAT_COOL: "auto",
|
||||
HVACMode.FAN_ONLY: "fan_only",
|
||||
HVACMode.AUTO: "program_auto",
|
||||
}
|
||||
|
||||
HA_FAN_TO_ISY = {FAN_ON: "on", FAN_AUTO: "auto"}
|
||||
|
Loading…
x
Reference in New Issue
Block a user