Compare commits

...

3 Commits

Author SHA1 Message Date
Fabio Manganiello 3d5c60e4f4
[UI docs] Added filter bar for integrations and events.
continuous-integration/drone/push Build is passing Details
2024-05-17 02:21:57 +02:00
Fabio Manganiello f06233801b
[#394] Dynamically generate setup extras.
Also, convert all code that relied on `manifest.yaml` to use
`manifest.json` instead.

Closes: #394
2024-05-17 02:21:57 +02:00
Fabio Manganiello 59c693d6a0
[#394] All `manifest.yaml` converted to `manifest.json`.
YAML isn't part of the Python standard library, while JSON is.

If we want `setup.py` to dynamically parse the available integration
manifest files in order to populate the extra dependencies, then it's
better to rely on a JSON format for manifest files - the parser is part
of the standard library and it doesn't require the user to install
`pyyaml` before `platypush`.
2024-05-17 02:21:57 +02:00
309 changed files with 3256 additions and 2393 deletions

View File

@ -27,13 +27,9 @@ Guidelines:
you are changing some of the core entities (e.g. requests, events, procedures, hooks, crons
or the bus) then make sure to add tests and not to break the existing tests.
- If the feature requires an optional dependency then make sure to document it:
- In the class docstring (see other plugins and backends for examples).
- In [`setup.py`](https://git.platypush.tech/platypush/platypush/-/blob/master/setup.py#L72) as
an `extras_require` entry.
- In the plugin/backend class pydoc string.
- In the `manifest.yaml` - refer to the Wiki (how to write
[plugins](https://git.platypush.tech/platypush/platypush/wiki/Writing-your-own-plugins)
and [backends](https://git.platypush.tech/platypush/platypush/wiki/Writing-your-own-backends))
for examples on how to write an extension manifest file.
- If the feature requires an optional dependency then make sure to document it
in the `manifest.json` - refer to the Wiki (how to write
[plugins](https://git.platypush.tech/platypush/platypush/wiki/Writing-your-own-plugins)
and
[backends](https://git.platypush.tech/platypush/platypush/wiki/Writing-your-own-backends))
for examples on how to write an extension manifest file.

View File

@ -2,5 +2,5 @@ recursive-include platypush/backend/http/webapp/dist *
recursive-include platypush/install *
include platypush/plugins/http/webpage/mercury-parser.js
include platypush/config/*.yaml
global-include manifest.yaml
global-include manifest.json
global-include components.json.gz

View File

@ -22,7 +22,7 @@ Platypush
* [Install from sources](#install-from-sources)
* [Installing the dependencies for your extensions](#installing-the-dependencies-for-your-extensions)
+ [Install via `extras` name](#install-via-extras-name)
+ [Install via `manifest.yaml`](#install-via-manifestyaml)
+ [Install via `manifest.json`](#install-via-manifestjson)
+ [Check the instructions reported in the documentation](#check-the-instructions-reported-in-the-documentation)
* [Virtual environment installation](#virtual-environment-installation)
* [Docker installation](#docker-installation-1)
@ -216,16 +216,27 @@ ways to check the dependencies required by an extension:
#### Install via `extras` name
All the extensions that require extra dependencies are listed in the
[`extras_require` section under
`setup.py`](https://git.platypush.tech/platypush/platypush/src/branch/master/setup.py#L84).
You can install extra dependencies via pip extras:
#### Install via `manifest.yaml`
```shell
pip install 'platypush[plugin1,plugin2,...]'
```
All the plugins and backends have a `manifest.yaml` file in their source folder.
For example:
```shell
pip install 'platypush[light.hue,music.mpd,rss]'
```
Will install Platypush with the dependencies for the `light.hue`, `music.mpd`
and `rss` plugins.
#### Install via `manifest.json`
All the plugins and backends have a `manifest.json` file in their source folder.
Any extra dependencies are listed there
If you followed the `extras` or `manifest.yaml` way to discover the
If you followed the `extras` or `manifest.json` way to discover the
dependencies, then you can install them in two ways:
1. `pip` installation:

View File

@ -159,7 +159,7 @@ class IntegrationEnricher:
base_path,
*doc.split(os.sep)[:-1],
*doc.split(os.sep)[-1].split('.'),
'manifest.yaml',
'manifest.json',
)
if not os.path.isfile(manifest_file):

View File

@ -188,9 +188,47 @@ const renderActionsList = () => {
})
}
const addFilterBar = () => {
const container = document.querySelector('.bd-main')
if (!container)
return
const referenceSection = document.getElementById('reference')
if (!referenceSection)
return
const header = referenceSection.querySelector('h2')
if (!header)
return
const input = document.createElement('input')
input.type = 'text'
input.placeholder = 'Filter'
input.classList.add('filter-bar')
input.addEventListener('input', (event) => {
const filter = event.target.value.toLowerCase()
referenceSection.querySelectorAll('ul.grid li').forEach((li) => {
if (li.innerText.toLowerCase().includes(filter)) {
li.style.display = 'flex'
} else {
li.style.display = 'none'
}
})
})
// Apply the fixed class if the header is above the viewport
const headerOffsetTop = header.offsetTop
document.addEventListener('scroll', () => {
header.classList.toggle('fixed', headerOffsetTop < window.scrollY)
})
header.appendChild(input)
}
document.addEventListener("DOMContentLoaded", function() {
generateComponentsGrid()
convertDepsToTabs()
addClipboardToCodeBlocks()
renderActionsList()
addFilterBar()
})

View File

@ -29,15 +29,18 @@ a.grid-title {
ul.grid li {
display: flex;
background: linear-gradient(0deg, #fff, #f9f9f9);
align-items: center;
justify-content: space-between;
margin: 0 10px 10px 0;
padding: 10px;
padding: 20px;
border: 1px solid #ccc;
border-radius: 15px;
flex-direction: column;
}
ul.grid img {
width: 32px;
width: 48px;
margin-right: 5px;
}
@ -52,13 +55,19 @@ ul.grid li code .pre {
}
ul.grid li:hover {
background: linear-gradient(0deg, #e0ffe8, #e3ffff);
background: linear-gradient(0deg, #157765, #cbffd8) !important;
}
ul.grid li a {
width: calc(100% - 35px);
width: 100%;
display: flex;
justify-content: center;
text-align: center;
margin-top: 0.5em;
}
ul.grid li:hover a {
color: white !important;
}
ul.grid li a code {
@ -128,3 +137,48 @@ ul.grid .icon {
border-radius: 0 0 0.75em 0.75em;
}
.bd-article-container {
position: relative;
}
.filter-bar {
width: 100%;
display: block;
font-size: 0.6em;
border: 1px solid #ccc;
border-radius: 0.75em;
margin: 0.5em 0;
padding: 0.25em;
}
#reference h2.fixed {
position: fixed;
top: 0;
background: white;
z-index: 1;
border-bottom: 1px solid #ccc;
}
@media screen and (max-width: 768px) {
#reference h2.fixed {
width: 100%;
margin-left: -0.5em;
padding: 0.5em 0.5em 0 0.5em;
}
}
@media screen and (max-width: 959px) {
#reference h2.fixed {
width: 100%;
margin-left: -1em;
padding: 0.5em 0.5em 0 0.5em;
}
}
@media screen and (min-width: 960px) {
#reference h2.fixed {
width: 75%;
max-width: 800px;
padding-top: 0.5em;
}
}

View File

@ -0,0 +1,10 @@
{
"manifest": {
"events": {},
"install": {
"pip": []
},
"package": "platypush.backend.http",
"type": "backend"
}
}

View File

@ -1,6 +0,0 @@
manifest:
events: {}
install:
pip: []
package: platypush.backend.http
type: backend

View File

@ -0,0 +1,12 @@
{
"manifest": {
"events": {},
"install": {
"pip": [
"pynodered"
]
},
"package": "platypush.backend.nodered",
"type": "backend"
}
}

View File

@ -1,7 +0,0 @@
manifest:
events: {}
install:
pip:
- pynodered
package: platypush.backend.nodered
type: backend

View File

@ -0,0 +1,10 @@
{
"manifest": {
"events": {},
"install": {
"pip": []
},
"package": "platypush.backend.redis",
"type": "backend"
}
}

View File

@ -1,6 +0,0 @@
manifest:
events: {}
install:
pip: []
package: platypush.backend.redis
type: backend

View File

@ -0,0 +1,10 @@
{
"manifest": {
"events": {},
"install": {
"pip": []
},
"package": "platypush.backend.tcp",
"type": "backend"
}
}

View File

@ -1,6 +0,0 @@
manifest:
events: {}
install:
pip: []
package: platypush.backend.tcp
type: backend

View File

@ -31,7 +31,7 @@ def exec_wrapper(f: Callable[..., Any], *args, **kwargs):
# pylint: disable=too-few-public-methods
class ExtensionWithManifest:
"""
This class models an extension with an associated manifest.yaml in the same
This class models an extension with an associated manifest.json in the same
folder.
"""
@ -40,11 +40,11 @@ class ExtensionWithManifest:
def get_manifest(self) -> Manifest:
manifest_file = os.path.join(
os.path.dirname(inspect.getfile(self.__class__)), 'manifest.yaml'
os.path.dirname(inspect.getfile(self.__class__)), 'manifest.json'
)
assert os.path.isfile(
manifest_file
), f'The extension {self.__class__.__name__} has no associated manifest.yaml'
), f'The extension {self.__class__.__name__} has no associated manifest.json'
return Manifest.from_file(manifest_file)

View File

@ -251,7 +251,7 @@ class Integration(Component, DocstringParser, Serializable):
:return: Path of the manifest file for the integration.
"""
return os.path.join(
os.path.dirname(inspect.getfile(self.type)), "manifest.yaml"
os.path.dirname(inspect.getfile(self.type)), "manifest.json"
)
@property

View File

@ -2,6 +2,7 @@ import datetime
import glob
import importlib
import inspect
import json
import logging
import os
import pathlib
@ -440,9 +441,13 @@ class Config:
if base_dir.endswith('plugins')
else self._backend_manifests
)
for mf in pathlib.Path(base_dir).rglob('manifest.yaml'):
for mf in pathlib.Path(base_dir).rglob('manifest.json'):
with open(mf, 'r') as f:
manifest = yaml.safe_load(f)['manifest']
manifest = json.load(f).get('manifest')
if not manifest:
continue
comp_name = '.'.join(manifest['package'].split('.')[2:])
manifests_map[comp_name] = manifest

View File

@ -0,0 +1,16 @@
{
"manifest": {
"events": [
"platypush.message.event.adafruit.AdafruitConnectedEvent",
"platypush.message.event.adafruit.AdafruitDisconnectedEvent",
"platypush.message.event.adafruit.AdafruitFeedUpdateEvent"
],
"install": {
"pip": [
"adafruit-io"
]
},
"package": "platypush.plugins.adafruit.io",
"type": "plugin"
}
}

View File

@ -1,10 +0,0 @@
manifest:
events:
- platypush.message.event.adafruit.AdafruitConnectedEvent
- platypush.message.event.adafruit.AdafruitDisconnectedEvent
- platypush.message.event.adafruit.AdafruitFeedUpdateEvent
install:
pip:
- adafruit-io
package: platypush.plugins.adafruit.io
type: plugin

View File

@ -0,0 +1,17 @@
{
"manifest": {
"events": [
"platypush.message.event.alarm.AlarmDisabledEvent",
"platypush.message.event.alarm.AlarmDismissedEvent",
"platypush.message.event.alarm.AlarmEnabledEvent",
"platypush.message.event.alarm.AlarmSnoozedEvent",
"platypush.message.event.alarm.AlarmStartedEvent",
"platypush.message.event.alarm.AlarmTimeoutEvent"
],
"install": {
"pip": []
},
"package": "platypush.plugins.alarm",
"type": "plugin"
}
}

View File

@ -1,12 +0,0 @@
manifest:
events:
- platypush.message.event.alarm.AlarmDisabledEvent
- platypush.message.event.alarm.AlarmDismissedEvent
- platypush.message.event.alarm.AlarmEnabledEvent
- platypush.message.event.alarm.AlarmSnoozedEvent
- platypush.message.event.alarm.AlarmStartedEvent
- platypush.message.event.alarm.AlarmTimeoutEvent
install:
pip: []
package: platypush.plugins.alarm
type: plugin

View File

@ -81,5 +81,5 @@ class ApplicationPlugin(Plugin):
ext = getter(extension)
assert ext, f'Could not find extension {extension}'
manifest_file = str(pathlib.Path(inspect.getfile(ext)).parent / 'manifest.yaml')
manifest_file = str(pathlib.Path(inspect.getfile(ext)).parent / 'manifest.json')
return list(Manifest.from_file(manifest_file).install.to_install_commands())

View File

@ -0,0 +1,10 @@
{
"manifest": {
"events": {},
"install": {
"pip": []
},
"package": "platypush.plugins.application",
"type": "plugin"
}
}

View File

@ -1,6 +0,0 @@
manifest:
events: {}
install:
pip: []
package: platypush.plugins.application
type: plugin

View File

@ -0,0 +1,16 @@
{
"manifest": {
"events": {
"platypush.message.event.sensor.SensorDataAboveThresholdEvent": null,
"platypush.message.event.sensor.SensorDataBelowThresholdEvent": null,
"platypush.message.event.sensor.SensorDataChangeEvent": null
},
"install": {
"pip": [
"pyfirmata2"
]
},
"package": "platypush.plugins.arduino",
"type": "plugin"
}
}

View File

@ -1,10 +0,0 @@
manifest:
events:
platypush.message.event.sensor.SensorDataAboveThresholdEvent:
platypush.message.event.sensor.SensorDataBelowThresholdEvent:
platypush.message.event.sensor.SensorDataChangeEvent:
install:
pip:
- pyfirmata2
package: platypush.plugins.arduino
type: plugin

View File

@ -58,7 +58,7 @@ class AssistantGooglePlugin(AssistantPlugin, RunnablePlugin):
years, some of its dependencies are quite old and may break more recent
Python installations. Please refer to the comments in the `manifest
file
<https://git.platypush.tech/platypush/platypush/src/branch/master/platypush/plugins/assistant/google/manifest.yaml>`_.
<https://git.platypush.tech/platypush/platypush/src/branch/master/platypush/plugins/assistant/google/manifest.json>`_.
for more information on how to install the required dependencies, if
the automated ways fail.
"""

View File

@ -0,0 +1,75 @@
{
"manifest": {
"package": "platypush.plugins.assistant.google",
"type": "plugin",
"events": [
"platypush.message.event.assistant.AlarmEndEvent",
"platypush.message.event.assistant.AlarmStartedEvent",
"platypush.message.event.assistant.ConversationEndEvent",
"platypush.message.event.assistant.ConversationStartEvent",
"platypush.message.event.assistant.ConversationTimeoutEvent",
"platypush.message.event.assistant.MicMutedEvent",
"platypush.message.event.assistant.MicUnmutedEvent",
"platypush.message.event.assistant.NoResponseEvent",
"platypush.message.event.assistant.ResponseEvent",
"platypush.message.event.assistant.SpeechRecognizedEvent",
"platypush.message.event.assistant.TimerEndEvent",
"platypush.message.event.assistant.TimerStartedEvent"
],
"install": {
"apk": [
"ffmpeg",
"portaudio-dev",
"py3-cachetools",
"py3-grpcio",
"py3-google-auth",
"py3-numpy",
"py3-pathlib2",
"py3-tenacity",
"py3-urllib3"
],
"apt": [
"ffmpeg",
"portaudio19-dev",
"python3-cachetools",
"python3-grpcio",
"python3-google-auth",
"python3-monotonic",
"python3-tenacity",
"python3-urllib3"
],
"dnf": [
"ffmpeg",
"portaudio-devel",
"python-cachetools",
"python-grpcio",
"python-google-auth",
"python-monotonic",
"python-numpy",
"python-tenacity",
"python-urllib3"
],
"pacman": [
"ffmpeg",
"portaudio",
"python-cachetools",
"python-grpcio",
"python-google-auth",
"python-monotonic",
"python-numpy",
"python-sounddevice",
"python-tenacity",
"python-urllib3"
],
"pip": [
"google-assistant-library",
"google-auth",
"sounddevice"
],
"after": [
"yes | pip uninstall --break-system-packages enum34 click urllib3 requests google-auth",
"pip install -U --no-input --break-system-packages click urllib3 requests google-auth"
]
}
}
}

View File

@ -1,72 +0,0 @@
manifest:
package: platypush.plugins.assistant.google
type: plugin
events:
- platypush.message.event.assistant.AlarmEndEvent
- platypush.message.event.assistant.AlarmStartedEvent
- platypush.message.event.assistant.ConversationEndEvent
- platypush.message.event.assistant.ConversationStartEvent
- platypush.message.event.assistant.ConversationTimeoutEvent
- platypush.message.event.assistant.MicMutedEvent
- platypush.message.event.assistant.MicUnmutedEvent
- platypush.message.event.assistant.NoResponseEvent
- platypush.message.event.assistant.ResponseEvent
- platypush.message.event.assistant.SpeechRecognizedEvent
- platypush.message.event.assistant.TimerEndEvent
- platypush.message.event.assistant.TimerStartedEvent
install:
apk:
- ffmpeg
- portaudio-dev
- py3-cachetools
- py3-grpcio
- py3-google-auth
- py3-numpy
- py3-pathlib2
- py3-tenacity
- py3-urllib3
apt:
- ffmpeg
- portaudio19-dev
- python3-cachetools
- python3-grpcio
- python3-google-auth
- python3-monotonic
- python3-tenacity
- python3-urllib3
dnf:
- ffmpeg
- portaudio-devel
- python-cachetools
- python-grpcio
- python-google-auth
- python-monotonic
- python-numpy
- python-tenacity
- python-urllib3
pacman:
- ffmpeg
- portaudio
- python-cachetools
- python-grpcio
- python-google-auth
- python-monotonic
- python-numpy
- python-sounddevice
- python-tenacity
- python-urllib3
pip:
- google-assistant-library
- google-auth
- sounddevice
after:
# Uninstall old versions of packages that break things on recent versions
# of Python, when the new versions work just fine
- yes | pip uninstall --break-system-packages enum34 click urllib3 requests google-auth
# Upgrade the dependencies (back) to the latest version.
# NOTE: Be careful when running this command on older distros that may
# not ship the latest versions of all the packages! This is a workaround
# caused by the fact that google-assistant-library pulls in some old
# breaking dependencies that need to be surgically removed.
- pip install -U --no-input --break-system-packages click urllib3 requests google-auth

View File

@ -0,0 +1,43 @@
{
"manifest": {
"package": "platypush.plugins.assistant.picovoice",
"type": "plugin",
"events": [
"platypush.message.event.assistant.ConversationEndEvent",
"platypush.message.event.assistant.ConversationStartEvent",
"platypush.message.event.assistant.ConversationTimeoutEvent",
"platypush.message.event.assistant.HotwordDetectedEvent",
"platypush.message.event.assistant.IntentRecognizedEvent",
"platypush.message.event.assistant.MicMutedEvent",
"platypush.message.event.assistant.MicUnmutedEvent",
"platypush.message.event.assistant.NoResponseEvent",
"platypush.message.event.assistant.ResponseEndEvent",
"platypush.message.event.assistant.ResponseEvent",
"platypush.message.event.assistant.SpeechRecognizedEvent"
],
"install": {
"apk": [
"ffmpeg"
],
"apt": [
"ffmpeg"
],
"dnf": [
"ffmpeg"
],
"pacman": [
"ffmpeg",
"python-sounddevice"
],
"pip": [
"num2words",
"pvcheetah",
"pvleopard",
"pvorca",
"pvporcupine",
"pvrhino",
"sounddevice"
]
}
}
}

View File

@ -1,33 +0,0 @@
manifest:
package: platypush.plugins.assistant.picovoice
type: plugin
events:
- platypush.message.event.assistant.ConversationEndEvent
- platypush.message.event.assistant.ConversationStartEvent
- platypush.message.event.assistant.ConversationTimeoutEvent
- platypush.message.event.assistant.HotwordDetectedEvent
- platypush.message.event.assistant.IntentRecognizedEvent
- platypush.message.event.assistant.MicMutedEvent
- platypush.message.event.assistant.MicUnmutedEvent
- platypush.message.event.assistant.NoResponseEvent
- platypush.message.event.assistant.ResponseEndEvent
- platypush.message.event.assistant.ResponseEvent
- platypush.message.event.assistant.SpeechRecognizedEvent
install:
apk:
- ffmpeg
apt:
- ffmpeg
dnf:
- ffmpeg
pacman:
- ffmpeg
- python-sounddevice
pip:
- num2words # Temporary dependency
- pvcheetah
- pvleopard
- pvorca
- pvporcupine
- pvrhino
- sounddevice

View File

@ -0,0 +1,10 @@
{
"manifest": {
"events": {},
"install": {
"pip": []
},
"package": "platypush.plugins.autoremote",
"type": "plugin"
}
}

View File

@ -1,6 +0,0 @@
manifest:
events: {}
install:
pip: []
package: platypush.plugins.autoremote
type: plugin

View File

@ -0,0 +1,48 @@
{
"manifest": {
"events": {
"platypush.message.event.bluetooth.BluetoothConnectionFailedEvent": null,
"platypush.message.event.bluetooth.BluetoothDeviceConnectedEvent": null,
"platypush.message.event.bluetooth.BluetoothDeviceDisconnectedEvent": null,
"platypush.message.event.bluetooth.BluetoothDeviceFoundEvent": null,
"platypush.message.event.bluetooth.BluetoothDeviceLostEvent": null,
"platypush.message.event.bluetooth.BluetoothFileReceivedEvent": null,
"platypush.message.event.bluetooth.BluetoothFileSentEvent": null,
"platypush.message.event.bluetooth.BluetoothFileTransferCancelledEvent": null,
"platypush.message.event.bluetooth.BluetoothFileTransferStartedEvent": null,
"platypush.message.event.bluetooth.BluetoothScanPausedEvent": null,
"platypush.message.event.bluetooth.BluetoothScanResumedEvent": null,
"platypush.message.event.entities.EntityUpdateEvent": null
},
"install": {
"apk": [
"py3-pydbus",
"git"
],
"apt": [
"libbluetooth-dev",
"python3-pydbus",
"git"
],
"dnf": [
"python-pydbus",
"git"
],
"pacman": [
"python-pydbus",
"python-bleak",
"git"
],
"pip": [
"bleak",
"bluetooth-numbers",
"TheengsDecoder",
"pydbus",
"git+https://github.com/pybluez/pybluez",
"git+https://github.com/BlackLight/PyOBEX"
]
},
"package": "platypush.plugins.bluetooth",
"type": "plugin"
}
}

View File

@ -1,38 +0,0 @@
manifest:
events:
platypush.message.event.bluetooth.BluetoothConnectionFailedEvent:
platypush.message.event.bluetooth.BluetoothDeviceConnectedEvent:
platypush.message.event.bluetooth.BluetoothDeviceDisconnectedEvent:
platypush.message.event.bluetooth.BluetoothDeviceFoundEvent:
platypush.message.event.bluetooth.BluetoothDeviceLostEvent:
platypush.message.event.bluetooth.BluetoothFileReceivedEvent:
platypush.message.event.bluetooth.BluetoothFileSentEvent:
platypush.message.event.bluetooth.BluetoothFileTransferCancelledEvent:
platypush.message.event.bluetooth.BluetoothFileTransferStartedEvent:
platypush.message.event.bluetooth.BluetoothScanPausedEvent:
platypush.message.event.bluetooth.BluetoothScanResumedEvent:
platypush.message.event.entities.EntityUpdateEvent:
install:
apk:
- py3-pydbus
- git
apt:
- libbluetooth-dev
- python3-pydbus
- git
dnf:
- python-pydbus
- git
pacman:
- python-pydbus
- python-bleak
- git
pip:
- bleak
- bluetooth-numbers
- TheengsDecoder
- pydbus
- git+https://github.com/pybluez/pybluez
- git+https://github.com/BlackLight/PyOBEX
package: platypush.plugins.bluetooth
type: plugin

View File

@ -0,0 +1,24 @@
{
"manifest": {
"events": {},
"install": {
"apk": [
"py3-icalendar"
],
"apt": [
"python3-icalendar"
],
"dnf": [
"python-icalendar"
],
"pacman": [
"python-icalendar"
],
"pip": [
"icalendar"
]
},
"package": "platypush.plugins.calendar.ical",
"type": "plugin"
}
}

View File

@ -1,15 +0,0 @@
manifest:
events: {}
install:
apk:
- py3-icalendar
apt:
- python3-icalendar
dnf:
- python-icalendar
pacman:
- python-icalendar
pip:
- icalendar
package: platypush.plugins.calendar.ical
type: plugin

View File

@ -0,0 +1,10 @@
{
"manifest": {
"events": {},
"install": {
"pip": []
},
"package": "platypush.plugins.calendar",
"type": "plugin"
}
}

View File

@ -1,6 +0,0 @@
manifest:
events: {}
install:
pip: []
package: platypush.plugins.calendar
type: plugin

View File

@ -0,0 +1,10 @@
{
"manifest": {
"events": {},
"install": {
"pip": []
},
"package": "platypush.plugins.camera.android.ipcam",
"type": "plugin"
}
}

View File

@ -1,6 +0,0 @@
manifest:
events: {}
install:
pip: []
package: platypush.plugins.camera.android.ipcam
type: plugin

View File

@ -0,0 +1,34 @@
{
"manifest": {
"events": {},
"install": {
"apk": [
"py3-numpy",
"py3-pillow",
"py3-opencv"
],
"apt": [
"python3-numpy",
"python3-pillow",
"python3-opencv"
],
"dnf": [
"python-numpy",
"python-pillow",
"python-opencv"
],
"pacman": [
"python-numpy",
"python-pillow",
"python-opencv"
],
"pip": [
"numpy",
"opencv-python",
"Pillow"
]
},
"package": "platypush.plugins.camera.cv",
"type": "plugin"
}
}

View File

@ -1,25 +0,0 @@
manifest:
events: {}
install:
apk:
- py3-numpy
- py3-pillow
- py3-opencv
apt:
- python3-numpy
- python3-pillow
- python3-opencv
dnf:
- python-numpy
- python-pillow
- python-opencv
pacman:
- python-numpy
- python-pillow
- python-opencv
pip:
- numpy
- opencv-python
- Pillow
package: platypush.plugins.camera.cv
type: plugin

View File

@ -0,0 +1,33 @@
{
"manifest": {
"events": {},
"install": {
"apk": [
"py3-numpy",
"py3-pillow",
"ffmpeg"
],
"apt": [
"python3-numpy",
"python3-pillow",
"ffmpeg"
],
"dnf": [
"python-numpy",
"python-pillow",
"ffmpeg"
],
"pacman": [
"python-numpy",
"python-pillow",
"ffmpeg"
],
"pip": [
"numpy",
"Pillow"
]
},
"package": "platypush.plugins.camera.ffmpeg",
"type": "plugin"
}
}

View File

@ -1,24 +0,0 @@
manifest:
events: {}
install:
apk:
- py3-numpy
- py3-pillow
- ffmpeg
apt:
- python3-numpy
- python3-pillow
- ffmpeg
dnf:
- python-numpy
- python-pillow
- ffmpeg
pacman:
- python-numpy
- python-pillow
- ffmpeg
pip:
- numpy
- Pillow
package: platypush.plugins.camera.ffmpeg
type: plugin

View File

@ -0,0 +1,38 @@
{
"manifest": {
"events": {},
"install": {
"apk": [
"py3-numpy",
"py3-pillow",
"py3-gobject3",
"py3-gst"
],
"apt": [
"python3-numpy",
"python3-pillow",
"python3-gi",
"python3-gst-1.0"
],
"dnf": [
"python-numpy",
"python-pillow",
"python-gstreamer1",
"python-gobject"
],
"pacman": [
"python-numpy",
"python-pillow",
"gst-python",
"python-gobject"
],
"pip": [
"numpy",
"Pillow",
"pygobject"
]
},
"package": "platypush.plugins.camera.gstreamer",
"type": "plugin"
}
}

View File

@ -1,30 +0,0 @@
manifest:
events: {}
install:
apk:
- py3-numpy
- py3-pillow
- py3-gobject3
- py3-gst
apt:
- python3-numpy
- python3-pillow
- python3-gi
- python3-gst-1.0
dnf:
- python-numpy
- python-pillow
- python-gstreamer1
- python-gobject
pacman:
- python-numpy
- python-pillow
- gst-python
- python-gobject
pip:
- numpy
- Pillow
- pygobject
package: platypush.plugins.camera.gstreamer
type: plugin

View File

@ -0,0 +1,33 @@
{
"manifest": {
"events": {},
"install": {
"apk": [
"i2c-tools-dev",
"py3-numpy",
"py3-pillow"
],
"apt": [
"libi2c-dev",
"python3-numpy",
"python3-pillow"
],
"dnf": [
"i2c-tools",
"python-numpy",
"python-pillow"
],
"pacman": [
"i2c-tools",
"python-numpy",
"python-pillow"
],
"pip": [
"numpy",
"Pillow"
]
},
"package": "platypush.plugins.camera.ir.mlx90640",
"type": "plugin"
}
}

View File

@ -1,24 +0,0 @@
manifest:
events: {}
install:
apk:
- i2c-tools-dev
- py3-numpy
- py3-pillow
apt:
- libi2c-dev
- python3-numpy
- python3-pillow
dnf:
- i2c-tools
- python-numpy
- python-pillow
pacman:
- i2c-tools
- python-numpy
- python-pillow
pip:
- numpy
- Pillow
package: platypush.plugins.camera.ir.mlx90640
type: plugin

View File

@ -0,0 +1,34 @@
{
"manifest": {
"events": {},
"install": {
"apk": [
"ffmpeg",
"py3-numpy",
"py3-pillow"
],
"apt": [
"ffmpeg",
"python3-numpy",
"python3-pillow"
],
"dnf": [
"ffmpeg",
"python-numpy",
"python-pillow"
],
"pacman": [
"ffmpeg",
"python-numpy",
"python-pillow"
],
"pip": [
"picamera",
"numpy",
"Pillow"
]
},
"package": "platypush.plugins.camera.pi.legacy",
"type": "plugin"
}
}

View File

@ -1,25 +0,0 @@
manifest:
events: {}
install:
apk:
- ffmpeg
- py3-numpy
- py3-pillow
apt:
- ffmpeg
- python3-numpy
- python3-pillow
dnf:
- ffmpeg
- python-numpy
- python-pillow
pacman:
- ffmpeg
- python-numpy
- python-pillow
pip:
- picamera
- numpy
- Pillow
package: platypush.plugins.camera.pi.legacy
type: plugin

View File

@ -0,0 +1,34 @@
{
"manifest": {
"events": {},
"install": {
"apk": [
"ffmpeg",
"py3-numpy",
"py3-pillow"
],
"apt": [
"ffmpeg",
"python3-numpy",
"python3-pillow"
],
"dnf": [
"ffmpeg",
"python-numpy",
"python-pillow"
],
"pacman": [
"ffmpeg",
"python-numpy",
"python-pillow"
],
"pip": [
"picamera2",
"numpy",
"Pillow"
]
},
"package": "platypush.plugins.camera.pi",
"type": "plugin"
}
}

View File

@ -1,25 +0,0 @@
manifest:
events: {}
install:
apk:
- ffmpeg
- py3-numpy
- py3-pillow
apt:
- ffmpeg
- python3-numpy
- python3-pillow
dnf:
- ffmpeg
- python-numpy
- python-pillow
pacman:
- ffmpeg
- python-numpy
- python-pillow
pip:
- picamera2
- numpy
- Pillow
package: platypush.plugins.camera.pi
type: plugin

View File

@ -0,0 +1,23 @@
{
"manifest": {
"events": {
"platypush.message.event.clipboard.ClipboardEvent": "on clipboard update."
},
"install": {
"apk": [
"py3-pyclip"
],
"dnf": [
"python-pyclip"
],
"pacman": [
"python-pyclip"
],
"pip": [
"pyclip"
]
},
"package": "platypush.plugins.clipboard",
"type": "plugin"
}
}

View File

@ -1,14 +0,0 @@
manifest:
events:
platypush.message.event.clipboard.ClipboardEvent: on clipboard update.
install:
apk:
- py3-pyclip
dnf:
- python-pyclip
pacman:
- python-pyclip
pip:
- pyclip
package: platypush.plugins.clipboard
type: plugin

View File

@ -0,0 +1,10 @@
{
"manifest": {
"events": {},
"install": {
"pip": []
},
"package": "platypush.plugins.config",
"type": "plugin"
}
}

View File

@ -1,6 +0,0 @@
manifest:
events: {}
install:
pip: []
package: platypush.plugins.config
type: plugin

View File

@ -0,0 +1,10 @@
{
"manifest": {
"events": {},
"install": {
"pip": []
},
"package": "platypush.plugins.csv",
"type": "plugin"
}
}

View File

@ -1,6 +0,0 @@
manifest:
events: {}
install:
pip: []
package: platypush.plugins.csv
type: plugin

View File

@ -0,0 +1,25 @@
{
"manifest": {
"events": {},
"install": {
"apk": [
"py3-pycups"
],
"apt": [
"libcups2-dev",
"python3-cups"
],
"dnf": [
"python-cups"
],
"pacman": [
"python-pycups"
],
"pip": [
"pycups"
]
},
"package": "platypush.plugins.cups",
"type": "plugin"
}
}

View File

@ -1,16 +0,0 @@
manifest:
events: {}
install:
apk:
- py3-pycups
apt:
- libcups2-dev
- python3-cups
dnf:
- python-cups
pacman:
- python-pycups
pip:
- pycups
package: platypush.plugins.cups
type: plugin

View File

@ -0,0 +1,10 @@
{
"manifest": {
"events": {},
"install": {
"pip": []
},
"package": "platypush.plugins.db",
"type": "plugin"
}
}

View File

@ -1,6 +0,0 @@
manifest:
events: {}
install:
pip: []
package: platypush.plugins.db
type: plugin

View File

@ -0,0 +1,31 @@
{
"manifest": {
"events": {
"platypush.message.event.dbus.DbusSignalEvent": "When a signal is received"
},
"install": {
"apk": [
"py3-pydbus",
"py3-defusedxml"
],
"apt": [
"python3-pydbus",
"python3-defusedxml"
],
"dnf": [
"python-pydbus",
"python-defusedxml"
],
"pacman": [
"python-pydbus",
"python-defusedxml"
],
"pip": [
"pydbus",
"defusedxml"
]
},
"package": "platypush.plugins.dbus",
"type": "plugin"
}
}

View File

@ -1,21 +0,0 @@
manifest:
events:
platypush.message.event.dbus.DbusSignalEvent: When a signal is received
install:
apk:
- py3-pydbus
- py3-defusedxml
apt:
- python3-pydbus
- python3-defusedxml
dnf:
- python-pydbus
- python-defusedxml
pacman:
- python-pydbus
- python-defusedxml
pip:
- pydbus
- defusedxml
package: platypush.plugins.dbus
type: plugin

View File

@ -0,0 +1,21 @@
{
"manifest": {
"events": {},
"install": {
"apt": [
"python3-dropbox"
],
"dnf": [
"python-dropbox"
],
"pacman": [
"python-dropbox"
],
"pip": [
"dropbox"
]
},
"package": "platypush.plugins.dropbox",
"type": "plugin"
}
}

View File

@ -1,13 +0,0 @@
manifest:
events: {}
install:
apt:
- python3-dropbox
dnf:
- python-dropbox
pacman:
- python-dropbox
pip:
- dropbox
package: platypush.plugins.dropbox
type: plugin

View File

@ -0,0 +1,7 @@
{
"manifest": {
"events": {},
"package": "platypush.plugins.entities",
"type": "plugin"
}
}

View File

@ -1,4 +0,0 @@
manifest:
events: {}
package: platypush.plugins.entities
type: plugin

View File

@ -0,0 +1,10 @@
{
"manifest": {
"events": {},
"install": {
"pip": []
},
"package": "platypush.plugins.esp",
"type": "plugin"
}
}

View File

@ -1,6 +0,0 @@
manifest:
events: {}
install:
pip: []
package: platypush.plugins.esp
type: plugin

View File

@ -0,0 +1,25 @@
{
"manifest": {
"events": {},
"install": {
"apk": [
"ffmpeg"
],
"apt": [
"ffmpeg"
],
"dnf": [
"ffmpeg"
],
"pacman": [
"ffmpeg",
"python-ffmpeg"
],
"pip": [
"ffmpeg-python"
]
},
"package": "platypush.plugins.ffmpeg",
"type": "plugin"
}
}

View File

@ -1,16 +0,0 @@
manifest:
events: {}
install:
apk:
- ffmpeg
apt:
- ffmpeg
dnf:
- ffmpeg
pacman:
- ffmpeg
- python-ffmpeg
pip:
- ffmpeg-python
package: platypush.plugins.ffmpeg
type: plugin

View File

@ -0,0 +1,10 @@
{
"manifest": {
"events": {},
"install": {
"pip": []
},
"package": "platypush.plugins.file",
"type": "plugin"
}
}

View File

@ -1,6 +0,0 @@
manifest:
events: {}
install:
pip: []
package: platypush.plugins.file
type: plugin

View File

@ -0,0 +1,28 @@
{
"manifest": {
"events": [
"platypush.message.event.file.FileSystemCreateEvent",
"platypush.message.event.file.FileSystemDeleteEvent",
"platypush.message.event.file.FileSystemModifyEvent"
],
"install": {
"apk": [
"py3-watchdog"
],
"apt": [
"python3-watchdog"
],
"dnf": [
"python-watchdog"
],
"pacman": [
"python-watchdog"
],
"pip": [
"watchdog"
]
},
"package": "platypush.plugins.file.monitor",
"type": "plugin"
}
}

View File

@ -1,18 +0,0 @@
manifest:
events:
- platypush.message.event.file.FileSystemCreateEvent
- platypush.message.event.file.FileSystemDeleteEvent
- platypush.message.event.file.FileSystemModifyEvent
install:
apk:
- py3-watchdog
apt:
- python3-watchdog
dnf:
- python-watchdog
pacman:
- python-watchdog
pip:
- watchdog
package: platypush.plugins.file.monitor
type: plugin

View File

@ -0,0 +1,12 @@
{
"manifest": {
"events": [
"platypush.message.event.flic.FlicButtonEvent"
],
"install": {
"pip": []
},
"package": "platypush.plugins.flic",
"type": "plugin"
}
}

View File

@ -1,7 +0,0 @@
manifest:
events:
- platypush.message.event.flic.FlicButtonEvent
install:
pip: []
package: platypush.plugins.flic
type: plugin

View File

@ -0,0 +1,12 @@
{
"manifest": {
"events": [
"platypush.message.event.foursquare.FoursquareCheckinEvent"
],
"install": {
"pip": []
},
"package": "platypush.plugins.foursquare",
"type": "plugin"
}
}

View File

@ -1,7 +0,0 @@
manifest:
events:
- platypush.message.event.foursquare.FoursquareCheckinEvent
install:
pip: []
package: platypush.plugins.foursquare
type: plugin

View File

@ -0,0 +1,24 @@
{
"manifest": {
"events": [
"platypush.message.event.github.GithubCommitCommentEvent",
"platypush.message.event.github.GithubCreateEvent",
"platypush.message.event.github.GithubDeleteEvent",
"platypush.message.event.github.GithubEvent",
"platypush.message.event.github.GithubForkEvent",
"platypush.message.event.github.GithubIssueCommentEvent",
"platypush.message.event.github.GithubIssueEvent",
"platypush.message.event.github.GithubMemberEvent",
"platypush.message.event.github.GithubPublicEvent",
"platypush.message.event.github.GithubPullRequestEvent",
"platypush.message.event.github.GithubPullRequestReviewCommentEvent",
"platypush.message.event.github.GithubPushEvent",
"platypush.message.event.github.GithubReleaseEvent",
"platypush.message.event.github.GithubSponsorshipEvent",
"platypush.message.event.github.GithubWatchEvent",
"platypush.message.event.github.GithubWikiEvent"
],
"package": "platypush.plugins.github",
"type": "plugin"
}
}

View File

@ -1,20 +0,0 @@
manifest:
events:
- platypush.message.event.github.GithubCommitCommentEvent
- platypush.message.event.github.GithubCreateEvent
- platypush.message.event.github.GithubDeleteEvent
- platypush.message.event.github.GithubEvent
- platypush.message.event.github.GithubForkEvent
- platypush.message.event.github.GithubIssueCommentEvent
- platypush.message.event.github.GithubIssueEvent
- platypush.message.event.github.GithubMemberEvent
- platypush.message.event.github.GithubPublicEvent
- platypush.message.event.github.GithubPullRequestEvent
- platypush.message.event.github.GithubPullRequestReviewCommentEvent
- platypush.message.event.github.GithubPushEvent
- platypush.message.event.github.GithubReleaseEvent
- platypush.message.event.github.GithubSponsorshipEvent
- platypush.message.event.github.GithubWatchEvent
- platypush.message.event.github.GithubWikiEvent
package: platypush.plugins.github
type: plugin

View File

@ -0,0 +1,38 @@
{
"manifest": {
"events": {},
"install": {
"apk": [
"py3-google-api-python-client",
"py3-google-auth",
"py3-oauth2client",
"py3-httplib2"
],
"apt": [
"python3-google-auth",
"python3-oauth2client",
"python3-httplib2"
],
"dnf": [
"python-google-api-client",
"python-google-auth",
"python-oauth2client",
"python-httplib2"
],
"pacman": [
"python-google-api-python-client",
"python-google-auth",
"python-oauth2client",
"python-httplib2"
],
"pip": [
"google-api-python-client",
"google-auth",
"oauth2client",
"httplib2"
]
},
"package": "platypush.plugins.google.calendar",
"type": "plugin"
}
}

View File

@ -1,29 +0,0 @@
manifest:
events: {}
install:
apk:
- py3-google-api-python-client
- py3-google-auth
- py3-oauth2client
- py3-httplib2
apt:
- python3-google-auth
- python3-oauth2client
- python3-httplib2
dnf:
- python-google-api-client
- python-google-auth
- python-oauth2client
- python-httplib2
pacman:
- python-google-api-python-client
- python-google-auth
- python-oauth2client
- python-httplib2
pip:
- google-api-python-client
- google-auth
- oauth2client
- httplib2
package: platypush.plugins.google.calendar
type: plugin

View File

@ -0,0 +1,38 @@
{
"manifest": {
"events": {},
"install": {
"apk": [
"py3-google-api-python-client",
"py3-google-auth",
"py3-oauth2client",
"py3-httplib2"
],
"apt": [
"python3-google-auth",
"python3-oauth2client",
"python3-httplib2"
],
"dnf": [
"python-google-api-client",
"python-google-auth",
"python-oauth2client",
"python-httplib2"
],
"pacman": [
"python-google-api-python-client",
"python-google-auth",
"python-oauth2client",
"python-httplib2"
],
"pip": [
"google-api-python-client",
"google-auth",
"oauth2client",
"httplib2"
]
},
"package": "platypush.plugins.google.drive",
"type": "plugin"
}
}

View File

@ -1,29 +0,0 @@
manifest:
events: {}
install:
apk:
- py3-google-api-python-client
- py3-google-auth
- py3-oauth2client
- py3-httplib2
apt:
- python3-google-auth
- python3-oauth2client
- python3-httplib2
dnf:
- python-google-api-client
- python-google-auth
- python-oauth2client
- python-httplib2
pacman:
- python-google-api-python-client
- python-google-auth
- python-oauth2client
- python-httplib2
pip:
- google-api-python-client
- google-auth
- oauth2client
- httplib2
package: platypush.plugins.google.drive
type: plugin

View File

@ -0,0 +1,38 @@
{
"manifest": {
"events": {},
"install": {
"apk": [
"py3-google-api-python-client",
"py3-google-auth",
"py3-oauth2client",
"py3-httplib2"
],
"apt": [
"python3-google-auth",
"python3-oauth2client",
"python3-httplib2"
],
"dnf": [
"python-google-api-client",
"python-google-auth",
"python-oauth2client",
"python-httplib2"
],
"pacman": [
"python-google-api-python-client",
"python-google-auth",
"python-oauth2client",
"python-httplib2"
],
"pip": [
"google-api-python-client",
"google-auth",
"oauth2client",
"httplib2"
]
},
"package": "platypush.plugins.google.mail",
"type": "plugin"
}
}

View File

@ -1,29 +0,0 @@
manifest:
events: {}
install:
apk:
- py3-google-api-python-client
- py3-google-auth
- py3-oauth2client
- py3-httplib2
apt:
- python3-google-auth
- python3-oauth2client
- python3-httplib2
dnf:
- python-google-api-client
- python-google-auth
- python-oauth2client
- python-httplib2
pacman:
- python-google-api-python-client
- python-google-auth
- python-oauth2client
- python-httplib2
pip:
- google-api-python-client
- google-auth
- oauth2client
- httplib2
package: platypush.plugins.google.mail
type: plugin

View File

@ -0,0 +1,38 @@
{
"manifest": {
"events": {},
"install": {
"apk": [
"py3-google-api-python-client",
"py3-google-auth",
"py3-oauth2client",
"py3-httplib2"
],
"apt": [
"python3-google-auth",
"python3-oauth2client",
"python3-httplib2"
],
"dnf": [
"python-google-api-client",
"python-google-auth",
"python-oauth2client",
"python-httplib2"
],
"pacman": [
"python-google-api-python-client",
"python-google-auth",
"python-oauth2client",
"python-httplib2"
],
"pip": [
"google-api-python-client",
"google-auth",
"oauth2client",
"httplib2"
]
},
"package": "platypush.plugins.google.maps",
"type": "plugin"
}
}

View File

@ -1,29 +0,0 @@
manifest:
events: {}
install:
apk:
- py3-google-api-python-client
- py3-google-auth
- py3-oauth2client
- py3-httplib2
apt:
- python3-google-auth
- python3-oauth2client
- python3-httplib2
dnf:
- python-google-api-client
- python-google-auth
- python-oauth2client
- python-httplib2
pacman:
- python-google-api-python-client
- python-google-auth
- python-oauth2client
- python-httplib2
pip:
- google-api-python-client
- google-auth
- oauth2client
- httplib2
package: platypush.plugins.google.maps
type: plugin

View File

@ -0,0 +1,41 @@
{
"manifest": {
"events": [
"platypush.message.event.google.pubsub.GooglePubsubMessageEvent"
],
"install": {
"apk": [
"py3-google-api-python-client",
"py3-google-auth",
"py3-oauth2client",
"py3-httplib2"
],
"apt": [
"python3-google-auth",
"python3-oauth2client",
"python3-httplib2"
],
"dnf": [
"python-google-api-client",
"python-google-auth",
"python-oauth2client",
"python-httplib2"
],
"pacman": [
"python-google-api-python-client",
"python-google-auth",
"python-oauth2client",
"python-httplib2"
],
"pip": [
"google-api-python-client",
"google-auth",
"oauth2client",
"google-cloud-pubsub",
"httplib2"
]
},
"package": "platypush.plugins.google.pubsub",
"type": "plugin"
}
}

View File

@ -1,31 +0,0 @@
manifest:
events:
- platypush.message.event.google.pubsub.GooglePubsubMessageEvent
install:
apk:
- py3-google-api-python-client
- py3-google-auth
- py3-oauth2client
- py3-httplib2
apt:
- python3-google-auth
- python3-oauth2client
- python3-httplib2
dnf:
- python-google-api-client
- python-google-auth
- python-oauth2client
- python-httplib2
pacman:
- python-google-api-python-client
- python-google-auth
- python-oauth2client
- python-httplib2
pip:
- google-api-python-client
- google-auth
- oauth2client
- google-cloud-pubsub
- httplib2
package: platypush.plugins.google.pubsub
type: plugin

View File

@ -0,0 +1,39 @@
{
"manifest": {
"events": {},
"install": {
"apk": [
"py3-google-api-python-client",
"py3-google-auth",
"py3-oauth2client",
"py3-httplib2"
],
"apt": [
"python3-google-auth",
"python3-oauth2client",
"python3-httplib2"
],
"dnf": [
"python-google-api-client",
"python-google-auth",
"python-oauth2client",
"python-httplib2"
],
"pacman": [
"python-google-api-python-client",
"python-google-auth",
"python-oauth2client",
"python-httplib2"
],
"pip": [
"google-api-python-client",
"google-auth",
"oauth2client",
"google-cloud-translate",
"httplib2"
]
},
"package": "platypush.plugins.google.translate",
"type": "plugin"
}
}

View File

@ -1,30 +0,0 @@
manifest:
events: {}
install:
apk:
- py3-google-api-python-client
- py3-google-auth
- py3-oauth2client
- py3-httplib2
apt:
- python3-google-auth
- python3-oauth2client
- python3-httplib2
dnf:
- python-google-api-client
- python-google-auth
- python-oauth2client
- python-httplib2
pacman:
- python-google-api-python-client
- python-google-auth
- python-oauth2client
- python-httplib2
pip:
- google-api-python-client
- google-auth
- oauth2client
- google-cloud-translate
- httplib2
package: platypush.plugins.google.translate
type: plugin

View File

@ -0,0 +1,9 @@
{
"manifest": {
"events": {
"platypush.message.event.gotify.GotifyMessageEvent": "when a new message is received."
},
"package": "platypush.plugins.gotify",
"type": "plugin"
}
}

View File

@ -1,5 +0,0 @@
manifest:
events:
platypush.message.event.gotify.GotifyMessageEvent: when a new message is received.
package: platypush.plugins.gotify
type: plugin

View File

@ -0,0 +1,14 @@
{
"manifest": {
"events": [
"platypush.message.event.gpio.GPIOEvent"
],
"install": {
"pip": [
"RPi.GPIO"
]
},
"package": "platypush.plugins.gpio",
"type": "plugin"
}
}

View File

@ -1,8 +0,0 @@
manifest:
events:
- platypush.message.event.gpio.GPIOEvent
install:
pip:
- RPi.GPIO
package: platypush.plugins.gpio
type: plugin

View File

@ -0,0 +1,13 @@
{
"manifest": {
"events": {
"platypush.message.event.zeroborg.ZeroborgDriveEvent": "when motors direction changes",
"platypush.message.event.zeroborg.ZeroborgStopEvent": "upon motors stop"
},
"install": {
"pip": []
},
"package": "platypush.plugins.gpio.zeroborg",
"type": "plugin"
}
}

Some files were not shown because too many files have changed in this diff Show More