Fix Totalconnect BinarySensorDeviceClass logic (#94772)
* handle temperature * test for temperature * test for unknownpull/95119/head
parent
254b1fd314
commit
f33d671a5d
|
@ -81,15 +81,9 @@ class TotalConnectZoneSecurityBinarySensor(TotalConnectZoneBinarySensor):
|
|||
return BinarySensorDeviceClass.MOTION
|
||||
if self._zone.is_type_medical():
|
||||
return BinarySensorDeviceClass.SAFETY
|
||||
# "security" type is a generic category so test for it last
|
||||
if self._zone.is_type_security():
|
||||
return BinarySensorDeviceClass.DOOR
|
||||
|
||||
_LOGGER.error(
|
||||
"TotalConnect zone %s reported an unexpected device class",
|
||||
self._zone.zoneid,
|
||||
)
|
||||
return None
|
||||
if self._zone.is_type_temperature():
|
||||
return BinarySensorDeviceClass.PROBLEM
|
||||
return BinarySensorDeviceClass.DOOR
|
||||
|
||||
def update(self):
|
||||
"""Return the state of the device."""
|
||||
|
|
|
@ -189,14 +189,23 @@ ZONE_5 = {
|
|||
# 99 is an unknown ZoneType
|
||||
ZONE_6 = {
|
||||
"ZoneID": "6",
|
||||
"ZoneDescription": "Medical",
|
||||
"ZoneDescription": "Unknown",
|
||||
"ZoneStatus": ZoneStatus.NORMAL,
|
||||
"ZoneTypeId": 99,
|
||||
"PartitionId": "1",
|
||||
"CanBeBypassed": 0,
|
||||
}
|
||||
|
||||
ZONE_INFO = [ZONE_NORMAL, ZONE_2, ZONE_3, ZONE_4, ZONE_5, ZONE_6]
|
||||
ZONE_7 = {
|
||||
"ZoneID": 7,
|
||||
"ZoneDescription": "Temperature",
|
||||
"ZoneStatus": ZoneStatus.NORMAL,
|
||||
"ZoneTypeId": ZoneType.MONITOR,
|
||||
"PartitionId": "1",
|
||||
"CanBeBypassed": 0,
|
||||
}
|
||||
|
||||
ZONE_INFO = [ZONE_NORMAL, ZONE_2, ZONE_3, ZONE_4, ZONE_5, ZONE_6, ZONE_7]
|
||||
ZONES = {"ZoneInfo": ZONE_INFO}
|
||||
|
||||
METADATA_DISARMED = {
|
||||
|
|
|
@ -84,3 +84,21 @@ async def test_state_and_attributes(hass: HomeAssistant) -> None:
|
|||
assert state.state == STATE_OFF
|
||||
state = hass.states.get("binary_sensor.gas_tamper")
|
||||
assert state.state == STATE_ON
|
||||
|
||||
# Zone 6 is unknown type, assume it is a security (door) sensor
|
||||
state = hass.states.get("binary_sensor.unknown")
|
||||
assert state.state == STATE_OFF
|
||||
assert state.attributes.get("device_class") == BinarySensorDeviceClass.DOOR
|
||||
state = hass.states.get("binary_sensor.unknown_low_battery")
|
||||
assert state.state == STATE_OFF
|
||||
state = hass.states.get("binary_sensor.unknown_tamper")
|
||||
assert state.state == STATE_OFF
|
||||
|
||||
# Zone 7 is temperature
|
||||
state = hass.states.get("binary_sensor.temperature")
|
||||
assert state.state == STATE_OFF
|
||||
assert state.attributes.get("device_class") == BinarySensorDeviceClass.PROBLEM
|
||||
state = hass.states.get("binary_sensor.temperature_low_battery")
|
||||
assert state.state == STATE_OFF
|
||||
state = hass.states.get("binary_sensor.temperature_tamper")
|
||||
assert state.state == STATE_OFF
|
||||
|
|
Loading…
Reference in New Issue