Home Assistant Unofficial Reference 2024.12.1
notify.py
Go to the documentation of this file.
1 """Support for KNX/IP notifications."""
2 
3 from __future__ import annotations
4 
5 from xknx import XKNX
6 from xknx.devices import Notification as XknxNotification
7 
8 from homeassistant import config_entries
9 from homeassistant.components.notify import NotifyEntity
10 from homeassistant.const import CONF_ENTITY_CATEGORY, CONF_NAME, CONF_TYPE, Platform
11 from homeassistant.core import HomeAssistant
12 from homeassistant.helpers.entity_platform import AddEntitiesCallback
13 from homeassistant.helpers.typing import ConfigType
14 
15 from . import KNXModule
16 from .const import KNX_ADDRESS, KNX_MODULE_KEY
17 from .entity import KnxYamlEntity
18 
19 
21  hass: HomeAssistant,
22  config_entry: config_entries.ConfigEntry,
23  async_add_entities: AddEntitiesCallback,
24 ) -> None:
25  """Set up notify(s) for KNX platform."""
26  knx_module = hass.data[KNX_MODULE_KEY]
27  config: list[ConfigType] = knx_module.config_yaml[Platform.NOTIFY]
28 
29  async_add_entities(KNXNotify(knx_module, entity_config) for entity_config in config)
30 
31 
32 def _create_notification_instance(xknx: XKNX, config: ConfigType) -> XknxNotification:
33  """Return a KNX Notification to be used within XKNX."""
34  return XknxNotification(
35  xknx,
36  name=config[CONF_NAME],
37  group_address=config[KNX_ADDRESS],
38  value_type=config[CONF_TYPE],
39  )
40 
41 
43  """Representation of a KNX notification entity."""
44 
45  _device: XknxNotification
46 
47  def __init__(self, knx_module: KNXModule, config: ConfigType) -> None:
48  """Initialize a KNX notification."""
49  super().__init__(
50  knx_module=knx_module,
51  device=_create_notification_instance(knx_module.xknx, config),
52  )
53  self._attr_entity_category_attr_entity_category = config.get(CONF_ENTITY_CATEGORY)
54  self._attr_unique_id_attr_unique_id = str(self._device_device.remote_value.group_address)
55 
56  async def async_send_message(self, message: str, title: str | None = None) -> None:
57  """Send a notification to knx bus."""
58  await self._device_device.set(message)
None async_send_message(self, str message, str|None title=None)
Definition: notify.py:56
None __init__(self, KNXModule knx_module, ConfigType config)
Definition: notify.py:47
None async_setup_entry(HomeAssistant hass, config_entries.ConfigEntry config_entry, AddEntitiesCallback async_add_entities)
Definition: notify.py:24
XknxNotification _create_notification_instance(XKNX xknx, ConfigType config)
Definition: notify.py:32