Resolve homekit not updating motion sensors (#34282)
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
This commit is contained in:
parent
97609576cb
commit
b87b618c94
2 changed files with 62 additions and 13 deletions
|
@ -1,6 +1,7 @@
|
|||
"""Test different accessory types: Sensors."""
|
||||
from homeassistant.components.homekit import get_accessory
|
||||
from homeassistant.components.homekit.const import (
|
||||
DEVICE_CLASS_MOTION,
|
||||
PROP_CELSIUS,
|
||||
THRESHOLD_CO,
|
||||
THRESHOLD_CO2,
|
||||
|
@ -256,11 +257,55 @@ async def test_binary(hass, hk_driver):
|
|||
assert acc.char_detected.value == 0
|
||||
|
||||
|
||||
async def test_motion_uses_bool(hass, hk_driver):
|
||||
"""Test if accessory is updated after state change."""
|
||||
entity_id = "binary_sensor.motion"
|
||||
|
||||
hass.states.async_set(
|
||||
entity_id, STATE_UNKNOWN, {ATTR_DEVICE_CLASS: DEVICE_CLASS_MOTION}
|
||||
)
|
||||
await hass.async_block_till_done()
|
||||
|
||||
acc = BinarySensor(hass, hk_driver, "Motion Sensor", entity_id, 2, None)
|
||||
await acc.run_handler()
|
||||
|
||||
assert acc.aid == 2
|
||||
assert acc.category == 10 # Sensor
|
||||
|
||||
assert acc.char_detected.value is False
|
||||
|
||||
hass.states.async_set(entity_id, STATE_ON, {ATTR_DEVICE_CLASS: DEVICE_CLASS_MOTION})
|
||||
await hass.async_block_till_done()
|
||||
assert acc.char_detected.value is True
|
||||
|
||||
hass.states.async_set(
|
||||
entity_id, STATE_OFF, {ATTR_DEVICE_CLASS: DEVICE_CLASS_MOTION}
|
||||
)
|
||||
await hass.async_block_till_done()
|
||||
assert acc.char_detected.value is False
|
||||
|
||||
hass.states.async_set(
|
||||
entity_id, STATE_HOME, {ATTR_DEVICE_CLASS: DEVICE_CLASS_MOTION}
|
||||
)
|
||||
await hass.async_block_till_done()
|
||||
assert acc.char_detected.value is True
|
||||
|
||||
hass.states.async_set(
|
||||
entity_id, STATE_NOT_HOME, {ATTR_DEVICE_CLASS: DEVICE_CLASS_MOTION}
|
||||
)
|
||||
await hass.async_block_till_done()
|
||||
assert acc.char_detected.value is False
|
||||
|
||||
hass.states.async_remove(entity_id)
|
||||
await hass.async_block_till_done()
|
||||
assert acc.char_detected.value is False
|
||||
|
||||
|
||||
async def test_binary_device_classes(hass, hk_driver):
|
||||
"""Test if services and characteristics are assigned correctly."""
|
||||
entity_id = "binary_sensor.demo"
|
||||
|
||||
for device_class, (service, char) in BINARY_SENSOR_SERVICE_MAP.items():
|
||||
for device_class, (service, char, _) in BINARY_SENSOR_SERVICE_MAP.items():
|
||||
hass.states.async_set(entity_id, STATE_OFF, {ATTR_DEVICE_CLASS: device_class})
|
||||
await hass.async_block_till_done()
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue