1 """Hue sensor entities."""
3 from aiohue.v1.sensors
import (
17 from ..const
import DOMAIN
as HUE_DOMAIN
18 from .sensor_base
import SENSOR_CONFIG_MAP, GenericHueSensor, GenericZLLSensor
20 LIGHT_LEVEL_NAME_FORMAT =
"{} light level"
21 REMOTE_NAME_FORMAT =
"{} battery level"
22 TEMPERATURE_NAME_FORMAT =
"{} temperature"
26 """Defer sensor setup to the shared sensor module."""
27 bridge = hass.data[HUE_DOMAIN][config_entry.entry_id]
29 if not bridge.sensor_manager:
32 await bridge.sensor_manager.async_register_component(
"sensor", async_add_entities)
37 """Parent class for all 'gauge' Hue device sensors."""
41 class HueLightLevel(GenericHueGaugeSensorEntity):
42 """The light level sensor entity for a Hue motion sensor device."""
44 _attr_device_class = SensorDeviceClass.ILLUMINANCE
45 _attr_native_unit_of_measurement = LIGHT_LUX
49 """Return the state of the device."""
50 if self.
sensorsensor.lightlevel
is None:
58 return round(
float(10 ** ((self.
sensorsensor.lightlevel - 1) / 10000)), 2)
62 """Return the device state attributes."""
63 attributes = super().extra_state_attributes
66 "lightlevel": self.
sensorsensor.lightlevel,
67 "daylight": self.
sensorsensor.daylight,
68 "dark": self.
sensorsensor.dark,
69 "threshold_dark": self.
sensorsensor.tholddark,
70 "threshold_offset": self.
sensorsensor.tholdoffset,
78 """The temperature sensor entity for a Hue motion sensor device."""
80 _attr_device_class = SensorDeviceClass.TEMPERATURE
81 _attr_state_class = SensorStateClass.MEASUREMENT
82 _attr_native_unit_of_measurement = UnitOfTemperature.CELSIUS
86 """Return the state of the device."""
87 if self.
sensorsensor.temperature
is None:
90 return self.
sensorsensor.temperature / 100
95 """Battery class for when a batt-powered device is only represented as an event."""
97 _attr_device_class = SensorDeviceClass.BATTERY
98 _attr_state_class = SensorStateClass.MEASUREMENT
99 _attr_native_unit_of_measurement = PERCENTAGE
100 _attr_entity_category = EntityCategory.DIAGNOSTIC
104 """Return a unique identifier for this device."""
105 return f
"{self.sensor.uniqueid}-battery"
109 """Return the state of the battery."""
110 return self.
sensorsensor.battery
113 SENSOR_CONFIG_MAP.update(
115 TYPE_ZLL_LIGHTLEVEL: {
116 "platform":
"sensor",
117 "name_format": LIGHT_LEVEL_NAME_FORMAT,
118 "class": HueLightLevel,
120 TYPE_ZLL_TEMPERATURE: {
121 "platform":
"sensor",
122 "name_format": TEMPERATURE_NAME_FORMAT,
123 "class": HueTemperature,
126 "platform":
"sensor",
127 "name_format": REMOTE_NAME_FORMAT,
131 "platform":
"sensor",
132 "name_format": REMOTE_NAME_FORMAT,
def extra_state_attributes(self)
def async_setup_entry(hass, config_entry, async_add_entities)