Home Assistant Unofficial Reference 2024.12.1
sensor.py
Go to the documentation of this file.
1 """Sensors for LIFX lights."""
2 
3 from __future__ import annotations
4 
5 from datetime import timedelta
6 
8  SensorDeviceClass,
9  SensorEntity,
10  SensorEntityDescription,
11  SensorStateClass,
12 )
13 from homeassistant.config_entries import ConfigEntry
14 from homeassistant.const import EntityCategory
15 from homeassistant.core import HomeAssistant, callback
16 from homeassistant.helpers.entity_platform import AddEntitiesCallback
17 
18 from .const import ATTR_RSSI, DOMAIN
19 from .coordinator import LIFXUpdateCoordinator
20 from .entity import LIFXEntity
21 
22 SCAN_INTERVAL = timedelta(seconds=30)
23 
25  key=ATTR_RSSI,
26  translation_key="rssi",
27  device_class=SensorDeviceClass.SIGNAL_STRENGTH,
28  entity_category=EntityCategory.DIAGNOSTIC,
29  state_class=SensorStateClass.MEASUREMENT,
30  entity_registry_enabled_default=False,
31 )
32 
33 
35  hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
36 ) -> None:
37  """Set up LIFX sensor from config entry."""
38  coordinator: LIFXUpdateCoordinator = hass.data[DOMAIN][entry.entry_id]
39  async_add_entities([LIFXRssiSensor(coordinator, RSSI_SENSOR)])
40 
41 
43  """LIFX RSSI sensor."""
44 
45  def __init__(
46  self,
47  coordinator: LIFXUpdateCoordinator,
48  description: SensorEntityDescription,
49  ) -> None:
50  """Initialise the RSSI sensor."""
51 
52  super().__init__(coordinator)
53  self.entity_descriptionentity_description = description
54  self._attr_unique_id_attr_unique_id = f"{coordinator.serial_number}_{description.key}"
55  self._attr_native_unit_of_measurement_attr_native_unit_of_measurement = coordinator.rssi_uom
56 
57  @callback
58  def _handle_coordinator_update(self) -> None:
59  """Handle updated data from the coordinator."""
60  self._async_update_attrs_async_update_attrs()
62 
63  @callback
64  def _async_update_attrs(self) -> None:
65  """Handle coordinator updates."""
66  self._attr_native_value_attr_native_value = self.coordinator.rssi
67 
68  async def async_added_to_hass(self) -> None:
69  """Enable RSSI updates."""
70  self.async_on_removeasync_on_remove(self.coordinator.async_enable_rssi_updates())
71  return await super().async_added_to_hass()
None __init__(self, LIFXUpdateCoordinator coordinator, SensorEntityDescription description)
Definition: sensor.py:49
None async_on_remove(self, CALLBACK_TYPE func)
Definition: entity.py:1331
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)
Definition: sensor.py:36