Home Assistant Unofficial Reference 2024.12.1
entity.py
Go to the documentation of this file.
1 """The Tailscale integration."""
2 
3 from __future__ import annotations
4 
5 from tailscale import Device as TailscaleDevice
6 
7 from homeassistant.helpers.device_registry import DeviceEntryType, DeviceInfo
8 from homeassistant.helpers.entity import EntityDescription
10  CoordinatorEntity,
11  DataUpdateCoordinator,
12 )
13 
14 from .const import DOMAIN
15 
16 
18  """Defines a Tailscale base entity."""
19 
20  _attr_has_entity_name = True
21 
22  def __init__(
23  self,
24  *,
25  coordinator: DataUpdateCoordinator,
26  device: TailscaleDevice,
27  description: EntityDescription,
28  ) -> None:
29  """Initialize a Tailscale sensor."""
30  super().__init__(coordinator=coordinator)
31  self.entity_descriptionentity_description = description
32  self.device_iddevice_id = device.device_id
33  self._attr_unique_id_attr_unique_id = f"{device.device_id}_{description.key}"
34 
35  @property
36  def device_info(self) -> DeviceInfo:
37  """Return the device info."""
38  device: TailscaleDevice = self.coordinator.data[self.device_iddevice_id]
39 
40  configuration_url = "https://login.tailscale.com/admin/machines/"
41  if device.addresses:
42  configuration_url += device.addresses[0]
43 
44  return DeviceInfo(
45  configuration_url=configuration_url,
46  entry_type=DeviceEntryType.SERVICE,
47  identifiers={(DOMAIN, device.device_id)},
48  manufacturer="Tailscale Inc.",
49  model=device.os,
50  name=device.name.split(".")[0],
51  sw_version=device.client_version,
52  )
None __init__(self, *DataUpdateCoordinator coordinator, TailscaleDevice device, EntityDescription description)
Definition: entity.py:28