Home Assistant Unofficial Reference 2024.12.1
entity.py
Go to the documentation of this file.
1 """Support for iBeacon device sensors."""
2 
3 from __future__ import annotations
4 
5 from abc import abstractmethod
6 
7 from ibeacon_ble import iBeaconAdvertisement
8 
9 from homeassistant.core import callback
10 from homeassistant.helpers.device_registry import DeviceInfo
11 from homeassistant.helpers.dispatcher import async_dispatcher_connect
12 from homeassistant.helpers.entity import Entity
13 
14 from .const import ATTR_MAJOR, ATTR_MINOR, ATTR_SOURCE, ATTR_UUID, DOMAIN
15 from .coordinator import IBeaconCoordinator, signal_seen, signal_unavailable
16 
17 
19  """An iBeacon entity."""
20 
21  _attr_should_poll = False
22  _attr_has_entity_name = True
23 
24  def __init__(
25  self,
26  coordinator: IBeaconCoordinator,
27  identifier: str,
28  device_unique_id: str,
29  ibeacon_advertisement: iBeaconAdvertisement,
30  ) -> None:
31  """Initialize an iBeacon sensor entity."""
32  self._device_unique_id_device_unique_id = device_unique_id
33  self._coordinator_coordinator = coordinator
34  self._ibeacon_advertisement_ibeacon_advertisement = ibeacon_advertisement
35  self._attr_device_info_attr_device_info = DeviceInfo(
36  name=identifier,
37  identifiers={(DOMAIN, device_unique_id)},
38  )
39 
40  @property
42  self,
43  ) -> dict[str, str | int]:
44  """Return the device state attributes."""
45  ibeacon_advertisement = self._ibeacon_advertisement_ibeacon_advertisement
46  return {
47  ATTR_UUID: str(ibeacon_advertisement.uuid),
48  ATTR_MAJOR: ibeacon_advertisement.major,
49  ATTR_MINOR: ibeacon_advertisement.minor,
50  ATTR_SOURCE: ibeacon_advertisement.source,
51  }
52 
53  @abstractmethod
54  @callback
56  self,
57  ibeacon_advertisement: iBeaconAdvertisement,
58  ) -> None:
59  """Update state."""
60 
61  @abstractmethod
62  @callback
63  def _async_unavailable(self) -> None:
64  """Set unavailable."""
65 
66  async def async_added_to_hass(self) -> None:
67  """Register state update callbacks."""
68  await super().async_added_to_hass()
69  self.async_on_remove(
71  self.hass,
72  signal_seen(self._device_unique_id),
73  self._async_seen,
74  )
75  )
76  self.async_on_remove(
78  self.hass,
79  signal_unavailable(self._device_unique_id),
80  self._async_unavailable,
81  )
82  )
dict[str, str|int] extra_state_attributes(self)
Definition: entity.py:43
None _async_seen(self, iBeaconAdvertisement ibeacon_advertisement)
Definition: entity.py:58
None __init__(self, IBeaconCoordinator coordinator, str identifier, str device_unique_id, iBeaconAdvertisement ibeacon_advertisement)
Definition: entity.py:30
Callable[[], None] async_dispatcher_connect(HomeAssistant hass, str signal, Callable[..., Any] target)
Definition: dispatcher.py:103