Home Assistant Unofficial Reference 2024.12.1
trigger.py
Go to the documentation of this file.
1 """Home Assistant trigger dispatcher."""
2 
3 from typing import cast
4 
5 from homeassistant.const import CONF_PLATFORM
6 from homeassistant.core import CALLBACK_TYPE, HomeAssistant
7 from homeassistant.helpers.importlib import async_import_module
9  TriggerActionType,
10  TriggerInfo,
11  TriggerProtocol,
12 )
13 from homeassistant.helpers.typing import ConfigType
14 
15 
17  hass: HomeAssistant, platform_name: str
18 ) -> TriggerProtocol:
19  """Get trigger platform from cache or import it."""
20  platform = await async_import_module(
21  hass, f"homeassistant.components.homeassistant.triggers.{platform_name}"
22  )
23  return cast(TriggerProtocol, platform)
24 
25 
27  hass: HomeAssistant, config: ConfigType
28 ) -> ConfigType:
29  """Validate config."""
30  platform = await _async_get_trigger_platform(hass, config[CONF_PLATFORM])
31  if hasattr(platform, "async_validate_trigger_config"):
32  return await platform.async_validate_trigger_config(hass, config)
33 
34  return platform.TRIGGER_SCHEMA(config) # type: ignore[no-any-return]
35 
36 
38  hass: HomeAssistant,
39  config: ConfigType,
40  action: TriggerActionType,
41  trigger_info: TriggerInfo,
42 ) -> CALLBACK_TYPE:
43  """Attach trigger of specified platform."""
44  platform = await _async_get_trigger_platform(hass, config[CONF_PLATFORM])
45  return await platform.async_attach_trigger(hass, config, action, trigger_info)
CALLBACK_TYPE async_attach_trigger(HomeAssistant hass, ConfigType config, TriggerActionType action, TriggerInfo trigger_info)
Definition: trigger.py:42
TriggerProtocol _async_get_trigger_platform(HomeAssistant hass, str platform_name)
Definition: trigger.py:18
ConfigType async_validate_trigger_config(HomeAssistant hass, ConfigType config)
Definition: trigger.py:28
ModuleType async_import_module(HomeAssistant hass, str name)
Definition: importlib.py:30