Home Assistant Unofficial Reference 2024.12.1
sensor.py
Go to the documentation of this file.
1 """sensor integration microBees."""
2 
3 from microBeesPy import Sensor
4 
6  SensorDeviceClass,
7  SensorEntity,
8  SensorEntityDescription,
9  SensorStateClass,
10 )
11 from homeassistant.config_entries import ConfigEntry
12 from homeassistant.const import (
13  CONCENTRATION_PARTS_PER_MILLION,
14  LIGHT_LUX,
15  PERCENTAGE,
16  UnitOfPower,
17  UnitOfTemperature,
18 )
19 from homeassistant.core import HomeAssistant
20 from homeassistant.helpers.entity_platform import AddEntitiesCallback
21 
22 from .const import DOMAIN
23 from .coordinator import MicroBeesUpdateCoordinator
24 from .entity import MicroBeesEntity
25 
26 SENSOR_TYPES = {
28  device_class=SensorDeviceClass.POWER,
29  state_class=SensorStateClass.MEASUREMENT,
30  native_unit_of_measurement=UnitOfPower.WATT,
31  key="absorption",
32  suggested_display_precision=2,
33  ),
35  device_class=SensorDeviceClass.TEMPERATURE,
36  state_class=SensorStateClass.MEASUREMENT,
37  native_unit_of_measurement=UnitOfTemperature.CELSIUS,
38  key="temperature",
39  suggested_display_precision=1,
40  ),
42  device_class=SensorDeviceClass.CO2,
43  state_class=SensorStateClass.MEASUREMENT,
44  native_unit_of_measurement=CONCENTRATION_PARTS_PER_MILLION,
45  key="carbon_dioxide",
46  suggested_display_precision=1,
47  ),
49  device_class=SensorDeviceClass.HUMIDITY,
50  state_class=SensorStateClass.MEASUREMENT,
51  native_unit_of_measurement=PERCENTAGE,
52  key="humidity",
53  suggested_display_precision=1,
54  ),
56  device_class=SensorDeviceClass.ILLUMINANCE,
57  state_class=SensorStateClass.MEASUREMENT,
58  native_unit_of_measurement=LIGHT_LUX,
59  key="illuminance",
60  suggested_display_precision=1,
61  ),
62 }
63 
64 
66  hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
67 ) -> None:
68  """Config entry."""
69  coordinator = hass.data[DOMAIN][entry.entry_id].coordinator
70 
72  MBSensor(coordinator, desc, bee_id, sensor.id)
73  for bee_id, bee in coordinator.data.bees.items()
74  for sensor in bee.sensors
75  if (desc := SENSOR_TYPES.get(sensor.device_type)) is not None
76  )
77 
78 
80  """Representation of a microBees sensor."""
81 
82  def __init__(
83  self,
84  coordinator: MicroBeesUpdateCoordinator,
85  entity_description: SensorEntityDescription,
86  bee_id: int,
87  sensor_id: int,
88  ) -> None:
89  """Initialize the microBees sensor."""
90  super().__init__(coordinator, bee_id)
91  self._attr_unique_id_attr_unique_id = f"{bee_id}_{sensor_id}"
92  self.sensor_idsensor_id = sensor_id
93  self.entity_descriptionentity_description = entity_description
94 
95  @property
96  def name(self) -> str:
97  """Name of the sensor."""
98  return self.sensorsensor.name
99 
100  @property
101  def native_value(self) -> float | None:
102  """Return the state of the sensor."""
103  return self.sensorsensor.value
104 
105  @property
106  def sensor(self) -> Sensor:
107  """Return the sensor."""
108  return self.coordinator.data.sensors[self.sensor_idsensor_id]
None __init__(self, MicroBeesUpdateCoordinator coordinator, SensorEntityDescription entity_description, int bee_id, int sensor_id)
Definition: sensor.py:88
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)
Definition: sensor.py:67