diff --git a/homeassistant/components/vallox/const.py b/homeassistant/components/vallox/const.py index 6d12d0bab8e..aba10188bde 100644 --- a/homeassistant/components/vallox/const.py +++ b/homeassistant/components/vallox/const.py @@ -37,3 +37,10 @@ VALLOX_PROFILE_TO_STR_REPORTABLE = { STR_TO_VALLOX_PROFILE_SETTABLE = { value: key for (key, value) in VALLOX_PROFILE_TO_STR_SETTABLE.items() } + +VALLOX_CELL_STATE_TO_STR = { + 0: "Heat Recovery", + 1: "Cool Recovery", + 2: "Bypass", + 3: "Defrosting", +} diff --git a/homeassistant/components/vallox/sensor.py b/homeassistant/components/vallox/sensor.py index 2fdfd2cd472..0341153a9ff 100644 --- a/homeassistant/components/vallox/sensor.py +++ b/homeassistant/components/vallox/sensor.py @@ -25,7 +25,13 @@ from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType, StateTyp from homeassistant.helpers.update_coordinator import CoordinatorEntity from . import ValloxDataUpdateCoordinator -from .const import DOMAIN, METRIC_KEY_MODE, MODE_ON, VALLOX_PROFILE_TO_STR_REPORTABLE +from .const import ( + DOMAIN, + METRIC_KEY_MODE, + MODE_ON, + VALLOX_CELL_STATE_TO_STR, + VALLOX_PROFILE_TO_STR_REPORTABLE, +) _LOGGER = logging.getLogger(__name__) @@ -106,6 +112,21 @@ class ValloxFilterRemainingSensor(ValloxSensor): return (now + days_remaining_delta).isoformat() +class ValloxCellStateSensor(ValloxSensor): + """Child class for cell state reporting.""" + + @property + def native_value(self) -> StateType: + """Return the value reported by the sensor.""" + super_native_value = super().native_value + + if not isinstance(super_native_value, (int, float)): + _LOGGER.debug("Value has unexpected type: %s", type(super_native_value)) + return None + + return VALLOX_CELL_STATE_TO_STR.get(int(super_native_value)) + + @dataclass class ValloxSensorEntityDescription(SensorEntityDescription): """Describes Vallox sensor entity.""" @@ -137,6 +158,13 @@ SENSORS: tuple[ValloxSensorEntityDescription, ...] = ( device_class=DEVICE_CLASS_TIMESTAMP, sensor_type=ValloxFilterRemainingSensor, ), + ValloxSensorEntityDescription( + key="cell_state", + name="Cell State", + icon="mdi:swap-horizontal-bold", + metric_key="A_CYC_CELL_STATE", + sensor_type=ValloxCellStateSensor, + ), ValloxSensorEntityDescription( key="extract_air", name="Extract Air",