Home Assistant Unofficial Reference 2024.12.1
entity.py
Go to the documentation of this file.
1 """Base Entity for Roku."""
2 
3 from __future__ import annotations
4 
5 from homeassistant.helpers.device_registry import CONNECTION_NETWORK_MAC, DeviceInfo
6 from homeassistant.helpers.entity import EntityDescription
7 from homeassistant.helpers.update_coordinator import CoordinatorEntity
8 
9 from . import RokuDataUpdateCoordinator
10 from .const import DOMAIN
11 
12 
13 class RokuEntity(CoordinatorEntity[RokuDataUpdateCoordinator]):
14  """Defines a base Roku entity."""
15 
16  _attr_has_entity_name = True
17 
18  def __init__(
19  self,
20  *,
21  coordinator: RokuDataUpdateCoordinator,
22  description: EntityDescription | None = None,
23  ) -> None:
24  """Initialize the Roku entity."""
25  super().__init__(coordinator)
26 
27  if description is not None:
28  self.entity_descriptionentity_description = description
29  self._attr_unique_id_attr_unique_id = f"{coordinator.device_id}_{description.key}"
30  else:
31  self._attr_unique_id_attr_unique_id = coordinator.device_id
32 
33  self._attr_device_info_attr_device_info = DeviceInfo(
34  identifiers={(DOMAIN, coordinator.device_id)},
35  connections={
36  (CONNECTION_NETWORK_MAC, mac_address)
37  for mac_address in (
38  self.coordinator.data.info.wifi_mac,
39  self.coordinator.data.info.ethernet_mac,
40  )
41  if mac_address is not None
42  },
43  name=self.coordinator.data.info.name,
44  manufacturer=self.coordinator.data.info.brand,
45  model=self.coordinator.data.info.model_name,
46  hw_version=self.coordinator.data.info.model_number,
47  sw_version=self.coordinator.data.info.version,
48  suggested_area=self.coordinator.data.info.device_location,
49  )
None __init__(self, *RokuDataUpdateCoordinator coordinator, EntityDescription|None description=None)
Definition: entity.py:23