mirror of
https://github.com/home-assistant/core.git
synced 2025-07-22 20:57:21 +00:00
Add binary sensor for smoke alarm test state (#64873)
This commit is contained in:
parent
3e0e9e54bf
commit
55d3de3411
@ -119,6 +119,15 @@ BINARY_SENSOR_DESCRIPTIONS = [
|
||||
device_class=BinarySensorDeviceClass.BATTERY,
|
||||
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,
|
||||
),
|
||||
]
|
||||
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
"config_flow": true,
|
||||
"documentation": "https://www.home-assistant.io/integrations/deconz",
|
||||
"requirements": [
|
||||
"pydeconz==85"
|
||||
"pydeconz==86"
|
||||
],
|
||||
"ssdp": [
|
||||
{
|
||||
|
@ -1464,7 +1464,7 @@ pydaikin==2.7.0
|
||||
pydanfossair==0.1.0
|
||||
|
||||
# homeassistant.components.deconz
|
||||
pydeconz==85
|
||||
pydeconz==86
|
||||
|
||||
# homeassistant.components.delijn
|
||||
pydelijn==0.6.1
|
||||
|
@ -908,7 +908,7 @@ pycoolmasternet-async==0.1.2
|
||||
pydaikin==2.7.0
|
||||
|
||||
# homeassistant.components.deconz
|
||||
pydeconz==85
|
||||
pydeconz==86
|
||||
|
||||
# homeassistant.components.dexcom
|
||||
pydexcom==0.2.2
|
||||
|
@ -183,6 +183,58 @@ async def test_tampering_sensor(hass, aioclient_mock, mock_deconz_websocket):
|
||||
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):
|
||||
"""Test that CLIP sensors can be allowed."""
|
||||
data = {
|
||||
|
Loading…
x
Reference in New Issue
Block a user