mirror of
https://github.com/home-assistant/core.git
synced 2025-07-16 17:57:11 +00:00
Zwave: Apply refresh_node workaround on 1st instance only (#7579)
* Apply refresh_node workaround on 1st instance only * Add another test
This commit is contained in:
parent
24b7fd3694
commit
927024714b
@ -24,7 +24,7 @@ SOMFY_ZRTSI = 0x5a52
|
|||||||
PHILIO_SLIM_SENSOR_MOTION_MTII = (PHILIO, PHILIO_SENSOR, PHILIO_SLIM_SENSOR, 0)
|
PHILIO_SLIM_SENSOR_MOTION_MTII = (PHILIO, PHILIO_SENSOR, PHILIO_SLIM_SENSOR, 0)
|
||||||
PHILIO_3_IN_1_SENSOR_GEN_4_MOTION_MTII = (
|
PHILIO_3_IN_1_SENSOR_GEN_4_MOTION_MTII = (
|
||||||
PHILIO, PHILIO_SENSOR, PHILIO_3_IN_1_SENSOR_GEN_4, 0)
|
PHILIO, PHILIO_SENSOR, PHILIO_3_IN_1_SENSOR_GEN_4, 0)
|
||||||
PHILIO_PAN07_MTII = (PHILIO, PHILIO_SWITCH, PHILIO_PAN07, 0)
|
PHILIO_PAN07_MTI_INSTANCE = (PHILIO, PHILIO_SWITCH, PHILIO_PAN07, 1)
|
||||||
WENZHOU_SLIM_SENSOR_MOTION_MTII = (
|
WENZHOU_SLIM_SENSOR_MOTION_MTII = (
|
||||||
WENZHOU, PHILIO_SENSOR, PHILIO_SLIM_SENSOR, 0)
|
WENZHOU, PHILIO_SENSOR, PHILIO_SLIM_SENSOR, 0)
|
||||||
|
|
||||||
@ -39,7 +39,11 @@ DEVICE_MAPPINGS_MTII = {
|
|||||||
PHILIO_SLIM_SENSOR_MOTION_MTII: WORKAROUND_NO_OFF_EVENT,
|
PHILIO_SLIM_SENSOR_MOTION_MTII: WORKAROUND_NO_OFF_EVENT,
|
||||||
PHILIO_3_IN_1_SENSOR_GEN_4_MOTION_MTII: WORKAROUND_NO_OFF_EVENT,
|
PHILIO_3_IN_1_SENSOR_GEN_4_MOTION_MTII: WORKAROUND_NO_OFF_EVENT,
|
||||||
WENZHOU_SLIM_SENSOR_MOTION_MTII: WORKAROUND_NO_OFF_EVENT,
|
WENZHOU_SLIM_SENSOR_MOTION_MTII: WORKAROUND_NO_OFF_EVENT,
|
||||||
PHILIO_PAN07_MTII: WORKAROUND_REFRESH_NODE_ON_UPDATE,
|
}
|
||||||
|
|
||||||
|
# List of workarounds by (manufacturer_id, product_type, product_id, instance)
|
||||||
|
DEVICE_MAPPINGS_MTI_INSTANCE = {
|
||||||
|
PHILIO_PAN07_MTI_INSTANCE: WORKAROUND_REFRESH_NODE_ON_UPDATE,
|
||||||
}
|
}
|
||||||
|
|
||||||
SOMFY_ZRTSI_CONTROLLER_MT = (SOMFY, SOMFY_ZRTSI)
|
SOMFY_ZRTSI_CONTROLLER_MT = (SOMFY, SOMFY_ZRTSI)
|
||||||
@ -91,6 +95,12 @@ def get_device_mapping(value):
|
|||||||
(manufacturer_id, product_type, product_id, value.index))
|
(manufacturer_id, product_type, product_id, value.index))
|
||||||
if result:
|
if result:
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
result = DEVICE_MAPPINGS_MTI_INSTANCE.get(
|
||||||
|
(manufacturer_id, product_type, product_id, value.instance))
|
||||||
|
if result:
|
||||||
|
return result
|
||||||
|
|
||||||
return DEVICE_MAPPINGS_MT.get((manufacturer_id, product_type))
|
return DEVICE_MAPPINGS_MT.get((manufacturer_id, product_type))
|
||||||
|
|
||||||
return None
|
return None
|
||||||
|
@ -4,7 +4,7 @@ from unittest.mock import patch
|
|||||||
from homeassistant.components.switch import zwave
|
from homeassistant.components.switch import zwave
|
||||||
|
|
||||||
from tests.mock.zwave import (
|
from tests.mock.zwave import (
|
||||||
MockNode, MockValue, MockEntityValues, value_changed)
|
MockNode, MockValue, MockEntityValues, value_changed)
|
||||||
|
|
||||||
|
|
||||||
def test_get_device_detects_switch(mock_openzwave):
|
def test_get_device_detects_switch(mock_openzwave):
|
||||||
@ -61,7 +61,7 @@ def test_switch_refresh_on_update(mock_counter, mock_openzwave):
|
|||||||
mock_counter.return_value = 10
|
mock_counter.return_value = 10
|
||||||
node = MockNode(manufacturer_id='013c', product_type='0001',
|
node = MockNode(manufacturer_id='013c', product_type='0001',
|
||||||
product_id='0005')
|
product_id='0005')
|
||||||
value = MockValue(data=False, node=node)
|
value = MockValue(data=False, node=node, instance=1)
|
||||||
values = MockEntityValues(primary=value)
|
values = MockEntityValues(primary=value)
|
||||||
device = zwave.get_device(node=node, values=values, node_config={})
|
device = zwave.get_device(node=node, values=values, node_config={})
|
||||||
|
|
||||||
|
@ -38,3 +38,14 @@ def test_get_device_mapping_mtii():
|
|||||||
product_id='0002')
|
product_id='0002')
|
||||||
value = MockValue(data=0, node=node, index=0)
|
value = MockValue(data=0, node=node, index=0)
|
||||||
assert workaround.get_device_mapping(value) == 'trigger_no_off_event'
|
assert workaround.get_device_mapping(value) == 'trigger_no_off_event'
|
||||||
|
|
||||||
|
|
||||||
|
def test_get_device_mapping_mti_instance():
|
||||||
|
"""Test that device mapping mti_instance is returned."""
|
||||||
|
node = MockNode(manufacturer_id='013c', product_type='0001',
|
||||||
|
product_id='0005')
|
||||||
|
value = MockValue(data=0, node=node, instance=1)
|
||||||
|
assert workaround.get_device_mapping(value) == 'refresh_node_on_update'
|
||||||
|
|
||||||
|
value = MockValue(data=0, node=node, instance=2)
|
||||||
|
assert workaround.get_device_mapping(value) is None
|
||||||
|
Loading…
x
Reference in New Issue
Block a user