Home Assistant Unofficial Reference 2024.12.1
entity.py
Go to the documentation of this file.
1 """Entities for SolarLog integration."""
2 
3 from __future__ import annotations
4 
5 from homeassistant.components.sensor import SensorEntityDescription
6 from homeassistant.helpers.device_registry import DeviceInfo
7 from homeassistant.helpers.update_coordinator import CoordinatorEntity
8 from homeassistant.util import slugify
9 
10 from .const import DOMAIN
11 from .coordinator import SolarLogCoordinator
12 
13 
14 class SolarLogBaseEntity(CoordinatorEntity[SolarLogCoordinator]):
15  """SolarLog base entity."""
16 
17  _attr_has_entity_name = True
18 
19  def __init__(
20  self,
21  coordinator: SolarLogCoordinator,
22  description: SensorEntityDescription,
23  ) -> None:
24  """Initialize the SolarLogCoordinator sensor."""
25  super().__init__(coordinator)
26 
27  self.entity_descriptionentity_description = description
28 
29 
31  """Base SolarLog Coordinator entity."""
32 
33  def __init__(
34  self,
35  coordinator: SolarLogCoordinator,
36  description: SensorEntityDescription,
37  ) -> None:
38  """Initialize the SolarLogCoordinator sensor."""
39  super().__init__(coordinator, description)
40 
41  self._attr_unique_id_attr_unique_id = f"{coordinator.unique_id}_{description.key}"
42  self._attr_device_info_attr_device_info = DeviceInfo(
43  manufacturer="Solar-Log",
44  model="Controller",
45  identifiers={(DOMAIN, coordinator.unique_id)},
46  name=coordinator.name,
47  configuration_url=coordinator.host,
48  )
49 
50 
52  """Base SolarLog inverter entity."""
53 
54  def __init__(
55  self,
56  coordinator: SolarLogCoordinator,
57  description: SensorEntityDescription,
58  device_id: int,
59  ) -> None:
60  """Initialize the SolarLogInverter sensor."""
61  super().__init__(coordinator, description)
62  name = f"{coordinator.unique_id}_{slugify(coordinator.solarlog.device_name(device_id))}"
63  self._attr_unique_id_attr_unique_id = f"{name}_{description.key}"
64  self._attr_device_info_attr_device_info = DeviceInfo(
65  manufacturer="Solar-Log",
66  model="Inverter",
67  identifiers={(DOMAIN, name)},
68  name=coordinator.solarlog.device_name(device_id),
69  via_device=(DOMAIN, coordinator.unique_id),
70  )
71  self.device_iddevice_id = device_id
None __init__(self, SolarLogCoordinator coordinator, SensorEntityDescription description)
Definition: entity.py:23
None __init__(self, SolarLogCoordinator coordinator, SensorEntityDescription description)
Definition: entity.py:37
None __init__(self, SolarLogCoordinator coordinator, SensorEntityDescription description, int device_id)
Definition: entity.py:59