mirror of
https://github.com/home-assistant/core.git
synced 2025-07-27 15:17:35 +00:00
Use climate enums in insteon (#70673)
This commit is contained in:
parent
073833fcec
commit
7cbe56dcdf
@ -4,21 +4,16 @@ from __future__ import annotations
|
|||||||
from pyinsteon.constants import ThermostatMode
|
from pyinsteon.constants import ThermostatMode
|
||||||
from pyinsteon.operating_flag import CELSIUS
|
from pyinsteon.operating_flag import CELSIUS
|
||||||
|
|
||||||
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 (
|
||||||
ATTR_TARGET_TEMP_HIGH,
|
ATTR_TARGET_TEMP_HIGH,
|
||||||
ATTR_TARGET_TEMP_LOW,
|
ATTR_TARGET_TEMP_LOW,
|
||||||
CURRENT_HVAC_COOL,
|
|
||||||
CURRENT_HVAC_FAN,
|
|
||||||
CURRENT_HVAC_HEAT,
|
|
||||||
CURRENT_HVAC_IDLE,
|
|
||||||
DOMAIN as CLIMATE_DOMAIN,
|
DOMAIN as CLIMATE_DOMAIN,
|
||||||
HVAC_MODE_AUTO,
|
HVAC_MODE_AUTO,
|
||||||
HVAC_MODE_COOL,
|
|
||||||
HVAC_MODE_FAN_ONLY,
|
HVAC_MODE_FAN_ONLY,
|
||||||
HVAC_MODE_HEAT,
|
ClimateEntityFeature,
|
||||||
HVAC_MODE_HEAT_COOL,
|
HVACAction,
|
||||||
HVAC_MODE_OFF,
|
HVACMode,
|
||||||
)
|
)
|
||||||
from homeassistant.config_entries import ConfigEntry
|
from homeassistant.config_entries import ConfigEntry
|
||||||
from homeassistant.const import ATTR_TEMPERATURE, TEMP_CELSIUS, TEMP_FAHRENHEIT
|
from homeassistant.const import ATTR_TEMPERATURE, TEMP_CELSIUS, TEMP_FAHRENHEIT
|
||||||
@ -46,10 +41,10 @@ HUMIDITY_LOW = 17
|
|||||||
|
|
||||||
|
|
||||||
HVAC_MODES = {
|
HVAC_MODES = {
|
||||||
0: HVAC_MODE_OFF,
|
0: HVACMode.OFF,
|
||||||
1: HVAC_MODE_HEAT,
|
1: HVACMode.HEAT,
|
||||||
2: HVAC_MODE_COOL,
|
2: HVACMode.COOL,
|
||||||
3: HVAC_MODE_HEAT_COOL,
|
3: HVACMode.HEAT_COOL,
|
||||||
}
|
}
|
||||||
FAN_MODES = {4: HVAC_MODE_AUTO, 8: HVAC_MODE_FAN_ONLY}
|
FAN_MODES = {4: HVAC_MODE_AUTO, 8: HVAC_MODE_FAN_ONLY}
|
||||||
|
|
||||||
@ -100,12 +95,12 @@ class InsteonClimateEntity(InsteonEntity, ClimateEntity):
|
|||||||
return self._insteon_device.groups[HUMIDITY].value
|
return self._insteon_device.groups[HUMIDITY].value
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def hvac_mode(self) -> str:
|
def hvac_mode(self) -> HVACMode:
|
||||||
"""Return hvac operation ie. heat, cool mode."""
|
"""Return hvac operation ie. heat, cool mode."""
|
||||||
return HVAC_MODES[self._insteon_device.groups[SYSTEM_MODE].value]
|
return HVAC_MODES[self._insteon_device.groups[SYSTEM_MODE].value]
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def hvac_modes(self) -> list[str]:
|
def hvac_modes(self) -> list[HVACMode]:
|
||||||
"""Return the list of available hvac operation modes."""
|
"""Return the list of available hvac operation modes."""
|
||||||
return list(HVAC_MODES.values())
|
return list(HVAC_MODES.values())
|
||||||
|
|
||||||
@ -161,18 +156,18 @@ class InsteonClimateEntity(InsteonEntity, ClimateEntity):
|
|||||||
return 1
|
return 1
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def hvac_action(self) -> str | None:
|
def hvac_action(self) -> HVACAction:
|
||||||
"""Return the current running hvac operation if supported.
|
"""Return the current running hvac operation if supported.
|
||||||
|
|
||||||
Need to be one of CURRENT_HVAC_*.
|
Need to be one of CURRENT_HVAC_*.
|
||||||
"""
|
"""
|
||||||
if self._insteon_device.groups[COOLING].value:
|
if self._insteon_device.groups[COOLING].value:
|
||||||
return CURRENT_HVAC_COOL
|
return HVACAction.COOLING
|
||||||
if self._insteon_device.groups[HEATING].value:
|
if self._insteon_device.groups[HEATING].value:
|
||||||
return CURRENT_HVAC_HEAT
|
return HVACAction.HEATING
|
||||||
if self._insteon_device.groups[FAN_MODE].value == ThermostatMode.FAN_ALWAYS_ON:
|
if self._insteon_device.groups[FAN_MODE].value == ThermostatMode.FAN_ALWAYS_ON:
|
||||||
return CURRENT_HVAC_FAN
|
return HVACAction.FAN
|
||||||
return CURRENT_HVAC_IDLE
|
return HVACAction.IDLE
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def extra_state_attributes(self):
|
def extra_state_attributes(self):
|
||||||
@ -205,7 +200,7 @@ class InsteonClimateEntity(InsteonEntity, ClimateEntity):
|
|||||||
mode = list(FAN_MODES)[list(FAN_MODES.values()).index(fan_mode)]
|
mode = list(FAN_MODES)[list(FAN_MODES.values()).index(fan_mode)]
|
||||||
await self._insteon_device.async_set_mode(mode)
|
await self._insteon_device.async_set_mode(mode)
|
||||||
|
|
||||||
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."""
|
"""Set new target hvac mode."""
|
||||||
mode = list(HVAC_MODES)[list(HVAC_MODES.values()).index(hvac_mode)]
|
mode = list(HVAC_MODES)[list(HVAC_MODES.values()).index(hvac_mode)]
|
||||||
await self._insteon_device.async_set_mode(mode)
|
await self._insteon_device.async_set_mode(mode)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user