Home Assistant Unofficial Reference 2024.12.1
event.py
Go to the documentation of this file.
1 """Support for Folder watcher event entities."""
2 
3 from __future__ import annotations
4 
5 from typing import Any
6 
7 from watchdog.events import (
8  EVENT_TYPE_CLOSED,
9  EVENT_TYPE_CREATED,
10  EVENT_TYPE_DELETED,
11  EVENT_TYPE_MODIFIED,
12  EVENT_TYPE_MOVED,
13 )
14 
15 from homeassistant.components.event import EventEntity
16 from homeassistant.config_entries import ConfigEntry
17 from homeassistant.core import HomeAssistant, callback
18 from homeassistant.helpers import device_registry as dr
19 from homeassistant.helpers.dispatcher import async_dispatcher_connect
20 from homeassistant.helpers.entity_platform import AddEntitiesCallback
21 
22 from .const import DOMAIN
23 
24 
26  hass: HomeAssistant,
27  entry: ConfigEntry,
28  async_add_entities: AddEntitiesCallback,
29 ) -> None:
30  """Set up Folder Watcher event."""
31 
33 
34 
36  """Representation of a Folder watcher event entity."""
37 
38  _attr_should_poll = False
39  _attr_has_entity_name = True
40  _attr_event_types = [
41  EVENT_TYPE_CLOSED,
42  EVENT_TYPE_CREATED,
43  EVENT_TYPE_DELETED,
44  EVENT_TYPE_MODIFIED,
45  EVENT_TYPE_MOVED,
46  ]
47  _attr_name = None
48  _attr_translation_key = DOMAIN
49 
50  def __init__(
51  self,
52  entry: ConfigEntry,
53  ) -> None:
54  """Initialise a Folder watcher event entity."""
55  self._attr_device_info_attr_device_info = dr.DeviceInfo(
56  identifiers={(DOMAIN, entry.entry_id)},
57  name=entry.title,
58  manufacturer="Folder watcher",
59  )
60  self._attr_unique_id_attr_unique_id = entry.entry_id
61  self._entry_entry = entry
62 
63  @callback
64  def _async_handle_event(self, event: str, _extra: dict[str, Any]) -> None:
65  """Handle the event."""
66  self._trigger_event_trigger_event(event, _extra)
67  self.async_write_ha_stateasync_write_ha_state()
68 
69  async def async_added_to_hass(self) -> None:
70  """Register callbacks."""
71  await super().async_added_to_hass()
72  signal = f"folder_watcher-{self._entry.entry_id}"
73  self.async_on_removeasync_on_remove(
74  async_dispatcher_connect(self.hasshass, signal, self._async_handle_event_async_handle_event)
75  )
None _trigger_event(self, str event_type, dict[str, Any]|None event_attributes=None)
Definition: __init__.py:148
None _async_handle_event(self, str event, dict[str, Any] _extra)
Definition: event.py:64
None async_on_remove(self, CALLBACK_TYPE func)
Definition: entity.py:1331
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)
Definition: event.py:29
Callable[[], None] async_dispatcher_connect(HomeAssistant hass, str signal, Callable[..., Any] target)
Definition: dispatcher.py:103