Home Assistant Unofficial Reference 2024.12.1
entity.py
Go to the documentation of this file.
1 """Base UptimeRobot entity."""
2 
3 from __future__ import annotations
4 
5 from pyuptimerobot import UptimeRobotMonitor
6 
7 from homeassistant.helpers.device_registry import DeviceEntryType, DeviceInfo
8 from homeassistant.helpers.entity import EntityDescription
9 from homeassistant.helpers.update_coordinator import CoordinatorEntity
10 
11 from . import UptimeRobotDataUpdateCoordinator
12 from .const import ATTR_TARGET, ATTRIBUTION, DOMAIN
13 
14 
15 class UptimeRobotEntity(CoordinatorEntity[UptimeRobotDataUpdateCoordinator]):
16  """Base UptimeRobot entity."""
17 
18  _attr_attribution = ATTRIBUTION
19  _attr_has_entity_name = True
20  _attr_name = None
21 
22  def __init__(
23  self,
24  coordinator: UptimeRobotDataUpdateCoordinator,
25  description: EntityDescription,
26  monitor: UptimeRobotMonitor,
27  ) -> None:
28  """Initialize UptimeRobot entities."""
29  super().__init__(coordinator)
30  self.entity_descriptionentity_description = description
31  self._monitor_monitor = monitor
32  self._attr_device_info_attr_device_info = DeviceInfo(
33  identifiers={(DOMAIN, str(self.monitormonitor.id))},
34  name=self.monitormonitor.friendly_name,
35  manufacturer="UptimeRobot Team",
36  entry_type=DeviceEntryType.SERVICE,
37  model=self.monitormonitor.type.name,
38  configuration_url=f"https://uptimerobot.com/dashboard#{self.monitor.id}",
39  )
40  self._attr_extra_state_attributes_attr_extra_state_attributes = {
41  ATTR_TARGET: self.monitormonitor.url,
42  }
43  self._attr_unique_id_attr_unique_id = str(self.monitormonitor.id)
44  self.apiapi = coordinator.api
45 
46  @property
47  def _monitors(self) -> list[UptimeRobotMonitor]:
48  """Return all monitors."""
49  return self.coordinator.data or []
50 
51  @property
52  def monitor(self) -> UptimeRobotMonitor:
53  """Return the monitor for this entity."""
54  return next(
55  (
56  monitor
57  for monitor in self._monitors_monitors
58  if str(monitor.id) == self.entity_descriptionentity_description.key
59  ),
60  self._monitor_monitor,
61  )
62 
63  @property
64  def monitor_available(self) -> bool:
65  """Returtn if the monitor is available."""
66  return bool(self.monitormonitor.status == 2)
None __init__(self, UptimeRobotDataUpdateCoordinator coordinator, EntityDescription description, UptimeRobotMonitor monitor)
Definition: entity.py:27