forked from platypush/platypush
Migrated ltr559
integration to the new API.
Merged `backend.sensor.ltr559` and `gpio.sensor.ltr559` into the new `sensor.ltr559` plugin, which extends the new `SensorPlugin` API.
This commit is contained in:
parent
8e0f88ea16
commit
c1d0f21ead
6 changed files with 103 additions and 98 deletions
|
@ -1,37 +0,0 @@
|
|||
from platypush.backend.sensor import SensorBackend
|
||||
|
||||
|
||||
class SensorLtr559Backend(SensorBackend):
|
||||
"""
|
||||
Backend to poll an `LTR559 <https://shop.pimoroni.com/products/ltr-559-light-proximity-sensor-breakout>`_
|
||||
light/proximity sensor
|
||||
|
||||
Requires:
|
||||
|
||||
* ``ltr559`` (``pip install ltr559``)
|
||||
|
||||
Triggers:
|
||||
|
||||
* :class:`platypush.message.event.sensor.SensorDataChangeEvent` if the measurements of a sensor have changed
|
||||
* :class:`platypush.message.event.sensor.SensorDataAboveThresholdEvent` if the measurements of a sensor have
|
||||
gone above a configured threshold
|
||||
* :class:`platypush.message.event.sensor.SensorDataBelowThresholdEvent` if the measurements of a sensor have
|
||||
gone below a configured threshold
|
||||
|
||||
"""
|
||||
|
||||
def __init__(self, light=True, proximity=True, **kwargs):
|
||||
"""
|
||||
:param light: Enable light sensor
|
||||
:param proximity: Enable proximity sensor
|
||||
"""
|
||||
|
||||
enabled_sensors = {
|
||||
'light': light,
|
||||
'proximity': proximity,
|
||||
}
|
||||
|
||||
super().__init__(plugin='gpio.sensor.ltr559', enabled_sensors=enabled_sensors, **kwargs)
|
||||
|
||||
|
||||
# vim:sw=4:ts=4:et:
|
|
@ -1,13 +0,0 @@
|
|||
manifest:
|
||||
events:
|
||||
platypush.message.event.sensor.SensorDataAboveThresholdEvent: if the measurements
|
||||
of a sensor havegone above a configured threshold
|
||||
platypush.message.event.sensor.SensorDataBelowThresholdEvent: if the measurements
|
||||
of a sensor havegone below a configured threshold
|
||||
platypush.message.event.sensor.SensorDataChangeEvent: if the measurements of a
|
||||
sensor have changed
|
||||
install:
|
||||
pip:
|
||||
- ltr559
|
||||
package: platypush.backend.sensor.ltr559
|
||||
type: backend
|
|
@ -1,41 +0,0 @@
|
|||
from platypush.plugins import action
|
||||
from platypush.plugins.gpio.sensor import GpioSensorPlugin
|
||||
|
||||
|
||||
class GpioSensorLtr559Plugin(GpioSensorPlugin):
|
||||
"""
|
||||
Plugin to interact with an `LTR559 <https://shop.pimoroni.com/products/ltr-559-light-proximity-sensor-breakout>`_
|
||||
light and proximity sensor
|
||||
|
||||
Requires:
|
||||
|
||||
* ``ltr559`` (``pip install ltr559``)
|
||||
"""
|
||||
|
||||
def __init__(self, **kwargs):
|
||||
import ltr559
|
||||
super().__init__(**kwargs)
|
||||
self.ltr = ltr559.LTR559()
|
||||
|
||||
# noinspection PyUnresolvedReferences
|
||||
@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(),
|
||||
}
|
||||
|
||||
|
||||
# vim:sw=4:ts=4:et:
|
|
@ -1,7 +0,0 @@
|
|||
manifest:
|
||||
events: {}
|
||||
install:
|
||||
pip:
|
||||
- ltr559
|
||||
package: platypush.plugins.gpio.sensor.ltr559
|
||||
type: plugin
|
93
platypush/plugins/sensor/ltr559/__init__.py
Normal file
93
platypush/plugins/sensor/ltr559/__init__.py
Normal file
|
@ -0,0 +1,93 @@
|
|||
from typing import Dict, List
|
||||
|
||||
from typing_extensions import override
|
||||
|
||||
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
|
||||
class SensorLtr559Plugin(SensorPlugin):
|
||||
"""
|
||||
Plugin to interact with an `LTR559 <https://shop.pimoroni.com/products/ltr-559-light-proximity-sensor-breakout>`_
|
||||
light and proximity sensor
|
||||
|
||||
Requires:
|
||||
|
||||
* ``ltr559`` (``pip install ltr559``)
|
||||
|
||||
Triggers:
|
||||
|
||||
* :class:`platypush.message.event.sensor.SensorDataAboveThresholdEvent`
|
||||
* :class:`platypush.message.event.sensor.SensorDataBelowThresholdEvent`
|
||||
* :class:`platypush.message.event.sensor.SensorDataChangeEvent`
|
||||
|
||||
"""
|
||||
|
||||
def __init__(self, **kwargs):
|
||||
import ltr559
|
||||
|
||||
super().__init__(**kwargs)
|
||||
self.ltr = ltr559.LTR559()
|
||||
|
||||
@override
|
||||
@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(),
|
||||
}
|
||||
|
||||
@override
|
||||
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:
|
10
platypush/plugins/sensor/ltr559/manifest.yaml
Normal file
10
platypush/plugins/sensor/ltr559/manifest.yaml
Normal file
|
@ -0,0 +1,10 @@
|
|||
manifest:
|
||||
events:
|
||||
platypush.message.event.sensor.SensorDataAboveThresholdEvent:
|
||||
platypush.message.event.sensor.SensorDataBelowThresholdEvent:
|
||||
platypush.message.event.sensor.SensorDataChangeEvent:
|
||||
install:
|
||||
pip:
|
||||
- ltr559
|
||||
package: platypush.plugins.sensor.ltr559
|
||||
type: plugin
|
Loading…
Reference in a new issue