mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 05:07:41 +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,
|
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,
|
||||||
|
),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
@ -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": [
|
||||||
{
|
{
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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 = {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user