Home Assistant Unofficial Reference 2024.12.1
notify.py
Go to the documentation of this file.
1 """Support for System Bridge notification service."""
2 
3 from __future__ import annotations
4 
5 import logging
6 from typing import Any
7 
8 from systembridgemodels.notification import Notification
9 
11  ATTR_DATA,
12  ATTR_TITLE,
13  ATTR_TITLE_DEFAULT,
14  BaseNotificationService,
15 )
16 from homeassistant.const import ATTR_ICON, CONF_ENTITY_ID
17 from homeassistant.core import HomeAssistant
18 from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
19 
20 from .const import DOMAIN
21 from .coordinator import SystemBridgeDataUpdateCoordinator
22 
23 _LOGGER = logging.getLogger(__name__)
24 
25 ATTR_ACTIONS = "actions"
26 ATTR_AUDIO = "audio"
27 ATTR_IMAGE = "image"
28 ATTR_TIMEOUT = "timeout"
29 
30 
32  hass: HomeAssistant,
33  config: ConfigType,
34  discovery_info: DiscoveryInfoType | None = None,
35 ) -> SystemBridgeNotificationService | None:
36  """Get the System Bridge notification service."""
37  if discovery_info is None:
38  return None
39 
40  coordinator: SystemBridgeDataUpdateCoordinator = hass.data[DOMAIN][
41  discovery_info[CONF_ENTITY_ID]
42  ]
43 
44  return SystemBridgeNotificationService(coordinator)
45 
46 
47 class SystemBridgeNotificationService(BaseNotificationService):
48  """Implement the notification service for System Bridge."""
49 
50  def __init__(
51  self,
52  coordinator: SystemBridgeDataUpdateCoordinator,
53  ) -> None:
54  """Initialize the service."""
55  self._coordinator: SystemBridgeDataUpdateCoordinator = coordinator
56 
57  async def async_send_message(
58  self,
59  message: str = "",
60  **kwargs: Any,
61  ) -> None:
62  """Send a message."""
63  data = kwargs.get(ATTR_DATA, {}) or {}
64 
65  notification = Notification(
66  actions=data.get(ATTR_ACTIONS),
67  audio=data.get(ATTR_AUDIO),
68  icon=data.get(ATTR_ICON),
69  image=data.get(ATTR_IMAGE),
70  message=message,
71  timeout=data.get(ATTR_TIMEOUT),
72  title=kwargs.get(ATTR_TITLE, data.get(ATTR_TITLE, ATTR_TITLE_DEFAULT)),
73  )
74 
75  _LOGGER.debug("Sending notification: %s", notification)
76 
77  await self._coordinator.websocket_client.send_notification(notification)
None __init__(self, SystemBridgeDataUpdateCoordinator coordinator)
Definition: notify.py:53
SystemBridgeNotificationService|None async_get_service(HomeAssistant hass, ConfigType config, DiscoveryInfoType|None discovery_info=None)
Definition: notify.py:35