* Add basic support for native Hue sensors * Update coveragerc * Simplify attributes * Remove config option * Refactor and document device-ness and update mechanism * Entity docstrings * Remove lingering config for sensors * Whitespace * Remove redundant entity ID generation and hass assignment. * More meaningful variable name. * Add new 'not-darkness' pseudo-sensor. * Refactor sensors into separate binary, non-binary, and shared modules. * formatting * make linter happy. * Refactor again, fix update mechanism, and address comments. * Remove unnecessary assignment * Small fixes. * docstring * Another refactor: only call API once and make testing easier * Tests & test fixes * Flake & lint * Use gather and dispatcher * Remove unnecessary whitespace change. * Move component related stuff out of the shared module * Remove unused remnant of failed approach. * Increase test coverage * Don't get too upset if we're already trying to update an entity before it has finished adding * relative imports
57 lines
1.8 KiB
Python
57 lines
1.8 KiB
Python
"""Hue sensor entities."""
|
|
from homeassistant.const import (
|
|
DEVICE_CLASS_ILLUMINANCE, DEVICE_CLASS_TEMPERATURE, TEMP_CELSIUS)
|
|
from homeassistant.helpers.entity import Entity
|
|
from homeassistant.components.hue.sensor_base import (
|
|
GenericZLLSensor, async_setup_entry as shared_async_setup_entry)
|
|
|
|
|
|
LIGHT_LEVEL_NAME_FORMAT = "{} light level"
|
|
TEMPERATURE_NAME_FORMAT = "{} temperature"
|
|
|
|
|
|
async def async_setup_entry(hass, config_entry, async_add_entities):
|
|
"""Defer sensor setup to the shared sensor module."""
|
|
await shared_async_setup_entry(
|
|
hass, config_entry, async_add_entities, binary=False)
|
|
|
|
|
|
class GenericHueGaugeSensorEntity(GenericZLLSensor, Entity):
|
|
"""Parent class for all 'gauge' Hue device sensors."""
|
|
|
|
async def _async_update_ha_state(self, *args, **kwargs):
|
|
await self.async_update_ha_state(self, *args, **kwargs)
|
|
|
|
|
|
class HueLightLevel(GenericHueGaugeSensorEntity):
|
|
"""The light level sensor entity for a Hue motion sensor device."""
|
|
|
|
device_class = DEVICE_CLASS_ILLUMINANCE
|
|
unit_of_measurement = "Lux"
|
|
|
|
@property
|
|
def state(self):
|
|
"""Return the state of the device."""
|
|
return self.sensor.lightlevel
|
|
|
|
@property
|
|
def device_state_attributes(self):
|
|
"""Return the device state attributes."""
|
|
attributes = super().device_state_attributes
|
|
attributes.update({
|
|
"threshold_dark": self.sensor.tholddark,
|
|
"threshold_offset": self.sensor.tholdoffset,
|
|
})
|
|
return attributes
|
|
|
|
|
|
class HueTemperature(GenericHueGaugeSensorEntity):
|
|
"""The temperature sensor entity for a Hue motion sensor device."""
|
|
|
|
device_class = DEVICE_CLASS_TEMPERATURE
|
|
unit_of_measurement = TEMP_CELSIUS
|
|
|
|
@property
|
|
def state(self):
|
|
"""Return the state of the device."""
|
|
return self.sensor.temperature / 100
|