mirror of
https://github.com/home-assistant/core.git
synced 2025-07-24 13:47:35 +00:00
Correct referenced entities and devices for event triggers (#76818)
This commit is contained in:
parent
f400a404cd
commit
1c1b23ef69
@ -36,6 +36,7 @@ from homeassistant.core import (
|
||||
HomeAssistant,
|
||||
callback,
|
||||
split_entity_id,
|
||||
valid_entity_id,
|
||||
)
|
||||
from homeassistant.exceptions import (
|
||||
ConditionError,
|
||||
@ -355,7 +356,7 @@ class AutomationEntity(ToggleEntity, RestoreEntity):
|
||||
referenced |= condition.async_extract_devices(conf)
|
||||
|
||||
for conf in self._trigger_config:
|
||||
referenced |= set(_trigger_extract_device(conf))
|
||||
referenced |= set(_trigger_extract_devices(conf))
|
||||
|
||||
self._referenced_devices = referenced
|
||||
return referenced
|
||||
@ -762,7 +763,7 @@ async def _async_process_if(hass, name, config, p_config):
|
||||
|
||||
|
||||
@callback
|
||||
def _trigger_extract_device(trigger_conf: dict) -> list[str]:
|
||||
def _trigger_extract_devices(trigger_conf: dict) -> list[str]:
|
||||
"""Extract devices from a trigger config."""
|
||||
if trigger_conf[CONF_PLATFORM] == "device":
|
||||
return [trigger_conf[CONF_DEVICE_ID]]
|
||||
@ -771,6 +772,7 @@ def _trigger_extract_device(trigger_conf: dict) -> list[str]:
|
||||
trigger_conf[CONF_PLATFORM] == "event"
|
||||
and CONF_EVENT_DATA in trigger_conf
|
||||
and CONF_DEVICE_ID in trigger_conf[CONF_EVENT_DATA]
|
||||
and isinstance(trigger_conf[CONF_EVENT_DATA][CONF_DEVICE_ID], str)
|
||||
):
|
||||
return [trigger_conf[CONF_EVENT_DATA][CONF_DEVICE_ID]]
|
||||
|
||||
@ -802,6 +804,8 @@ def _trigger_extract_entities(trigger_conf: dict) -> list[str]:
|
||||
trigger_conf[CONF_PLATFORM] == "event"
|
||||
and CONF_EVENT_DATA in trigger_conf
|
||||
and CONF_ENTITY_ID in trigger_conf[CONF_EVENT_DATA]
|
||||
and isinstance(trigger_conf[CONF_EVENT_DATA][CONF_ENTITY_ID], str)
|
||||
and valid_entity_id(trigger_conf[CONF_EVENT_DATA][CONF_ENTITY_ID])
|
||||
):
|
||||
return [trigger_conf[CONF_EVENT_DATA][CONF_ENTITY_ID]]
|
||||
|
||||
|
@ -1103,6 +1103,24 @@ async def test_extraction_functions(hass):
|
||||
"event_type": "state_changed",
|
||||
"event_data": {"entity_id": "sensor.trigger_event"},
|
||||
},
|
||||
# entity_id is a list of strings (not supported)
|
||||
{
|
||||
"platform": "event",
|
||||
"event_type": "state_changed",
|
||||
"event_data": {"entity_id": ["sensor.trigger_event2"]},
|
||||
},
|
||||
# entity_id is not a valid entity ID
|
||||
{
|
||||
"platform": "event",
|
||||
"event_type": "state_changed",
|
||||
"event_data": {"entity_id": "abc"},
|
||||
},
|
||||
# entity_id is not a string
|
||||
{
|
||||
"platform": "event",
|
||||
"event_type": "state_changed",
|
||||
"event_data": {"entity_id": 123},
|
||||
},
|
||||
],
|
||||
"condition": {
|
||||
"condition": "state",
|
||||
@ -1151,6 +1169,18 @@ async def test_extraction_functions(hass):
|
||||
"event_type": "esphome.button_pressed",
|
||||
"event_data": {"device_id": "device-trigger-event"},
|
||||
},
|
||||
# device_id is a list of strings (not supported)
|
||||
{
|
||||
"platform": "event",
|
||||
"event_type": "esphome.button_pressed",
|
||||
"event_data": {"device_id": ["device-trigger-event"]},
|
||||
},
|
||||
# device_id is not a string
|
||||
{
|
||||
"platform": "event",
|
||||
"event_type": "esphome.button_pressed",
|
||||
"event_data": {"device_id": 123},
|
||||
},
|
||||
],
|
||||
"condition": {
|
||||
"condition": "device",
|
||||
|
Loading…
x
Reference in New Issue
Block a user