Add support for multi-tap action in Lutron Caseta integration (#150551)

This commit is contained in:
Rafael López Diez
2025-09-16 13:32:10 +02:00
committed by GitHub
parent 892f3f267b
commit de7e2303a7
7 changed files with 22 additions and 6 deletions

View File

@@ -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

View File

@@ -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"

View File

@@ -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(
{

View File

@@ -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
View File

@@ -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

View File

@@ -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

View File

@@ -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(