Modify behavior of lock groups (#74055)

This commit is contained in:
Erik Montnemery 2022-06-28 10:29:56 +02:00 committed by GitHub
parent 8328f9b623
commit 824de2ef4c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 20 deletions

View file

@ -166,7 +166,7 @@ class LockGroup(GroupEntity, LockEntity):
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
)

View file

@ -90,28 +90,10 @@ async def test_state_reporting(hass):
await hass.async_block_till_done()
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 (
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_UNKNOWN,
STATE_UNLOCKED,
STATE_UNLOCKING,
):
hass.states.async_set("lock.test1", state_1)
hass.states.async_set("lock.test2", STATE_UNKNOWN)
@ -123,6 +105,8 @@ async def test_state_reporting(hass):
STATE_JAMMED,
STATE_LOCKED,
STATE_LOCKING,
STATE_UNAVAILABLE,
STATE_UNKNOWN,
STATE_UNLOCKED,
STATE_UNLOCKING,
):
@ -135,6 +119,8 @@ async def test_state_reporting(hass):
for state_1 in (
STATE_LOCKED,
STATE_LOCKING,
STATE_UNAVAILABLE,
STATE_UNKNOWN,
STATE_UNLOCKED,
STATE_UNLOCKING,
):
@ -146,6 +132,8 @@ async def test_state_reporting(hass):
# At least one member unlocking -> group unlocking
for state_1 in (
STATE_LOCKED,
STATE_UNAVAILABLE,
STATE_UNKNOWN,
STATE_UNLOCKED,
STATE_UNLOCKING,
):
@ -157,6 +145,8 @@ async def test_state_reporting(hass):
# At least one member unlocked -> group unlocked
for state_1 in (
STATE_LOCKED,
STATE_UNAVAILABLE,
STATE_UNKNOWN,
STATE_UNLOCKED,
):
hass.states.async_set("lock.test1", state_1)