Add workaround to use notification state for zwave lock state (#17386)
* Add workaround to use notification state for zwave lock state There are several zwave lock models out there which do not seem to update the lock state on non-rf events (see #11934 #14632 #14534 for examples) including kwikset smartkey zwave plus locks (which I own). In these cases it seems that the notifications for non-rf events the access_control value is updated but not the primary value for the lock state, which is what is used to set the is_locked property. To properly have the lock state accurate for all types of notifications on these models we need to use the access_control field. This commit adds a workaround for the 4 models reported to exhibit this behavior so that home-assistant will reliably set the lock state for all device notifications. * Add YRD220 as per adrum to workaround list * Inline constants
This commit is contained in:
parent
2bf2214d51
commit
087bffeaae
2 changed files with 38 additions and 2 deletions
|
@ -63,6 +63,22 @@ def test_lock_value_changed(mock_openzwave):
|
|||
assert device.is_locked
|
||||
|
||||
|
||||
def test_lock_value_changed_workaround(mock_openzwave):
|
||||
"""Test value changed for Z-Wave lock using notification state."""
|
||||
node = MockNode(manufacturer_id='0090', product_id='0440')
|
||||
values = MockEntityValues(
|
||||
primary=MockValue(data=True, node=node),
|
||||
access_control=MockValue(data=1, node=node),
|
||||
alarm_type=None,
|
||||
alarm_level=None,
|
||||
)
|
||||
device = zwave.get_device(node=node, values=values)
|
||||
assert device.is_locked
|
||||
values.access_control.data = 2
|
||||
value_changed(values.access_control)
|
||||
assert not device.is_locked
|
||||
|
||||
|
||||
def test_v2btze_value_changed(mock_openzwave):
|
||||
"""Test value changed for v2btze Z-Wave lock."""
|
||||
node = MockNode(manufacturer_id='010e', product_id='0002')
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue