1 """LG Netcast TV device turn on trigger."""
3 import voluptuous
as vol
22 from ..const
import DOMAIN
23 from ..helpers
import async_get_device_entry_by_device_id
25 PLATFORM_TYPE = f
"{DOMAIN}.{__name__.rsplit('.', maxsplit=1)[-1]}"
27 TRIGGER_SCHEMA = vol.All(
28 cv.TRIGGER_BASE_SCHEMA.extend(
30 vol.Required(CONF_PLATFORM): PLATFORM_TYPE,
31 vol.Optional(ATTR_DEVICE_ID): vol.All(cv.ensure_list, [cv.string]),
32 vol.Optional(ATTR_ENTITY_ID): cv.entity_ids,
35 cv.has_at_least_one_key(ATTR_ENTITY_ID, ATTR_DEVICE_ID),
40 """Return data for a turn on trigger."""
43 CONF_PLATFORM:
"device",
44 CONF_DEVICE_ID: device_id,
46 CONF_TYPE: PLATFORM_TYPE,
53 action: TriggerActionType,
54 trigger_info: TriggerInfo,
56 platform_type: str = PLATFORM_TYPE,
57 ) -> CALLBACK_TYPE |
None:
58 """Attach a trigger."""
60 if ATTR_DEVICE_ID
in config:
61 device_ids.update(config.get(ATTR_DEVICE_ID, []))
63 if ATTR_ENTITY_ID
in config:
64 ent_reg = er.async_get(hass)
66 def _get_device_id_from_entity_id(entity_id):
67 entity_entry = ent_reg.async_get(entity_id)
71 or entity_entry.device_id
is None
72 or entity_entry.platform != DOMAIN
74 raise ValueError(f
"Entity {entity_id} is not a valid {DOMAIN} entity.")
76 return entity_entry.device_id
80 _get_device_id_from_entity_id(entity_id)
81 for entity_id
in config.get(ATTR_ENTITY_ID, [])
85 trigger_data = trigger_info[
"trigger_data"]
89 for device_id
in device_ids:
91 device_name = device.name_by_user
or device.name
95 CONF_PLATFORM: platform_type,
96 ATTR_DEVICE_ID: device_id,
97 "description": f
"lg netcast turn on trigger for {device_name}",
103 PluggableAction.async_attach_trigger(
104 hass, turn_on_trigger, action, {
"trigger": variables}
110 """Remove state listeners async."""
DeviceEntry async_get_device_entry_by_device_id(HomeAssistant hass, str device_id)
dict[str, str] async_get_turn_on_trigger(str device_id)
CALLBACK_TYPE|None async_attach_trigger(HomeAssistant hass, ConfigType config, TriggerActionType action, TriggerInfo trigger_info, *str platform_type=PLATFORM_TYPE)
None async_remove(HomeAssistant hass, str intent_type)