Home Assistant Unofficial Reference 2024.12.1
entity.py
Go to the documentation of this file.
1 """Base entity class for DROP entities."""
2 
3 from __future__ import annotations
4 
5 from typing import TYPE_CHECKING
6 
7 from homeassistant.helpers.device_registry import DeviceInfo
8 from homeassistant.helpers.update_coordinator import CoordinatorEntity
9 
10 from .const import (
11  CONF_DEVICE_DESC,
12  CONF_DEVICE_NAME,
13  CONF_DEVICE_OWNER_ID,
14  CONF_DEVICE_TYPE,
15  CONF_HUB_ID,
16  DEV_HUB,
17  DOMAIN,
18 )
19 from .coordinator import DROPDeviceDataUpdateCoordinator
20 
21 
22 class DROPEntity(CoordinatorEntity[DROPDeviceDataUpdateCoordinator]):
23  """Representation of a DROP device entity."""
24 
25  _attr_has_entity_name = True
26 
27  def __init__(
28  self, entity_type: str, coordinator: DROPDeviceDataUpdateCoordinator
29  ) -> None:
30  """Init DROP entity."""
31  super().__init__(coordinator)
32  if TYPE_CHECKING:
33  assert coordinator.config_entry.unique_id is not None
34  unique_id = coordinator.config_entry.unique_id
35  self._attr_unique_id_attr_unique_id = f"{unique_id}_{entity_type}"
36  entry_data = coordinator.config_entry.data
37  model: str = entry_data[CONF_DEVICE_DESC]
38  if entry_data[CONF_DEVICE_TYPE] == DEV_HUB:
39  model = f"Hub {entry_data[CONF_HUB_ID]}"
40  self._attr_device_info_attr_device_info = DeviceInfo(
41  manufacturer="Chandler Systems, Inc.",
42  model=model,
43  name=entry_data[CONF_DEVICE_NAME],
44  identifiers={(DOMAIN, unique_id)},
45  )
46  if entry_data[CONF_DEVICE_TYPE] != DEV_HUB:
47  self._attr_device_info_attr_device_info.update(
48  {
49  "via_device": (
50  DOMAIN,
51  entry_data[CONF_DEVICE_OWNER_ID],
52  )
53  }
54  )
None __init__(self, str entity_type, DROPDeviceDataUpdateCoordinator coordinator)
Definition: entity.py:29