Add Airzone Low Battery Binary Sensor (#69022)

* airzone: binary_sensor: add Low Battery

This binary sensor is only applicable for Radio Thermostats.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>

* airzone: use BinarySensorDeviceClass

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
This commit is contained in:
Álvaro Fernández Rojas 2022-04-23 07:27:23 +02:00 committed by GitHub
parent 6dc44863c4
commit a29265e725
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 48 additions and 2 deletions

View File

@ -7,6 +7,7 @@ from typing import Any, Final
from aioairzone.const import (
AZD_AIR_DEMAND,
AZD_BATTERY_LOW,
AZD_ERRORS,
AZD_FLOOR_DEMAND,
AZD_NAME,
@ -42,6 +43,11 @@ ZONE_BINARY_SENSOR_TYPES: Final[tuple[AirzoneBinarySensorEntityDescription, ...]
key=AZD_AIR_DEMAND,
name="Air Demand",
),
AirzoneBinarySensorEntityDescription(
device_class=BinarySensorDeviceClass.BATTERY,
key=AZD_BATTERY_LOW,
name="Battery Low",
),
AirzoneBinarySensorEntityDescription(
device_class=BinarySensorDeviceClass.RUNNING,
key=AZD_FLOOR_DEMAND,

View File

@ -1,5 +1,7 @@
"""The sensor tests for the Airzone platform."""
from aioairzone.const import API_ERROR_LOW_BATTERY
from homeassistant.const import STATE_OFF, STATE_ON
from homeassistant.core import HomeAssistant
@ -14,15 +16,22 @@ async def test_airzone_create_binary_sensors(hass: HomeAssistant) -> None:
state = hass.states.get("binary_sensor.despacho_air_demand")
assert state.state == STATE_OFF
state = hass.states.get("binary_sensor.despacho_battery_low")
assert state.state == STATE_ON
state = hass.states.get("binary_sensor.despacho_floor_demand")
assert state is None
state = hass.states.get("binary_sensor.despacho_problem")
assert state.state == STATE_OFF
assert state.state == STATE_ON
assert state.attributes.get("errors") == [API_ERROR_LOW_BATTERY]
state = hass.states.get("binary_sensor.dorm_1_air_demand")
assert state.state == STATE_OFF
state = hass.states.get("binary_sensor.dorm_1_battery_low")
assert state.state == STATE_OFF
state = hass.states.get("binary_sensor.dorm_1_floor_demand")
assert state.state == STATE_OFF
@ -32,6 +41,9 @@ async def test_airzone_create_binary_sensors(hass: HomeAssistant) -> None:
state = hass.states.get("binary_sensor.dorm_2_air_demand")
assert state.state == STATE_OFF
state = hass.states.get("binary_sensor.dorm_2_battery_low")
assert state.state == STATE_OFF
state = hass.states.get("binary_sensor.dorm_2_floor_demand")
assert state is None
@ -41,6 +53,9 @@ async def test_airzone_create_binary_sensors(hass: HomeAssistant) -> None:
state = hass.states.get("binary_sensor.dorm_ppal_air_demand")
assert state.state == STATE_ON
state = hass.states.get("binary_sensor.dorm_ppal_battery_low")
assert state.state == STATE_OFF
state = hass.states.get("binary_sensor.dorm_ppal_floor_demand")
assert state.state == STATE_ON
@ -50,6 +65,9 @@ async def test_airzone_create_binary_sensors(hass: HomeAssistant) -> None:
state = hass.states.get("binary_sensor.salon_air_demand")
assert state.state == STATE_OFF
state = hass.states.get("binary_sensor.salon_battery_low")
assert state is None
state = hass.states.get("binary_sensor.salon_floor_demand")
assert state is None

View File

@ -22,6 +22,9 @@ from aioairzone.const import (
API_SET_POINT,
API_SYSTEM_ID,
API_SYSTEMS,
API_THERMOS_FIRMWARE,
API_THERMOS_RADIO,
API_THERMOS_TYPE,
API_UNITS,
API_ZONE_ID,
)
@ -58,6 +61,9 @@ HVAC_MOCK = {
API_SYSTEM_ID: 1,
API_ZONE_ID: 1,
API_NAME: "Salon",
API_THERMOS_TYPE: 2,
API_THERMOS_FIRMWARE: "3.51",
API_THERMOS_RADIO: 0,
API_ON: 0,
API_MAX_TEMP: 30,
API_MIN_TEMP: 15,
@ -79,6 +85,9 @@ HVAC_MOCK = {
API_SYSTEM_ID: 1,
API_ZONE_ID: 2,
API_NAME: "Dorm Ppal",
API_THERMOS_TYPE: 4,
API_THERMOS_FIRMWARE: "3.33",
API_THERMOS_RADIO: 1,
API_ON: 1,
API_MAX_TEMP: 30,
API_MIN_TEMP: 15,
@ -99,6 +108,9 @@ HVAC_MOCK = {
API_SYSTEM_ID: 1,
API_ZONE_ID: 3,
API_NAME: "Dorm #1",
API_THERMOS_TYPE: 4,
API_THERMOS_FIRMWARE: "3.33",
API_THERMOS_RADIO: 1,
API_ON: 1,
API_MAX_TEMP: 30,
API_MIN_TEMP: 15,
@ -119,6 +131,9 @@ HVAC_MOCK = {
API_SYSTEM_ID: 1,
API_ZONE_ID: 4,
API_NAME: "Despacho",
API_THERMOS_TYPE: 4,
API_THERMOS_FIRMWARE: "3.33",
API_THERMOS_RADIO: 1,
API_ON: 0,
API_MAX_TEMP: 86,
API_MIN_TEMP: 59,
@ -131,7 +146,11 @@ HVAC_MOCK = {
API_HEAT_STAGE: 1,
API_HUMIDITY: 36,
API_UNITS: 1,
API_ERRORS: [],
API_ERRORS: [
{
"Zone": "Low battery",
},
],
API_AIR_DEMAND: 0,
API_FLOOR_DEMAND: 0,
},
@ -139,6 +158,9 @@ HVAC_MOCK = {
API_SYSTEM_ID: 1,
API_ZONE_ID: 5,
API_NAME: "Dorm #2",
API_THERMOS_TYPE: 4,
API_THERMOS_FIRMWARE: "3.33",
API_THERMOS_RADIO: 1,
API_ON: 0,
API_MAX_TEMP: 30,
API_MIN_TEMP: 15,