Home Assistant Unofficial Reference 2024.12.1
sensor.py
Go to the documentation of this file.
1 """Support for sensors."""
2 
3 from __future__ import annotations
4 
5 from fjaraskupan import Device
6 
8  SensorDeviceClass,
9  SensorEntity,
10  SensorStateClass,
11 )
12 from homeassistant.config_entries import ConfigEntry
13 from homeassistant.const import SIGNAL_STRENGTH_DECIBELS_MILLIWATT, EntityCategory
14 from homeassistant.core import HomeAssistant
15 from homeassistant.helpers.device_registry import DeviceInfo
16 from homeassistant.helpers.entity import Entity
17 from homeassistant.helpers.entity_platform import AddEntitiesCallback
18 from homeassistant.helpers.typing import StateType
19 from homeassistant.helpers.update_coordinator import CoordinatorEntity
20 
21 from . import async_setup_entry_platform
22 from .coordinator import FjaraskupanCoordinator
23 
24 
26  hass: HomeAssistant,
27  config_entry: ConfigEntry,
28  async_add_entities: AddEntitiesCallback,
29 ) -> None:
30  """Set up sensors dynamically through discovery."""
31 
32  def _constructor(coordinator: FjaraskupanCoordinator) -> list[Entity]:
33  return [RssiSensor(coordinator, coordinator.device, coordinator.device_info)]
34 
35  async_setup_entry_platform(hass, config_entry, async_add_entities, _constructor)
36 
37 
38 class RssiSensor(CoordinatorEntity[FjaraskupanCoordinator], SensorEntity):
39  """Sensor device."""
40 
41  _attr_has_entity_name = True
42  _attr_device_class = SensorDeviceClass.SIGNAL_STRENGTH
43  _attr_state_class = SensorStateClass.MEASUREMENT
44  _attr_native_unit_of_measurement = SIGNAL_STRENGTH_DECIBELS_MILLIWATT
45  _attr_entity_registry_enabled_default = False
46  _attr_entity_category = EntityCategory.DIAGNOSTIC
47 
48  def __init__(
49  self,
50  coordinator: FjaraskupanCoordinator,
51  device: Device,
52  device_info: DeviceInfo,
53  ) -> None:
54  """Init sensor."""
55  super().__init__(coordinator)
56  self._attr_unique_id_attr_unique_id = f"{device.address}-signal-strength"
57  self._attr_device_info_attr_device_info = device_info
58 
59  @property
60  def native_value(self) -> StateType:
61  """Return the value reported by the sensor."""
62  if data := self.coordinator.data:
63  return data.rssi
64  return None
None __init__(self, FjaraskupanCoordinator coordinator, Device device, DeviceInfo device_info)
Definition: sensor.py:53
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)
Definition: sensor.py:29
None async_setup_entry_platform(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities, Callable[[FjaraskupanCoordinator], list[Entity]] constructor)
Definition: __init__.py:111