Home Assistant Unofficial Reference 2024.12.1
entity.py
Go to the documentation of this file.
1 """Support the UPB PIM."""
2 
3 from homeassistant.core import callback
4 from homeassistant.helpers.device_registry import DeviceInfo
5 from homeassistant.helpers.entity import Entity
6 
7 from .const import DOMAIN
8 
9 
11  """Base class for all UPB entities."""
12 
13  _attr_should_poll = False
14 
15  def __init__(self, element, unique_id, upb):
16  """Initialize the base of all UPB devices."""
17  self._upb_upb = upb
18  self._element_element = element
19  element_type = "link" if element.addr.is_link else "device"
20  self._unique_id_unique_id = f"{unique_id}_{element_type}_{element.addr}"
21 
22  @property
23  def unique_id(self):
24  """Return unique id of the element."""
25  return self._unique_id_unique_id
26 
27  @property
29  """Return the default attributes of the element."""
30  return self._element_element.as_dict()
31 
32  @property
33  def available(self):
34  """Is the entity available to be updated."""
35  return self._upb_upb.is_connected()
36 
37  def _element_changed(self, element, changeset):
38  pass
39 
40  @callback
41  def _element_callback(self, element, changeset):
42  """Handle callback from an UPB element that has changed."""
43  self._element_changed_element_changed(element, changeset)
44  self.async_write_ha_stateasync_write_ha_state()
45 
46  async def async_added_to_hass(self):
47  """Register callback for UPB changes and update entity state."""
48  self._element_element.add_callback(self._element_callback_element_callback)
49  self._element_callback_element_callback(self._element_element, {})
50 
51 
53  """Base class for UPB attached entities."""
54 
55  @property
56  def device_info(self) -> DeviceInfo:
57  """Device info for the entity."""
58  return DeviceInfo(
59  identifiers={(DOMAIN, self._element_element.index)},
60  manufacturer=self._element_element.manufacturer,
61  model=self._element_element.product,
62  name=self._element_element.name,
63  sw_version=self._element_element.version,
64  )
def _element_changed(self, element, changeset)
Definition: entity.py:37
def _element_callback(self, element, changeset)
Definition: entity.py:41
def __init__(self, element, unique_id, upb)
Definition: entity.py:15