Home Assistant Unofficial Reference 2024.12.1
notify.py
Go to the documentation of this file.
1 """Support for Fully Kiosk Browser notifications."""
2 
3 from __future__ import annotations
4 
5 from dataclasses import dataclass
6 
7 from fullykiosk import FullyKioskError
8 
9 from homeassistant.components.notify import NotifyEntity, NotifyEntityDescription
10 from homeassistant.core import HomeAssistant
11 from homeassistant.exceptions import HomeAssistantError
12 from homeassistant.helpers.entity_platform import AddEntitiesCallback
13 
14 from . import FullyKioskConfigEntry
15 from .coordinator import FullyKioskDataUpdateCoordinator
16 from .entity import FullyKioskEntity
17 
18 
19 @dataclass(frozen=True, kw_only=True)
21  """Fully Kiosk Browser notify entity description."""
22 
23  cmd: str
24 
25 
26 NOTIFIERS: tuple[FullyNotifyEntityDescription, ...] = (
28  key="overlay_message",
29  translation_key="overlay_message",
30  cmd="setOverlayMessage",
31  ),
33  key="tts",
34  translation_key="tts",
35  cmd="textToSpeech",
36  ),
37 )
38 
39 
41  hass: HomeAssistant,
42  entry: FullyKioskConfigEntry,
43  async_add_entities: AddEntitiesCallback,
44 ) -> None:
45  """Set up the Fully Kiosk Browser notify entities."""
46  coordinator = entry.runtime_data
48  FullyNotifyEntity(coordinator, description) for description in NOTIFIERS
49  )
50 
51 
53  """Implement the notify entity for Fully Kiosk Browser."""
54 
55  entity_description: FullyNotifyEntityDescription
56 
57  def __init__(
58  self,
59  coordinator: FullyKioskDataUpdateCoordinator,
60  description: FullyNotifyEntityDescription,
61  ) -> None:
62  """Initialize the entity."""
63  FullyKioskEntity.__init__(self, coordinator)
64  NotifyEntity.__init__(self)
65  self.entity_descriptionentity_description = description
66  self._attr_unique_id_attr_unique_id = f"{coordinator.data['deviceID']}-{description.key}"
67 
68  async def async_send_message(self, message: str, title: str | None = None) -> None:
69  """Send a message."""
70  try:
71  await self.coordinator.fully.sendCommand(
72  self.entity_descriptionentity_description.cmd, text=message
73  )
74  except FullyKioskError as err:
75  raise HomeAssistantError(err) from err
None async_send_message(self, str message, str|None title=None)
Definition: notify.py:68
None __init__(self, FullyKioskDataUpdateCoordinator coordinator, FullyNotifyEntityDescription description)
Definition: notify.py:61
None async_setup_entry(HomeAssistant hass, FullyKioskConfigEntry entry, AddEntitiesCallback async_add_entities)
Definition: notify.py:44