Home Assistant Unofficial Reference 2024.12.1
entity.py
Go to the documentation of this file.
1 """Generic platform."""
2 
3 from __future__ import annotations
4 
5 from devolo_plc_api.device_api import (
6  ConnectedStationInfo,
7  NeighborAPInfo,
8  WifiGuestAccessGet,
9 )
10 from devolo_plc_api.plcnet_api import DataRate, LogicalNetwork
11 
12 from homeassistant.const import ATTR_CONNECTIONS
13 from homeassistant.helpers.device_registry import CONNECTION_NETWORK_MAC, DeviceInfo
14 from homeassistant.helpers.entity import Entity
15 from homeassistant.helpers.update_coordinator import CoordinatorEntity
16 
17 from . import DevoloHomeNetworkConfigEntry
18 from .const import DOMAIN
19 from .coordinator import DevoloDataUpdateCoordinator
20 
21 type _DataType = (
22  LogicalNetwork
23  | DataRate
24  | list[ConnectedStationInfo]
25  | list[NeighborAPInfo]
26  | WifiGuestAccessGet
27  | bool
28  | int
29 )
30 
31 
33  """Representation of a devolo home network device."""
34 
35  _attr_has_entity_name = True
36 
37  def __init__(
38  self,
39  entry: DevoloHomeNetworkConfigEntry,
40  ) -> None:
41  """Initialize a devolo home network device."""
42  self.devicedevice = entry.runtime_data.device
43  self.entryentry = entry
44 
45  self._attr_device_info_attr_device_info = DeviceInfo(
46  configuration_url=f"http://{self.device.ip}",
47  identifiers={(DOMAIN, str(self.devicedevice.serial_number))},
48  manufacturer="devolo",
49  model=self.devicedevice.product,
50  model_id=self.devicedevice.mt_number,
51  serial_number=self.devicedevice.serial_number,
52  sw_version=self.devicedevice.firmware_version,
53  )
54  if self.devicedevice.mac:
55  self._attr_device_info_attr_device_info[ATTR_CONNECTIONS] = {
56  (CONNECTION_NETWORK_MAC, self.devicedevice.mac)
57  }
58  self._attr_translation_key_attr_translation_key = self.entity_description.key
59  self._attr_unique_id_attr_unique_id = (
60  f"{self.device.serial_number}_{self.entity_description.key}"
61  )
62 
63 
64 class DevoloCoordinatorEntity[_DataT: _DataType](
65  CoordinatorEntity[DevoloDataUpdateCoordinator[_DataT]], DevoloEntity
66 ):
67  """Representation of a coordinated devolo home network device."""
68 
69  def __init__(
70  self,
71  entry: DevoloHomeNetworkConfigEntry,
72  coordinator: DevoloDataUpdateCoordinator[_DataT],
73  ) -> None:
74  """Initialize a devolo home network device."""
75  super().__init__(coordinator)
76  DevoloEntity.__init__(self, entry)
None __init__(self, DevoloHomeNetworkConfigEntry entry)
Definition: entity.py:40
None __init__(self, DevoloHomeNetworkConfigEntry entry, DevoloDataUpdateCoordinator[_DataT] coordinator)
Definition: entity.py:73