forked from platypush/platypush
Added Adafruit IO plugin
This commit is contained in:
parent
bbb27073cd
commit
826e0c7204
4 changed files with 99 additions and 21 deletions
6
docs/source/platypush/plugins/adafruit.io.rst
Normal file
6
docs/source/platypush/plugins/adafruit.io.rst
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
``platypush.plugins.adafruit.io``
|
||||||
|
=================================
|
||||||
|
|
||||||
|
.. automodule:: platypush.plugins.adafruit.io
|
||||||
|
:members:
|
||||||
|
|
|
@ -5,6 +5,7 @@ Plugins
|
||||||
:maxdepth: 2
|
:maxdepth: 2
|
||||||
:caption: Plugins:
|
:caption: Plugins:
|
||||||
|
|
||||||
|
platypush/plugins/adafruit.io.rst
|
||||||
platypush/plugins/assistant.google.rst
|
platypush/plugins/assistant.google.rst
|
||||||
platypush/plugins/assistant.google.pushtotalk.rst
|
platypush/plugins/assistant.google.pushtotalk.rst
|
||||||
platypush/plugins/calendar.rst
|
platypush/plugins/calendar.rst
|
||||||
|
|
88
platypush/plugins/adafruit/io.py
Normal file
88
platypush/plugins/adafruit/io.py
Normal file
|
@ -0,0 +1,88 @@
|
||||||
|
from Adafruit_IO import Client
|
||||||
|
|
||||||
|
from platypush.message import Message
|
||||||
|
from platypush.plugins import Plugin, action
|
||||||
|
|
||||||
|
class AdafruitIoPlugin(Plugin):
|
||||||
|
"""
|
||||||
|
This plugin allows you to interact with the Adafruit IO
|
||||||
|
<https://io.adafruit.com>, a cloud-based message queue and storage.
|
||||||
|
You can send values to feeds on your Adafruit IO account and read the
|
||||||
|
values of those feeds as well through any device.
|
||||||
|
|
||||||
|
Requires:
|
||||||
|
|
||||||
|
* **adafruit-io** (``pip install adafruit-io``)
|
||||||
|
|
||||||
|
Some example usages::
|
||||||
|
|
||||||
|
# Send the temperature value for a connected sensor to the "temperature" feed
|
||||||
|
{
|
||||||
|
"type": "request",
|
||||||
|
"action": "adafruit.io.send",
|
||||||
|
"args": {
|
||||||
|
"feed": "temperature",
|
||||||
|
"value": 25.0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Receive the most recent temperature value
|
||||||
|
{
|
||||||
|
"type": "request",
|
||||||
|
"action": "adafruit.io.receive",
|
||||||
|
"args": {
|
||||||
|
"feed": "temperature"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self, username, key, *args, **kwargs):
|
||||||
|
"""
|
||||||
|
:param username: Your Adafruit username
|
||||||
|
:type username: str
|
||||||
|
|
||||||
|
:param key: Your Adafruit IO key
|
||||||
|
:type key: str
|
||||||
|
"""
|
||||||
|
|
||||||
|
super().__init__(*args, **kwargs)
|
||||||
|
self.aio = Client(username=username, key=key)
|
||||||
|
|
||||||
|
|
||||||
|
@action
|
||||||
|
def send(self, feed, value):
|
||||||
|
"""
|
||||||
|
Send a value to an Adafruit IO feed
|
||||||
|
|
||||||
|
:param feed: Feed name
|
||||||
|
:type feed: str
|
||||||
|
|
||||||
|
:param value: Value to send
|
||||||
|
:type value: Numeric or string
|
||||||
|
"""
|
||||||
|
|
||||||
|
self.aio.send(feed, value)
|
||||||
|
|
||||||
|
|
||||||
|
@action
|
||||||
|
def receive(self, feed):
|
||||||
|
"""
|
||||||
|
Receive the most recent value from an Adafruit IO feed and returns it
|
||||||
|
as a scalar (string or number)
|
||||||
|
|
||||||
|
:param feed: Feed name
|
||||||
|
:type feed: str
|
||||||
|
"""
|
||||||
|
|
||||||
|
value = self.aio.receive(feed).value
|
||||||
|
|
||||||
|
try:
|
||||||
|
value = float(value)
|
||||||
|
except ValueError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
return value
|
||||||
|
|
||||||
|
|
||||||
|
# vim:sw=4:ts=4:et:
|
||||||
|
|
|
@ -16,31 +16,14 @@ class IftttPlugin(Plugin):
|
||||||
|
|
||||||
* **requests** (``pip install requests``)
|
* **requests** (``pip install requests``)
|
||||||
|
|
||||||
Some example usages::
|
An example::
|
||||||
|
|
||||||
# Execute a GET request on a JSON endpoint
|
# Trigger an IFTTT event named "at_home"
|
||||||
{
|
{
|
||||||
"type": "request",
|
"type": "request",
|
||||||
"action": "http.request.get",
|
"action": "ifttt.trigger_event",
|
||||||
"args": {
|
"args": {
|
||||||
"url": "http://remote-host/api/v1/entity",
|
"event_name": "at_home"
|
||||||
"params": {
|
|
||||||
"start": "2000-01-01"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# Execute an action on another Platypush host through HTTP interface
|
|
||||||
{
|
|
||||||
"type": "request",
|
|
||||||
"action": "http.request.post",
|
|
||||||
"args": {
|
|
||||||
"url": "http://remote-host:8008/execute",
|
|
||||||
"json": {
|
|
||||||
"type": "request",
|
|
||||||
"target": "remote-host",
|
|
||||||
"action": "music.mpd.play"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in a new issue