42 lines
1.4 KiB
Python
42 lines
1.4 KiB
Python
"""Hue binary sensor entities."""
|
|
from homeassistant.components.binary_sensor import (
|
|
BinarySensorDevice,
|
|
DEVICE_CLASS_MOTION,
|
|
)
|
|
from homeassistant.components.hue.sensor_base import (
|
|
GenericZLLSensor,
|
|
async_setup_entry as shared_async_setup_entry,
|
|
)
|
|
|
|
|
|
PRESENCE_NAME_FORMAT = "{} motion"
|
|
|
|
|
|
async def async_setup_entry(hass, config_entry, async_add_entities):
|
|
"""Defer binary sensor setup to the shared sensor module."""
|
|
await shared_async_setup_entry(hass, config_entry, async_add_entities, binary=True)
|
|
|
|
|
|
class HuePresence(GenericZLLSensor, BinarySensorDevice):
|
|
"""The presence sensor entity for a Hue motion sensor device."""
|
|
|
|
device_class = DEVICE_CLASS_MOTION
|
|
|
|
async def _async_update_ha_state(self, *args, **kwargs):
|
|
await self.async_update_ha_state(self, *args, **kwargs)
|
|
|
|
@property
|
|
def is_on(self):
|
|
"""Return true if the binary sensor is on."""
|
|
return self.sensor.presence
|
|
|
|
@property
|
|
def device_state_attributes(self):
|
|
"""Return the device state attributes."""
|
|
attributes = super().device_state_attributes
|
|
if "sensitivity" in self.sensor.config:
|
|
attributes["sensitivity"] = self.sensor.config["sensitivity"]
|
|
if "sensitivitymax" in self.sensor.config:
|
|
attributes["sensitivity_max"] = self.sensor.config["sensitivitymax"]
|
|
return attributes
|