Add binary sensor for smoke alarm test state (#64873)

This commit is contained in:
Robert Svensson 2022-01-25 17:46:31 +01:00 committed by GitHub
parent 3e0e9e54bf
commit 55d3de3411
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 64 additions and 3 deletions

View File

@ -119,6 +119,15 @@ BINARY_SENSOR_DESCRIPTIONS = [
device_class=BinarySensorDeviceClass.BATTERY, device_class=BinarySensorDeviceClass.BATTERY,
entity_category=EntityCategory.DIAGNOSTIC, entity_category=EntityCategory.DIAGNOSTIC,
), ),
DeconzBinarySensorDescription(
key="in_test_mode",
required_attr="in_test_mode",
value_fn=lambda device: device.in_test_mode,
suffix="Test Mode",
update_key="test",
device_class=BinarySensorDeviceClass.SMOKE,
entity_category=EntityCategory.DIAGNOSTIC,
),
] ]

View File

@ -4,7 +4,7 @@
"config_flow": true, "config_flow": true,
"documentation": "https://www.home-assistant.io/integrations/deconz", "documentation": "https://www.home-assistant.io/integrations/deconz",
"requirements": [ "requirements": [
"pydeconz==85" "pydeconz==86"
], ],
"ssdp": [ "ssdp": [
{ {

View File

@ -1464,7 +1464,7 @@ pydaikin==2.7.0
pydanfossair==0.1.0 pydanfossair==0.1.0
# homeassistant.components.deconz # homeassistant.components.deconz
pydeconz==85 pydeconz==86
# homeassistant.components.delijn # homeassistant.components.delijn
pydelijn==0.6.1 pydelijn==0.6.1

View File

@ -908,7 +908,7 @@ pycoolmasternet-async==0.1.2
pydaikin==2.7.0 pydaikin==2.7.0
# homeassistant.components.deconz # homeassistant.components.deconz
pydeconz==85 pydeconz==86
# homeassistant.components.dexcom # homeassistant.components.dexcom
pydexcom==0.2.2 pydexcom==0.2.2

View File

@ -183,6 +183,58 @@ async def test_tampering_sensor(hass, aioclient_mock, mock_deconz_websocket):
assert len(hass.states.async_all()) == 0 assert len(hass.states.async_all()) == 0
async def test_fire_sensor(hass, aioclient_mock, mock_deconz_websocket):
"""Verify smoke alarm sensor works."""
data = {
"sensors": {
"1": {
"name": "Fire alarm",
"type": "ZHAFire",
"state": {"fire": False, "test": False},
"config": {"on": True, "reachable": True},
"uniqueid": "00:00:00:00:00:00:00:00-00",
},
}
}
with patch.dict(DECONZ_WEB_REQUEST, data):
config_entry = await setup_deconz_integration(hass, aioclient_mock)
ent_reg = er.async_get(hass)
assert len(hass.states.async_all()) == 2
assert hass.states.get("binary_sensor.fire_alarm").state == STATE_OFF
assert ent_reg.async_get("binary_sensor.fire_alarm").entity_category is None
assert hass.states.get("binary_sensor.fire_alarm_test_mode").state == STATE_OFF
assert (
ent_reg.async_get("binary_sensor.fire_alarm_test_mode").entity_category
is EntityCategory.DIAGNOSTIC
)
event_changed_sensor = {
"t": "event",
"e": "changed",
"r": "sensors",
"id": "1",
"state": {"fire": True, "test": True},
}
await mock_deconz_websocket(data=event_changed_sensor)
await hass.async_block_till_done()
assert hass.states.get("binary_sensor.fire_alarm").state == STATE_ON
assert hass.states.get("binary_sensor.fire_alarm_test_mode").state == STATE_ON
await hass.config_entries.async_unload(config_entry.entry_id)
assert hass.states.get("binary_sensor.fire_alarm").state == STATE_UNAVAILABLE
assert (
hass.states.get("binary_sensor.fire_alarm_test_mode").state == STATE_UNAVAILABLE
)
await hass.config_entries.async_remove(config_entry.entry_id)
await hass.async_block_till_done()
assert len(hass.states.async_all()) == 0
async def test_allow_clip_sensor(hass, aioclient_mock): async def test_allow_clip_sensor(hass, aioclient_mock):
"""Test that CLIP sensors can be allowed.""" """Test that CLIP sensors can be allowed."""
data = { data = {