mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 13:17:32 +00:00
Modify behavior of lock groups (#74055)
This commit is contained in:
parent
8328f9b623
commit
824de2ef4c
@ -166,7 +166,7 @@ class LockGroup(GroupEntity, LockEntity):
|
|||||||
if (state := self.hass.states.get(entity_id)) is not None
|
if (state := self.hass.states.get(entity_id)) is not None
|
||||||
]
|
]
|
||||||
|
|
||||||
valid_state = all(
|
valid_state = any(
|
||||||
state not in (STATE_UNKNOWN, STATE_UNAVAILABLE) for state in states
|
state not in (STATE_UNKNOWN, STATE_UNAVAILABLE) for state in states
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -90,28 +90,10 @@ async def test_state_reporting(hass):
|
|||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
assert hass.states.get("lock.lock_group").state == STATE_UNAVAILABLE
|
assert hass.states.get("lock.lock_group").state == STATE_UNAVAILABLE
|
||||||
|
|
||||||
# At least one member unknown or unavailable -> group unknown
|
# The group state is unknown if all group members are unknown or unavailable.
|
||||||
for state_1 in (
|
for state_1 in (
|
||||||
STATE_JAMMED,
|
|
||||||
STATE_LOCKED,
|
|
||||||
STATE_LOCKING,
|
|
||||||
STATE_UNKNOWN,
|
|
||||||
STATE_UNLOCKED,
|
|
||||||
STATE_UNLOCKING,
|
|
||||||
):
|
|
||||||
hass.states.async_set("lock.test1", state_1)
|
|
||||||
hass.states.async_set("lock.test2", STATE_UNAVAILABLE)
|
|
||||||
await hass.async_block_till_done()
|
|
||||||
assert hass.states.get("lock.lock_group").state == STATE_UNKNOWN
|
|
||||||
|
|
||||||
for state_1 in (
|
|
||||||
STATE_JAMMED,
|
|
||||||
STATE_LOCKED,
|
|
||||||
STATE_LOCKING,
|
|
||||||
STATE_UNAVAILABLE,
|
STATE_UNAVAILABLE,
|
||||||
STATE_UNKNOWN,
|
STATE_UNKNOWN,
|
||||||
STATE_UNLOCKED,
|
|
||||||
STATE_UNLOCKING,
|
|
||||||
):
|
):
|
||||||
hass.states.async_set("lock.test1", state_1)
|
hass.states.async_set("lock.test1", state_1)
|
||||||
hass.states.async_set("lock.test2", STATE_UNKNOWN)
|
hass.states.async_set("lock.test2", STATE_UNKNOWN)
|
||||||
@ -123,6 +105,8 @@ async def test_state_reporting(hass):
|
|||||||
STATE_JAMMED,
|
STATE_JAMMED,
|
||||||
STATE_LOCKED,
|
STATE_LOCKED,
|
||||||
STATE_LOCKING,
|
STATE_LOCKING,
|
||||||
|
STATE_UNAVAILABLE,
|
||||||
|
STATE_UNKNOWN,
|
||||||
STATE_UNLOCKED,
|
STATE_UNLOCKED,
|
||||||
STATE_UNLOCKING,
|
STATE_UNLOCKING,
|
||||||
):
|
):
|
||||||
@ -135,6 +119,8 @@ async def test_state_reporting(hass):
|
|||||||
for state_1 in (
|
for state_1 in (
|
||||||
STATE_LOCKED,
|
STATE_LOCKED,
|
||||||
STATE_LOCKING,
|
STATE_LOCKING,
|
||||||
|
STATE_UNAVAILABLE,
|
||||||
|
STATE_UNKNOWN,
|
||||||
STATE_UNLOCKED,
|
STATE_UNLOCKED,
|
||||||
STATE_UNLOCKING,
|
STATE_UNLOCKING,
|
||||||
):
|
):
|
||||||
@ -146,6 +132,8 @@ async def test_state_reporting(hass):
|
|||||||
# At least one member unlocking -> group unlocking
|
# At least one member unlocking -> group unlocking
|
||||||
for state_1 in (
|
for state_1 in (
|
||||||
STATE_LOCKED,
|
STATE_LOCKED,
|
||||||
|
STATE_UNAVAILABLE,
|
||||||
|
STATE_UNKNOWN,
|
||||||
STATE_UNLOCKED,
|
STATE_UNLOCKED,
|
||||||
STATE_UNLOCKING,
|
STATE_UNLOCKING,
|
||||||
):
|
):
|
||||||
@ -157,6 +145,8 @@ async def test_state_reporting(hass):
|
|||||||
# At least one member unlocked -> group unlocked
|
# At least one member unlocked -> group unlocked
|
||||||
for state_1 in (
|
for state_1 in (
|
||||||
STATE_LOCKED,
|
STATE_LOCKED,
|
||||||
|
STATE_UNAVAILABLE,
|
||||||
|
STATE_UNKNOWN,
|
||||||
STATE_UNLOCKED,
|
STATE_UNLOCKED,
|
||||||
):
|
):
|
||||||
hass.states.async_set("lock.test1", state_1)
|
hass.states.async_set("lock.test1", state_1)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user