Home Assistant Unofficial Reference 2024.12.1
entity.py
Go to the documentation of this file.
1 """Base class for Mastodon entities."""
2 
3 from homeassistant.helpers.device_registry import DeviceEntryType, DeviceInfo
4 from homeassistant.helpers.entity import EntityDescription
5 from homeassistant.helpers.update_coordinator import CoordinatorEntity
6 
7 from . import MastodonConfigEntry
8 from .const import DEFAULT_NAME, DOMAIN, INSTANCE_VERSION
9 from .coordinator import MastodonCoordinator
10 from .utils import construct_mastodon_username
11 
12 
13 class MastodonEntity(CoordinatorEntity[MastodonCoordinator]):
14  """Defines a base Mastodon entity."""
15 
16  _attr_has_entity_name = True
17 
18  def __init__(
19  self,
20  coordinator: MastodonCoordinator,
21  entity_description: EntityDescription,
22  data: MastodonConfigEntry,
23  ) -> None:
24  """Initialize Mastodon entity."""
25  super().__init__(coordinator)
26  unique_id = data.unique_id
27  assert unique_id is not None
28  self._attr_unique_id_attr_unique_id = f"{unique_id}_{entity_description.key}"
29 
30  # Legacy yaml config default title is Mastodon, don't make name Mastodon Mastodon
31  name = "Mastodon"
32  if data.title != DEFAULT_NAME:
33  name = f"Mastodon {data.title}"
34 
35  full_account_name = construct_mastodon_username(
36  data.runtime_data.instance, data.runtime_data.account
37  )
38 
39  self._attr_device_info_attr_device_info = DeviceInfo(
40  identifiers={(DOMAIN, unique_id)},
41  manufacturer="Mastodon gGmbH",
42  model=full_account_name,
43  entry_type=DeviceEntryType.SERVICE,
44  sw_version=data.runtime_data.instance[INSTANCE_VERSION],
45  name=name,
46  )
47 
48  self.entity_descriptionentity_description = entity_description
None __init__(self, MastodonCoordinator coordinator, EntityDescription entity_description, MastodonConfigEntry data)
Definition: entity.py:23
str construct_mastodon_username(dict[str, str]|None instance, dict[str, str]|None account)
Definition: utils.py:24