Use HVACAction in zha sensors (#70769)
This commit is contained in:
parent
09350d350d
commit
c44b7cc4c0
1 changed files with 19 additions and 25 deletions
|
@ -5,13 +5,7 @@ import functools
|
||||||
import numbers
|
import numbers
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
from homeassistant.components.climate.const import (
|
from homeassistant.components.climate.const import HVACAction
|
||||||
CURRENT_HVAC_COOL,
|
|
||||||
CURRENT_HVAC_FAN,
|
|
||||||
CURRENT_HVAC_HEAT,
|
|
||||||
CURRENT_HVAC_IDLE,
|
|
||||||
CURRENT_HVAC_OFF,
|
|
||||||
)
|
|
||||||
from homeassistant.components.sensor import (
|
from homeassistant.components.sensor import (
|
||||||
SensorDeviceClass,
|
SensorDeviceClass,
|
||||||
SensorEntity,
|
SensorEntity,
|
||||||
|
@ -631,7 +625,7 @@ class ThermostatHVACAction(Sensor, id_suffix="hvac_action"):
|
||||||
return self._pi_demand_action
|
return self._pi_demand_action
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def _rm_rs_action(self) -> str | None:
|
def _rm_rs_action(self) -> HVACAction | None:
|
||||||
"""Return the current HVAC action based on running mode and running state."""
|
"""Return the current HVAC action based on running mode and running state."""
|
||||||
|
|
||||||
if (running_state := self._channel.running_state) is None:
|
if (running_state := self._channel.running_state) is None:
|
||||||
|
@ -642,14 +636,14 @@ class ThermostatHVACAction(Sensor, id_suffix="hvac_action"):
|
||||||
| self._channel.RunningState.Heat_2nd_Stage_On
|
| self._channel.RunningState.Heat_2nd_Stage_On
|
||||||
)
|
)
|
||||||
if running_state & rs_heat:
|
if running_state & rs_heat:
|
||||||
return CURRENT_HVAC_HEAT
|
return HVACAction.HEATING
|
||||||
|
|
||||||
rs_cool = (
|
rs_cool = (
|
||||||
self._channel.RunningState.Cool_State_On
|
self._channel.RunningState.Cool_State_On
|
||||||
| self._channel.RunningState.Cool_2nd_Stage_On
|
| self._channel.RunningState.Cool_2nd_Stage_On
|
||||||
)
|
)
|
||||||
if running_state & rs_cool:
|
if running_state & rs_cool:
|
||||||
return CURRENT_HVAC_COOL
|
return HVACAction.COOLING
|
||||||
|
|
||||||
running_state = self._channel.running_state
|
running_state = self._channel.running_state
|
||||||
if running_state and running_state & (
|
if running_state and running_state & (
|
||||||
|
@ -657,30 +651,30 @@ class ThermostatHVACAction(Sensor, id_suffix="hvac_action"):
|
||||||
| self._channel.RunningState.Fan_2nd_Stage_On
|
| self._channel.RunningState.Fan_2nd_Stage_On
|
||||||
| self._channel.RunningState.Fan_3rd_Stage_On
|
| self._channel.RunningState.Fan_3rd_Stage_On
|
||||||
):
|
):
|
||||||
return CURRENT_HVAC_FAN
|
return HVACAction.FAN
|
||||||
|
|
||||||
running_state = self._channel.running_state
|
running_state = self._channel.running_state
|
||||||
if running_state and running_state & self._channel.RunningState.Idle:
|
if running_state and running_state & self._channel.RunningState.Idle:
|
||||||
return CURRENT_HVAC_IDLE
|
return HVACAction.IDLE
|
||||||
|
|
||||||
if self._channel.system_mode != self._channel.SystemMode.Off:
|
if self._channel.system_mode != self._channel.SystemMode.Off:
|
||||||
return CURRENT_HVAC_IDLE
|
return HVACAction.IDLE
|
||||||
return CURRENT_HVAC_OFF
|
return HVACAction.OFF
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def _pi_demand_action(self) -> str | None:
|
def _pi_demand_action(self) -> HVACAction:
|
||||||
"""Return the current HVAC action based on pi_demands."""
|
"""Return the current HVAC action based on pi_demands."""
|
||||||
|
|
||||||
heating_demand = self._channel.pi_heating_demand
|
heating_demand = self._channel.pi_heating_demand
|
||||||
if heating_demand is not None and heating_demand > 0:
|
if heating_demand is not None and heating_demand > 0:
|
||||||
return CURRENT_HVAC_HEAT
|
return HVACAction.HEATING
|
||||||
cooling_demand = self._channel.pi_cooling_demand
|
cooling_demand = self._channel.pi_cooling_demand
|
||||||
if cooling_demand is not None and cooling_demand > 0:
|
if cooling_demand is not None and cooling_demand > 0:
|
||||||
return CURRENT_HVAC_COOL
|
return HVACAction.COOLING
|
||||||
|
|
||||||
if self._channel.system_mode != self._channel.SystemMode.Off:
|
if self._channel.system_mode != self._channel.SystemMode.Off:
|
||||||
return CURRENT_HVAC_IDLE
|
return HVACAction.IDLE
|
||||||
return CURRENT_HVAC_OFF
|
return HVACAction.OFF
|
||||||
|
|
||||||
@callback
|
@callback
|
||||||
def async_set_state(self, *args, **kwargs) -> None:
|
def async_set_state(self, *args, **kwargs) -> None:
|
||||||
|
@ -697,14 +691,14 @@ class SinopeHVACAction(ThermostatHVACAction):
|
||||||
"""Sinope Thermostat HVAC action sensor."""
|
"""Sinope Thermostat HVAC action sensor."""
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def _rm_rs_action(self) -> str | None:
|
def _rm_rs_action(self) -> HVACAction:
|
||||||
"""Return the current HVAC action based on running mode and running state."""
|
"""Return the current HVAC action based on running mode and running state."""
|
||||||
|
|
||||||
running_mode = self._channel.running_mode
|
running_mode = self._channel.running_mode
|
||||||
if running_mode == self._channel.RunningMode.Heat:
|
if running_mode == self._channel.RunningMode.Heat:
|
||||||
return CURRENT_HVAC_HEAT
|
return HVACAction.HEATING
|
||||||
if running_mode == self._channel.RunningMode.Cool:
|
if running_mode == self._channel.RunningMode.Cool:
|
||||||
return CURRENT_HVAC_COOL
|
return HVACAction.COOLING
|
||||||
|
|
||||||
running_state = self._channel.running_state
|
running_state = self._channel.running_state
|
||||||
if running_state and running_state & (
|
if running_state and running_state & (
|
||||||
|
@ -712,13 +706,13 @@ class SinopeHVACAction(ThermostatHVACAction):
|
||||||
| self._channel.RunningState.Fan_2nd_Stage_On
|
| self._channel.RunningState.Fan_2nd_Stage_On
|
||||||
| self._channel.RunningState.Fan_3rd_Stage_On
|
| self._channel.RunningState.Fan_3rd_Stage_On
|
||||||
):
|
):
|
||||||
return CURRENT_HVAC_FAN
|
return HVACAction.FAN
|
||||||
if (
|
if (
|
||||||
self._channel.system_mode != self._channel.SystemMode.Off
|
self._channel.system_mode != self._channel.SystemMode.Off
|
||||||
and running_mode == self._channel.SystemMode.Off
|
and running_mode == self._channel.SystemMode.Off
|
||||||
):
|
):
|
||||||
return CURRENT_HVAC_IDLE
|
return HVACAction.IDLE
|
||||||
return CURRENT_HVAC_OFF
|
return HVACAction.OFF
|
||||||
|
|
||||||
|
|
||||||
@MULTI_MATCH(channel_names=CHANNEL_BASIC)
|
@MULTI_MATCH(channel_names=CHANNEL_BASIC)
|
||||||
|
|
Loading…
Add table
Reference in a new issue