Home Assistant Unofficial Reference 2024.12.1
sensor.py
Go to the documentation of this file.
1 """The lookin integration sensor platform."""
2 
3 from __future__ import annotations
4 
5 import logging
6 
8  SensorDeviceClass,
9  SensorEntity,
10  SensorEntityDescription,
11  SensorStateClass,
12 )
13 from homeassistant.config_entries import ConfigEntry
14 from homeassistant.const import PERCENTAGE, UnitOfTemperature
15 from homeassistant.core import HomeAssistant
16 from homeassistant.helpers.entity_platform import AddEntitiesCallback
17 
18 from .const import DOMAIN
19 from .entity import LookinDeviceCoordinatorEntity
20 from .models import LookinData
21 
22 LOGGER = logging.getLogger(__name__)
23 
24 
25 SENSOR_TYPES: tuple[SensorEntityDescription, ...] = (
27  key="temperature",
28  name="Temperature",
29  native_unit_of_measurement=UnitOfTemperature.CELSIUS,
30  device_class=SensorDeviceClass.TEMPERATURE,
31  state_class=SensorStateClass.MEASUREMENT,
32  ),
34  key="humidity",
35  name="Humidity",
36  native_unit_of_measurement=PERCENTAGE,
37  device_class=SensorDeviceClass.HUMIDITY,
38  state_class=SensorStateClass.MEASUREMENT,
39  ),
40 )
41 
42 
44  hass: HomeAssistant,
45  config_entry: ConfigEntry,
46  async_add_entities: AddEntitiesCallback,
47 ) -> None:
48  """Set up lookin sensors from the config entry."""
49  lookin_data: LookinData = hass.data[DOMAIN][config_entry.entry_id]
50 
51  if lookin_data.lookin_device.model >= 2:
53  [
54  LookinSensorEntity(description, lookin_data)
55  for description in SENSOR_TYPES
56  ]
57  )
58 
59 
61  """A lookin device sensor entity."""
62 
63  def __init__(
64  self, description: SensorEntityDescription, lookin_data: LookinData
65  ) -> None:
66  """Init the lookin sensor entity."""
67  super().__init__(lookin_data)
68  self.entity_descriptionentity_description = description
69  self._attr_name_attr_name = f"{self._lookin_device.name} {description.name}"
70  self._attr_native_value_attr_native_value = getattr(self.coordinator.data, description.key)
71  self._attr_unique_id_attr_unique_id = f"{self._lookin_device.id}-{description.key}"
72 
73  def _handle_coordinator_update(self) -> None:
74  """Update the state of the entity."""
75  self._attr_native_value_attr_native_value = getattr(
76  self.coordinator.data, self.entity_descriptionentity_description.key
77  )
None __init__(self, SensorEntityDescription description, LookinData lookin_data)
Definition: sensor.py:65
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)
Definition: sensor.py:47