Home Assistant Unofficial Reference 2024.12.1
sensor.py
Go to the documentation of this file.
1 """Support for iss sensor."""
2 
3 from __future__ import annotations
4 
5 import logging
6 from typing import Any
7 
8 from homeassistant.components.sensor import SensorEntity
9 from homeassistant.config_entries import ConfigEntry
10 from homeassistant.const import ATTR_LATITUDE, ATTR_LONGITUDE, CONF_SHOW_ON_MAP
11 from homeassistant.core import HomeAssistant
12 from homeassistant.helpers.device_registry import DeviceEntryType, DeviceInfo
13 from homeassistant.helpers.entity_platform import AddEntitiesCallback
15  CoordinatorEntity,
16  DataUpdateCoordinator,
17 )
18 
19 from . import IssData
20 from .const import DEFAULT_NAME, DOMAIN
21 
22 _LOGGER = logging.getLogger(__name__)
23 
24 
26  hass: HomeAssistant,
27  entry: ConfigEntry,
28  async_add_entities: AddEntitiesCallback,
29 ) -> None:
30  """Set up the sensor platform."""
31  coordinator: DataUpdateCoordinator[IssData] = hass.data[DOMAIN]
32 
33  show_on_map = entry.options.get(CONF_SHOW_ON_MAP, False)
34 
35  async_add_entities([IssSensor(coordinator, entry, show_on_map)])
36 
37 
38 class IssSensor(CoordinatorEntity[DataUpdateCoordinator[IssData]], SensorEntity):
39  """Implementation of the ISS sensor."""
40 
41  _attr_has_entity_name = True
42  _attr_name = None
43 
44  def __init__(
45  self,
46  coordinator: DataUpdateCoordinator[IssData],
47  entry: ConfigEntry,
48  show: bool,
49  ) -> None:
50  """Initialize the sensor."""
51  super().__init__(coordinator)
52  self._attr_unique_id_attr_unique_id = f"{entry.entry_id}_people"
53  self._show_on_map_show_on_map = show
54  self._attr_device_info_attr_device_info = DeviceInfo(
55  identifiers={(DOMAIN, entry.entry_id)},
56  name=DEFAULT_NAME,
57  entry_type=DeviceEntryType.SERVICE,
58  )
59 
60  @property
61  def native_value(self) -> int:
62  """Return number of people in space."""
63  return self.coordinator.data.number_of_people_in_space
64 
65  @property
66  def extra_state_attributes(self) -> dict[str, Any]:
67  """Return the state attributes."""
68  attrs = {}
69  if self._show_on_map_show_on_map:
70  attrs[ATTR_LONGITUDE] = self.coordinator.data.current_location.get(
71  "longitude"
72  )
73  attrs[ATTR_LATITUDE] = self.coordinator.data.current_location.get(
74  "latitude"
75  )
76  else:
77  attrs["long"] = self.coordinator.data.current_location.get("longitude")
78  attrs["lat"] = self.coordinator.data.current_location.get("latitude")
79 
80  return attrs
None __init__(self, DataUpdateCoordinator[IssData] coordinator, ConfigEntry entry, bool show)
Definition: sensor.py:49
dict[str, Any] extra_state_attributes(self)
Definition: sensor.py:66
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)
Definition: sensor.py:29