mirror of
https://github.com/home-assistant/core.git
synced 2025-07-25 06:07:17 +00:00
Use correct default value for multi press buttons in the Matter integration (#141630)
* Respect the min 2 constraint for the switch MultiPressMax attribute * Update test_event.py * Update generic_switch_multi.json * Fix issue and update tests
This commit is contained in:
parent
45e273897a
commit
e4d6e20ebd
@ -69,7 +69,7 @@ class MatterEventEntity(MatterEntity, EventEntity):
|
|||||||
max_presses_supported = self.get_matter_attribute_value(
|
max_presses_supported = self.get_matter_attribute_value(
|
||||||
clusters.Switch.Attributes.MultiPressMax
|
clusters.Switch.Attributes.MultiPressMax
|
||||||
)
|
)
|
||||||
max_presses_supported = min(max_presses_supported or 1, 8)
|
max_presses_supported = min(max_presses_supported or 2, 8)
|
||||||
for i in range(max_presses_supported):
|
for i in range(max_presses_supported):
|
||||||
event_types.append(f"multi_press_{i + 1}") # noqa: PERF401
|
event_types.append(f"multi_press_{i + 1}") # noqa: PERF401
|
||||||
elif feature_map & SwitchFeature.kMomentarySwitch:
|
elif feature_map & SwitchFeature.kMomentarySwitch:
|
||||||
|
@ -72,7 +72,6 @@
|
|||||||
"1/59/0": 2,
|
"1/59/0": 2,
|
||||||
"1/59/65533": 1,
|
"1/59/65533": 1,
|
||||||
"1/59/1": 0,
|
"1/59/1": 0,
|
||||||
"1/59/2": 2,
|
|
||||||
"1/59/65531": [0, 1, 65528, 65529, 65531, 65532, 65533],
|
"1/59/65531": [0, 1, 65528, 65529, 65531, 65532, 65533],
|
||||||
"1/59/65532": 30,
|
"1/59/65532": 30,
|
||||||
"1/59/65528": [],
|
"1/59/65528": [],
|
||||||
@ -102,7 +101,7 @@
|
|||||||
"2/59/0": 2,
|
"2/59/0": 2,
|
||||||
"2/59/65533": 1,
|
"2/59/65533": 1,
|
||||||
"2/59/1": 0,
|
"2/59/1": 0,
|
||||||
"2/59/2": 2,
|
"2/59/2": 4,
|
||||||
"2/59/65531": [0, 1, 65528, 65529, 65531, 65532, 65533],
|
"2/59/65531": [0, 1, 65528, 65529, 65531, 65532, 65533],
|
||||||
"2/59/65532": 30,
|
"2/59/65532": 30,
|
||||||
"2/59/65528": [],
|
"2/59/65528": [],
|
||||||
|
@ -132,6 +132,8 @@
|
|||||||
'event_types': list([
|
'event_types': list([
|
||||||
'multi_press_1',
|
'multi_press_1',
|
||||||
'multi_press_2',
|
'multi_press_2',
|
||||||
|
'multi_press_3',
|
||||||
|
'multi_press_4',
|
||||||
'long_press',
|
'long_press',
|
||||||
'long_release',
|
'long_release',
|
||||||
]),
|
]),
|
||||||
@ -172,6 +174,8 @@
|
|||||||
'event_types': list([
|
'event_types': list([
|
||||||
'multi_press_1',
|
'multi_press_1',
|
||||||
'multi_press_2',
|
'multi_press_2',
|
||||||
|
'multi_press_3',
|
||||||
|
'multi_press_4',
|
||||||
'long_press',
|
'long_press',
|
||||||
'long_release',
|
'long_release',
|
||||||
]),
|
]),
|
||||||
|
@ -36,7 +36,7 @@ async def test_generic_switch_node(
|
|||||||
assert state
|
assert state
|
||||||
assert state.state == "unknown"
|
assert state.state == "unknown"
|
||||||
assert state.name == "Mock Generic Switch Button"
|
assert state.name == "Mock Generic Switch Button"
|
||||||
# check event_types from featuremap 30
|
# check event_types from featuremap 14 (0b1110)
|
||||||
assert state.attributes[ATTR_EVENT_TYPES] == [
|
assert state.attributes[ATTR_EVENT_TYPES] == [
|
||||||
"initial_press",
|
"initial_press",
|
||||||
"short_release",
|
"short_release",
|
||||||
@ -76,7 +76,7 @@ async def test_generic_switch_multi_node(
|
|||||||
assert state_button_1.state == "unknown"
|
assert state_button_1.state == "unknown"
|
||||||
# name should be 'DeviceName Button (1)' due to the label set to just '1'
|
# name should be 'DeviceName Button (1)' due to the label set to just '1'
|
||||||
assert state_button_1.name == "Mock Generic Switch Button (1)"
|
assert state_button_1.name == "Mock Generic Switch Button (1)"
|
||||||
# check event_types from featuremap 14
|
# check event_types from featuremap 30 (0b11110) and MultiPressMax unset (default 2)
|
||||||
assert state_button_1.attributes[ATTR_EVENT_TYPES] == [
|
assert state_button_1.attributes[ATTR_EVENT_TYPES] == [
|
||||||
"multi_press_1",
|
"multi_press_1",
|
||||||
"multi_press_2",
|
"multi_press_2",
|
||||||
@ -84,11 +84,20 @@ async def test_generic_switch_multi_node(
|
|||||||
"long_release",
|
"long_release",
|
||||||
]
|
]
|
||||||
# check button 2
|
# check button 2
|
||||||
state_button_1 = hass.states.get("event.mock_generic_switch_fancy_button")
|
state_button_2 = hass.states.get("event.mock_generic_switch_fancy_button")
|
||||||
assert state_button_1
|
assert state_button_2
|
||||||
assert state_button_1.state == "unknown"
|
assert state_button_2.state == "unknown"
|
||||||
# name should be 'DeviceName Fancy Button' due to the label set to 'Fancy Button'
|
# name should be 'DeviceName Fancy Button' due to the label set to 'Fancy Button'
|
||||||
assert state_button_1.name == "Mock Generic Switch Fancy Button"
|
assert state_button_2.name == "Mock Generic Switch Fancy Button"
|
||||||
|
# check event_types from featuremap 30 (0b11110) and MultiPressMax 4
|
||||||
|
assert state_button_2.attributes[ATTR_EVENT_TYPES] == [
|
||||||
|
"multi_press_1",
|
||||||
|
"multi_press_2",
|
||||||
|
"multi_press_3",
|
||||||
|
"multi_press_4",
|
||||||
|
"long_press",
|
||||||
|
"long_release",
|
||||||
|
]
|
||||||
|
|
||||||
# trigger firing a multi press event
|
# trigger firing a multi press event
|
||||||
await trigger_subscription_callback(
|
await trigger_subscription_callback(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user