Connect things and services together with Platypush
Platypush is an open-source modular platform for automation aimed to run on any device that can run a Python interpreter.
Control devices and services through hundreds of available integrations.
Platypush comes with many integrations, each wrapped by a consistent API, making it very easy to create automation routines when a certain event happens, programmatically action them in your scripts, or control them all from a single consistent web interface. Discover the available integrations. The README is also a good place to get started.
Easy to install, easy to extend.

Platypush comes with an intentionally thin core that dispatches messages and events over Redis, and its power comes from the high number of integrations it provides. It's up to the user to decide the pick the use case and use the appropriate extensions.

Extensions may come with optional sets of additional dependencies, and they can be easily installed through `pip` - see the `setup.py` for a full list of supported extras. The documentation also provided the required dependencies for each integration.

pip install 'platypush[mqtt]'
# Enable the Zigbee2MQTT integration zigbee.mqtt: - host: 192.168.1.2 # Enable the Philips Hue plugin light.hue: - bridge: 192.168.1.3
Easily configure your integrations.
Configuring an integration is as simple as defining its attributes in `~/.config/platypush/config.yaml`. The attributes of each integration are the same as their documented constructors, and an example configuration is also provided.
Create hooks that connect events to actions.

It's very easy to create pieces of logic that run some custom actions when an event is triggered. Just drop a Python script into `~/.config/platypush/scripts`, or create a YAML snippet into your `config.yaml`.

The interface of the available events is also provided on the documentation, as well as the methods exposed by each plugin and its parameters.

from platypush.event.hook import hook from platypush.utils import run from platypush.message.event.zigbee.mqtt import ZigbeeMqttDevicePropertySetEvent @hook(ZigbeeMqttDevicePropertySetEvent, device='My motion sensor') def on_sensor_value_change(event, **ctx): has_motion = event.args.get('properties', {}).get('motion') # Turn on the lights when motion is detected if has_motion is True: run('light.hue.on') # Turn off the lights when motion is not detected elif has_motion is False: run('light.hue.off')
Easily control all of your devices and integrations from a single interface.
`backend.http` also provides a web panel that will allow you to easily control all of your integrations from a single place, on top of exposing a simple JSON-RPC API that allows you to control your integrations from any place and any script. The web interface is responsive, works on any device, and you can easily use it to control multiple instances through the mobile app.
Get inspired with periodic blog articles.
The blog is a useful resource with many articles on how to set up IoT device, how to create your own and how to use Platypush to glue everything together - from voice assistants, to calendars, to robots, to media centers, and so on.
Use the web extension to debug your remote instances and run actions directly from your browser.
`backend.http` also provides a web panel that will allow you to easily control all of your integrations from a single place, on top of exposing a powerful API request editor that allows you to control your integrations from any place and any script. The extension is available for Chrome and Firefox, and the source code is publicly available.
Create your own dashboards.
Create your own all-screen dashboards with custom widgets to always keep an eye on e.g. calendar events, media status, weather, sensors, news or your own pictures carousel.
Use Platypush to glue devices, databases and user interfaces.
Platypush can be the bridge that connects your sensors, mobile and IoT devices to databases and message queues and to Grafana to create advanced visualizations of your data. Be the owner of your data again, and visualize it wherever you like, however you like.
Control all of your devices and services over chat bots and voice.
Use the available voice assistant or chat bot integrations to interact with your smart devices and services over voice (all you need is a USB microphone) or chat bots (all you need is a messaging account).
All of your media devices and sources in one place.
With its numerous media integrations and a comprehensive web control panel, Platypush can turn a device as powerful as a Raspberry Pi 4 into the ultimate media center and streaming center.
IoT-powered, events-oriented and self-hosted machine learning.
Set up pipelines to automatically gather data from your events and dynamically train machine learning models to e.g. detect the presence of people or recognize specific sounds.

Platypush is and will always remain free, open-source and on-prem. If you have questions, suggestions, issues or want to contribute to the project:

- Open a Gitea issue.
- Submit a pull request.
- Email us.
- Give a shout on our Mastodon instance.
- Join the chat on Matrix or IRC (`irc.platypush.tech:6697`, SSL only).
- Reach out on Lemmy.
- Donations to cover the costs for hosting the infrastructure are also welcome!

Contact us or contribute.