mirror of
https://github.com/home-assistant/core.git
synced 2026-04-20 16:39:02 +02:00
Add support for multi-tap action in Lutron Caseta integration (#150551)
This commit is contained in:
committed by
GitHub
parent
892f3f267b
commit
de7e2303a7
@@ -8,7 +8,7 @@ import logging
|
||||
import ssl
|
||||
from typing import Any, cast
|
||||
|
||||
from pylutron_caseta import BUTTON_STATUS_PRESSED
|
||||
from pylutron_caseta import BUTTON_STATUS_MULTITAP, BUTTON_STATUS_PRESSED
|
||||
from pylutron_caseta.smartbridge import Smartbridge
|
||||
import voluptuous as vol
|
||||
|
||||
@@ -25,6 +25,7 @@ from homeassistant.helpers.device_registry import DeviceInfo
|
||||
from homeassistant.helpers.typing import ConfigType
|
||||
|
||||
from .const import (
|
||||
ACTION_MULTITAP,
|
||||
ACTION_PRESS,
|
||||
ACTION_RELEASE,
|
||||
ATTR_ACTION,
|
||||
@@ -448,6 +449,8 @@ def _async_subscribe_keypad_events(
|
||||
|
||||
if event_type == BUTTON_STATUS_PRESSED:
|
||||
action = ACTION_PRESS
|
||||
elif event_type == BUTTON_STATUS_MULTITAP:
|
||||
action = ACTION_MULTITAP
|
||||
else:
|
||||
action = ACTION_RELEASE
|
||||
|
||||
|
||||
@@ -29,6 +29,7 @@ ATTR_DEVICE_NAME = "device_name"
|
||||
ATTR_AREA_NAME = "area_name"
|
||||
ATTR_ACTION = "action"
|
||||
|
||||
ACTION_MULTITAP = "multi_tap"
|
||||
ACTION_PRESS = "press"
|
||||
ACTION_RELEASE = "release"
|
||||
|
||||
|
||||
@@ -21,6 +21,7 @@ from homeassistant.helpers.trigger import TriggerActionType, TriggerInfo
|
||||
from homeassistant.helpers.typing import ConfigType
|
||||
|
||||
from .const import (
|
||||
ACTION_MULTITAP,
|
||||
ACTION_PRESS,
|
||||
ACTION_RELEASE,
|
||||
ATTR_ACTION,
|
||||
@@ -39,7 +40,7 @@ def _reverse_dict(forward_dict: dict) -> dict:
|
||||
return {v: k for k, v in forward_dict.items()}
|
||||
|
||||
|
||||
SUPPORTED_INPUTS_EVENTS_TYPES = [ACTION_PRESS, ACTION_RELEASE]
|
||||
SUPPORTED_INPUTS_EVENTS_TYPES = [ACTION_PRESS, ACTION_MULTITAP, ACTION_RELEASE]
|
||||
|
||||
LUTRON_BUTTON_TRIGGER_SCHEMA = DEVICE_TRIGGER_BASE_SCHEMA.extend(
|
||||
{
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
},
|
||||
"iot_class": "local_push",
|
||||
"loggers": ["pylutron_caseta"],
|
||||
"requirements": ["pylutron-caseta==0.24.0"],
|
||||
"requirements": ["pylutron-caseta==0.25.0"],
|
||||
"zeroconf": [
|
||||
{
|
||||
"type": "_lutron._tcp.local.",
|
||||
|
||||
2
requirements_all.txt
generated
2
requirements_all.txt
generated
@@ -2135,7 +2135,7 @@ pylitejet==0.6.3
|
||||
pylitterbot==2024.2.4
|
||||
|
||||
# homeassistant.components.lutron_caseta
|
||||
pylutron-caseta==0.24.0
|
||||
pylutron-caseta==0.25.0
|
||||
|
||||
# homeassistant.components.lutron
|
||||
pylutron==0.2.18
|
||||
|
||||
2
requirements_test_all.txt
generated
2
requirements_test_all.txt
generated
@@ -1783,7 +1783,7 @@ pylitejet==0.6.3
|
||||
pylitterbot==2024.2.4
|
||||
|
||||
# homeassistant.components.lutron_caseta
|
||||
pylutron-caseta==0.24.0
|
||||
pylutron-caseta==0.25.0
|
||||
|
||||
# homeassistant.components.lutron
|
||||
pylutron==0.2.18
|
||||
|
||||
@@ -148,6 +148,17 @@ async def test_get_triggers(hass: HomeAssistant) -> None:
|
||||
}
|
||||
for subtype in ("on", "stop", "off", "raise", "lower")
|
||||
]
|
||||
expected_triggers += [
|
||||
{
|
||||
CONF_DEVICE_ID: device_id,
|
||||
CONF_DOMAIN: DOMAIN,
|
||||
CONF_PLATFORM: "device",
|
||||
CONF_SUBTYPE: subtype,
|
||||
CONF_TYPE: "multi_tap",
|
||||
"metadata": {},
|
||||
}
|
||||
for subtype in ("on", "stop", "off", "raise", "lower")
|
||||
]
|
||||
|
||||
triggers = await async_get_device_automations(
|
||||
hass, DeviceAutomationType.TRIGGER, device_id
|
||||
@@ -439,7 +450,7 @@ async def test_validate_trigger_invalid_triggers(
|
||||
},
|
||||
)
|
||||
|
||||
assert "value must be one of ['press', 'release']" in caplog.text
|
||||
assert "value must be one of ['multi_tap', 'press', 'release']" in caplog.text
|
||||
|
||||
|
||||
async def test_if_fires_on_button_event_late_setup(
|
||||
|
||||
Reference in New Issue
Block a user