Source code for platypush.plugins.sensor.ltr559

from typing import Dict, List

from platypush.common.sensors import Numeric
from platypush.entities.devices import Device
from platypush.entities.distance import DistanceSensor
from platypush.entities.illuminance import IlluminanceSensor
from platypush.plugins import action
from platypush.plugins.sensor import SensorPlugin


# pylint: disable=too-many-ancestors
[docs] class SensorLtr559Plugin(SensorPlugin): """ Plugin to interact with an `LTR559 <https://shop.pimoroni.com/products/ltr-559-light-proximity-sensor-breakout>`_ light and proximity sensor. """
[docs] def __init__(self, **kwargs): import ltr559 super().__init__(**kwargs) self.ltr = ltr559.LTR559()
[docs] @action def get_measurement(self, *_, **__): """ :returns: dict. Example: .. code-block:: python output = { "light": 109.3543, # Lux "proximity": 103 # The higher the value, the nearest the object, within a ~5cm range } """ self.ltr.update_sensor() return { 'light': self.ltr.get_lux(), 'proximity': self.ltr.get_proximity(), }
[docs] def transform_entities(self, entities: Dict[str, Numeric]) -> List[Device]: sensors = [] if entities.get('light') is not None: sensors.append( IlluminanceSensor( id='ltr559:illuminance', name='illuminance', value=entities['light'], unit='lux', ) ) if entities.get('proximity') is not None: sensors.append( DistanceSensor( id='ltr559:proximity', name='proximity', value=entities['proximity'], unit='mm', ) ) if not sensors: return [] return [ Device( id='ltr559', name='LTR559 Sensor', children=sensors, ) ]
# vim:sw=4:ts=4:et: