mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 21:27:38 +00:00
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:
parent
6dc44863c4
commit
a29265e725
@ -7,6 +7,7 @@ from typing import Any, Final
|
|||||||
|
|
||||||
from aioairzone.const import (
|
from aioairzone.const import (
|
||||||
AZD_AIR_DEMAND,
|
AZD_AIR_DEMAND,
|
||||||
|
AZD_BATTERY_LOW,
|
||||||
AZD_ERRORS,
|
AZD_ERRORS,
|
||||||
AZD_FLOOR_DEMAND,
|
AZD_FLOOR_DEMAND,
|
||||||
AZD_NAME,
|
AZD_NAME,
|
||||||
@ -42,6 +43,11 @@ ZONE_BINARY_SENSOR_TYPES: Final[tuple[AirzoneBinarySensorEntityDescription, ...]
|
|||||||
key=AZD_AIR_DEMAND,
|
key=AZD_AIR_DEMAND,
|
||||||
name="Air Demand",
|
name="Air Demand",
|
||||||
),
|
),
|
||||||
|
AirzoneBinarySensorEntityDescription(
|
||||||
|
device_class=BinarySensorDeviceClass.BATTERY,
|
||||||
|
key=AZD_BATTERY_LOW,
|
||||||
|
name="Battery Low",
|
||||||
|
),
|
||||||
AirzoneBinarySensorEntityDescription(
|
AirzoneBinarySensorEntityDescription(
|
||||||
device_class=BinarySensorDeviceClass.RUNNING,
|
device_class=BinarySensorDeviceClass.RUNNING,
|
||||||
key=AZD_FLOOR_DEMAND,
|
key=AZD_FLOOR_DEMAND,
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
"""The sensor tests for the Airzone platform."""
|
"""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.const import STATE_OFF, STATE_ON
|
||||||
from homeassistant.core import HomeAssistant
|
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")
|
state = hass.states.get("binary_sensor.despacho_air_demand")
|
||||||
assert state.state == STATE_OFF
|
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")
|
state = hass.states.get("binary_sensor.despacho_floor_demand")
|
||||||
assert state is None
|
assert state is None
|
||||||
|
|
||||||
state = hass.states.get("binary_sensor.despacho_problem")
|
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")
|
state = hass.states.get("binary_sensor.dorm_1_air_demand")
|
||||||
assert state.state == STATE_OFF
|
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")
|
state = hass.states.get("binary_sensor.dorm_1_floor_demand")
|
||||||
assert state.state == STATE_OFF
|
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")
|
state = hass.states.get("binary_sensor.dorm_2_air_demand")
|
||||||
assert state.state == STATE_OFF
|
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")
|
state = hass.states.get("binary_sensor.dorm_2_floor_demand")
|
||||||
assert state is None
|
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")
|
state = hass.states.get("binary_sensor.dorm_ppal_air_demand")
|
||||||
assert state.state == STATE_ON
|
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")
|
state = hass.states.get("binary_sensor.dorm_ppal_floor_demand")
|
||||||
assert state.state == STATE_ON
|
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")
|
state = hass.states.get("binary_sensor.salon_air_demand")
|
||||||
assert state.state == STATE_OFF
|
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")
|
state = hass.states.get("binary_sensor.salon_floor_demand")
|
||||||
assert state is None
|
assert state is None
|
||||||
|
|
||||||
|
@ -22,6 +22,9 @@ from aioairzone.const import (
|
|||||||
API_SET_POINT,
|
API_SET_POINT,
|
||||||
API_SYSTEM_ID,
|
API_SYSTEM_ID,
|
||||||
API_SYSTEMS,
|
API_SYSTEMS,
|
||||||
|
API_THERMOS_FIRMWARE,
|
||||||
|
API_THERMOS_RADIO,
|
||||||
|
API_THERMOS_TYPE,
|
||||||
API_UNITS,
|
API_UNITS,
|
||||||
API_ZONE_ID,
|
API_ZONE_ID,
|
||||||
)
|
)
|
||||||
@ -58,6 +61,9 @@ HVAC_MOCK = {
|
|||||||
API_SYSTEM_ID: 1,
|
API_SYSTEM_ID: 1,
|
||||||
API_ZONE_ID: 1,
|
API_ZONE_ID: 1,
|
||||||
API_NAME: "Salon",
|
API_NAME: "Salon",
|
||||||
|
API_THERMOS_TYPE: 2,
|
||||||
|
API_THERMOS_FIRMWARE: "3.51",
|
||||||
|
API_THERMOS_RADIO: 0,
|
||||||
API_ON: 0,
|
API_ON: 0,
|
||||||
API_MAX_TEMP: 30,
|
API_MAX_TEMP: 30,
|
||||||
API_MIN_TEMP: 15,
|
API_MIN_TEMP: 15,
|
||||||
@ -79,6 +85,9 @@ HVAC_MOCK = {
|
|||||||
API_SYSTEM_ID: 1,
|
API_SYSTEM_ID: 1,
|
||||||
API_ZONE_ID: 2,
|
API_ZONE_ID: 2,
|
||||||
API_NAME: "Dorm Ppal",
|
API_NAME: "Dorm Ppal",
|
||||||
|
API_THERMOS_TYPE: 4,
|
||||||
|
API_THERMOS_FIRMWARE: "3.33",
|
||||||
|
API_THERMOS_RADIO: 1,
|
||||||
API_ON: 1,
|
API_ON: 1,
|
||||||
API_MAX_TEMP: 30,
|
API_MAX_TEMP: 30,
|
||||||
API_MIN_TEMP: 15,
|
API_MIN_TEMP: 15,
|
||||||
@ -99,6 +108,9 @@ HVAC_MOCK = {
|
|||||||
API_SYSTEM_ID: 1,
|
API_SYSTEM_ID: 1,
|
||||||
API_ZONE_ID: 3,
|
API_ZONE_ID: 3,
|
||||||
API_NAME: "Dorm #1",
|
API_NAME: "Dorm #1",
|
||||||
|
API_THERMOS_TYPE: 4,
|
||||||
|
API_THERMOS_FIRMWARE: "3.33",
|
||||||
|
API_THERMOS_RADIO: 1,
|
||||||
API_ON: 1,
|
API_ON: 1,
|
||||||
API_MAX_TEMP: 30,
|
API_MAX_TEMP: 30,
|
||||||
API_MIN_TEMP: 15,
|
API_MIN_TEMP: 15,
|
||||||
@ -119,6 +131,9 @@ HVAC_MOCK = {
|
|||||||
API_SYSTEM_ID: 1,
|
API_SYSTEM_ID: 1,
|
||||||
API_ZONE_ID: 4,
|
API_ZONE_ID: 4,
|
||||||
API_NAME: "Despacho",
|
API_NAME: "Despacho",
|
||||||
|
API_THERMOS_TYPE: 4,
|
||||||
|
API_THERMOS_FIRMWARE: "3.33",
|
||||||
|
API_THERMOS_RADIO: 1,
|
||||||
API_ON: 0,
|
API_ON: 0,
|
||||||
API_MAX_TEMP: 86,
|
API_MAX_TEMP: 86,
|
||||||
API_MIN_TEMP: 59,
|
API_MIN_TEMP: 59,
|
||||||
@ -131,7 +146,11 @@ HVAC_MOCK = {
|
|||||||
API_HEAT_STAGE: 1,
|
API_HEAT_STAGE: 1,
|
||||||
API_HUMIDITY: 36,
|
API_HUMIDITY: 36,
|
||||||
API_UNITS: 1,
|
API_UNITS: 1,
|
||||||
API_ERRORS: [],
|
API_ERRORS: [
|
||||||
|
{
|
||||||
|
"Zone": "Low battery",
|
||||||
|
},
|
||||||
|
],
|
||||||
API_AIR_DEMAND: 0,
|
API_AIR_DEMAND: 0,
|
||||||
API_FLOOR_DEMAND: 0,
|
API_FLOOR_DEMAND: 0,
|
||||||
},
|
},
|
||||||
@ -139,6 +158,9 @@ HVAC_MOCK = {
|
|||||||
API_SYSTEM_ID: 1,
|
API_SYSTEM_ID: 1,
|
||||||
API_ZONE_ID: 5,
|
API_ZONE_ID: 5,
|
||||||
API_NAME: "Dorm #2",
|
API_NAME: "Dorm #2",
|
||||||
|
API_THERMOS_TYPE: 4,
|
||||||
|
API_THERMOS_FIRMWARE: "3.33",
|
||||||
|
API_THERMOS_RADIO: 1,
|
||||||
API_ON: 0,
|
API_ON: 0,
|
||||||
API_MAX_TEMP: 30,
|
API_MAX_TEMP: 30,
|
||||||
API_MIN_TEMP: 15,
|
API_MIN_TEMP: 15,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user