48 lines
1.5 KiB
Python
48 lines
1.5 KiB
Python
"""
|
|
Support for MySensors binary sensors.
|
|
|
|
For more details about this platform, please refer to the documentation at
|
|
https://home-assistant.io/components/binary_sensor.mysensors/
|
|
"""
|
|
from homeassistant.components import mysensors
|
|
from homeassistant.components.binary_sensor import (
|
|
DEVICE_CLASSES, DOMAIN, BinarySensorDevice)
|
|
from homeassistant.const import STATE_ON
|
|
|
|
SENSORS = {
|
|
'S_DOOR': 'door',
|
|
'S_MOTION': 'motion',
|
|
'S_SMOKE': 'smoke',
|
|
'S_SPRINKLER': 'safety',
|
|
'S_WATER_LEAK': 'safety',
|
|
'S_SOUND': 'sound',
|
|
'S_VIBRATION': 'vibration',
|
|
'S_MOISTURE': 'moisture',
|
|
}
|
|
|
|
|
|
async def async_setup_platform(
|
|
hass, config, async_add_entities, discovery_info=None):
|
|
"""Set up the mysensors platform for binary sensors."""
|
|
mysensors.setup_mysensors_platform(
|
|
hass, DOMAIN, discovery_info, MySensorsBinarySensor,
|
|
async_add_entities=async_add_entities)
|
|
|
|
|
|
class MySensorsBinarySensor(
|
|
mysensors.device.MySensorsEntity, BinarySensorDevice):
|
|
"""Representation of a MySensors Binary Sensor child node."""
|
|
|
|
@property
|
|
def is_on(self):
|
|
"""Return True if the binary sensor is on."""
|
|
return self._values.get(self.value_type) == STATE_ON
|
|
|
|
@property
|
|
def device_class(self):
|
|
"""Return the class of this sensor, from DEVICE_CLASSES."""
|
|
pres = self.gateway.const.Presentation
|
|
device_class = SENSORS.get(pres(self.child_type).name)
|
|
if device_class in DEVICE_CLASSES:
|
|
return device_class
|
|
return None
|