Home Assistant Unofficial Reference 2024.12.1
sensor.py
Go to the documentation of this file.
1 """BleBox sensor entities."""
2 
4 
6  SensorDeviceClass,
7  SensorEntity,
8  SensorEntityDescription,
9  SensorStateClass,
10 )
11 from homeassistant.const import (
12  CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
13  LIGHT_LUX,
14  PERCENTAGE,
15  UnitOfApparentPower,
16  UnitOfElectricCurrent,
17  UnitOfElectricPotential,
18  UnitOfEnergy,
19  UnitOfFrequency,
20  UnitOfPower,
21  UnitOfReactivePower,
22  UnitOfSpeed,
23  UnitOfTemperature,
24 )
25 from homeassistant.core import HomeAssistant
26 from homeassistant.helpers.entity_platform import AddEntitiesCallback
27 
28 from . import BleBoxConfigEntry
29 from .entity import BleBoxEntity
30 
31 SENSOR_TYPES = (
33  key="pm1",
34  device_class=SensorDeviceClass.PM1,
35  native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
36  ),
38  key="pm2_5",
39  device_class=SensorDeviceClass.PM25,
40  native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
41  ),
43  key="pm10",
44  device_class=SensorDeviceClass.PM10,
45  native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
46  ),
48  key="temperature",
49  device_class=SensorDeviceClass.TEMPERATURE,
50  native_unit_of_measurement=UnitOfTemperature.CELSIUS,
51  ),
53  key="powerConsumption",
54  device_class=SensorDeviceClass.ENERGY,
55  native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
56  state_class=SensorStateClass.TOTAL,
57  ),
59  key="humidity",
60  device_class=SensorDeviceClass.HUMIDITY,
61  native_unit_of_measurement=PERCENTAGE,
62  ),
64  key="wind",
65  device_class=SensorDeviceClass.WIND_SPEED,
66  native_unit_of_measurement=UnitOfSpeed.METERS_PER_SECOND,
67  ),
69  key="illuminance",
70  device_class=SensorDeviceClass.ILLUMINANCE,
71  native_unit_of_measurement=LIGHT_LUX,
72  ),
74  key="forwardActiveEnergy",
75  device_class=SensorDeviceClass.ENERGY,
76  native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
77  ),
79  key="reverseActiveEnergy",
80  device_class=SensorDeviceClass.ENERGY,
81  native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
82  ),
84  key="reactivePower",
85  device_class=SensorDeviceClass.POWER,
86  native_unit_of_measurement=UnitOfReactivePower.VOLT_AMPERE_REACTIVE,
87  ),
89  key="activePower",
90  device_class=SensorDeviceClass.POWER,
91  native_unit_of_measurement=UnitOfPower.WATT,
92  ),
94  key="apparentPower",
95  device_class=SensorDeviceClass.APPARENT_POWER,
96  native_unit_of_measurement=UnitOfApparentPower.VOLT_AMPERE,
97  ),
99  key="voltage",
100  device_class=SensorDeviceClass.VOLTAGE,
101  native_unit_of_measurement=UnitOfElectricPotential.VOLT,
102  ),
104  key="current",
105  device_class=SensorDeviceClass.CURRENT,
106  native_unit_of_measurement=UnitOfElectricCurrent.MILLIAMPERE,
107  ),
109  key="frequency",
110  device_class=SensorDeviceClass.FREQUENCY,
111  native_unit_of_measurement=UnitOfFrequency.HERTZ,
112  ),
113 )
114 
115 
117  hass: HomeAssistant,
118  config_entry: BleBoxConfigEntry,
119  async_add_entities: AddEntitiesCallback,
120 ) -> None:
121  """Set up a BleBox entry."""
122  entities = [
123  BleBoxSensorEntity(feature, description)
124  for feature in config_entry.runtime_data.features.get("sensors", [])
125  for description in SENSOR_TYPES
126  if description.key == feature.device_class
127  ]
128  async_add_entities(entities, True)
129 
130 
131 class BleBoxSensorEntity(BleBoxEntity[blebox_uniapi.sensor.BaseSensor], SensorEntity):
132  """Representation of a BleBox sensor feature."""
133 
134  def __init__(
135  self,
136  feature: blebox_uniapi.sensor.BaseSensor,
137  description: SensorEntityDescription,
138  ) -> None:
139  """Initialize a BleBox sensor feature."""
140  super().__init__(feature)
141  self.entity_descriptionentity_description = description
142 
143  @property
144  def native_value(self):
145  """Return the state."""
146  return self._feature.native_value
147 
148  @property
149  def last_reset(self):
150  """Return the time when the sensor was last reset, if implemented."""
151  native_implementation = getattr(self._feature, "last_reset", None)
152 
153  return native_implementation or super().last_reset
None __init__(self, blebox_uniapi.sensor.BaseSensor feature, SensorEntityDescription description)
Definition: sensor.py:138
None async_setup_entry(HomeAssistant hass, BleBoxConfigEntry config_entry, AddEntitiesCallback async_add_entities)
Definition: sensor.py:120