mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 03:07:37 +00:00
Ensure lutron_caseta triggers can still be attached in setup retry state (#57873)
This commit is contained in:
parent
3e57d0d3d3
commit
ad463b7994
@ -22,6 +22,7 @@ from homeassistant.const import (
|
|||||||
CONF_TYPE,
|
CONF_TYPE,
|
||||||
)
|
)
|
||||||
from homeassistant.core import CALLBACK_TYPE, HomeAssistant
|
from homeassistant.core import CALLBACK_TYPE, HomeAssistant
|
||||||
|
from homeassistant.helpers import device_registry as dr
|
||||||
from homeassistant.helpers.typing import ConfigType
|
from homeassistant.helpers.typing import ConfigType
|
||||||
|
|
||||||
from .const import (
|
from .const import (
|
||||||
@ -255,6 +256,12 @@ async def async_get_triggers(
|
|||||||
return triggers
|
return triggers
|
||||||
|
|
||||||
|
|
||||||
|
def _device_model_to_type(model: str) -> str:
|
||||||
|
"""Convert a lutron_caseta device registry entry model to type."""
|
||||||
|
_, device_type = model.split(" ")
|
||||||
|
return device_type.replace("(", "").replace(")", "")
|
||||||
|
|
||||||
|
|
||||||
async def async_attach_trigger(
|
async def async_attach_trigger(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
config: ConfigType,
|
config: ConfigType,
|
||||||
@ -262,15 +269,18 @@ async def async_attach_trigger(
|
|||||||
automation_info: AutomationTriggerInfo,
|
automation_info: AutomationTriggerInfo,
|
||||||
) -> CALLBACK_TYPE:
|
) -> CALLBACK_TYPE:
|
||||||
"""Attach a trigger."""
|
"""Attach a trigger."""
|
||||||
device = get_button_device_by_dr_id(hass, config[CONF_DEVICE_ID])
|
device_registry = dr.async_get(hass)
|
||||||
schema = DEVICE_TYPE_SCHEMA_MAP.get(device["type"])
|
device = device_registry.async_get(config[CONF_DEVICE_ID])
|
||||||
valid_buttons = DEVICE_TYPE_SUBTYPE_MAP.get(device["type"])
|
device_type = _device_model_to_type(device.model)
|
||||||
|
_, serial = list(device.identifiers)[0]
|
||||||
|
schema = DEVICE_TYPE_SCHEMA_MAP.get(device_type)
|
||||||
|
valid_buttons = DEVICE_TYPE_SUBTYPE_MAP.get(device_type)
|
||||||
config = schema(config)
|
config = schema(config)
|
||||||
event_config = {
|
event_config = {
|
||||||
event_trigger.CONF_PLATFORM: CONF_EVENT,
|
event_trigger.CONF_PLATFORM: CONF_EVENT,
|
||||||
event_trigger.CONF_EVENT_TYPE: LUTRON_CASETA_BUTTON_EVENT,
|
event_trigger.CONF_EVENT_TYPE: LUTRON_CASETA_BUTTON_EVENT,
|
||||||
event_trigger.CONF_EVENT_DATA: {
|
event_trigger.CONF_EVENT_DATA: {
|
||||||
ATTR_SERIAL: device["serial"],
|
ATTR_SERIAL: serial,
|
||||||
ATTR_BUTTON_NUMBER: valid_buttons[config[CONF_SUBTYPE]],
|
ATTR_BUTTON_NUMBER: valid_buttons[config[CONF_SUBTYPE]],
|
||||||
ATTR_ACTION: config[CONF_TYPE],
|
ATTR_ACTION: config[CONF_TYPE],
|
||||||
},
|
},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user