Home Assistant Unofficial Reference 2024.12.1
entity.py
Go to the documentation of this file.
1 """Contains base entity classes for Starlink entities."""
2 
3 from __future__ import annotations
4 
5 from homeassistant.helpers.device_registry import DeviceInfo
6 from homeassistant.helpers.entity import Entity, EntityDescription
7 from homeassistant.helpers.update_coordinator import CoordinatorEntity
8 
9 from .const import DOMAIN
10 from .coordinator import StarlinkUpdateCoordinator
11 
12 
13 class StarlinkEntity(CoordinatorEntity[StarlinkUpdateCoordinator], Entity):
14  """A base Entity that is registered under a Starlink device."""
15 
16  _attr_has_entity_name = True
17 
18  def __init__(
19  self, coordinator: StarlinkUpdateCoordinator, description: EntityDescription
20  ) -> None:
21  """Initialize the device info and set the update coordinator."""
22  super().__init__(coordinator)
23  self._attr_device_info_attr_device_info = DeviceInfo(
24  identifiers={
25  (DOMAIN, self.coordinator.data.status["id"]),
26  },
27  sw_version=self.coordinator.data.status["software_version"],
28  hw_version=self.coordinator.data.status["hardware_version"],
29  name="Starlink",
30  configuration_url=f"http://{self.coordinator.channel_context.target.split(':')[0]}",
31  manufacturer="SpaceX",
32  model="Starlink",
33  )
34  self._attr_unique_id_attr_unique_id = f"{self.coordinator.data.status['id']}_{description.key}"
35  self.entity_descriptionentity_description = description