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: