platypush-home/www/index.html

381 lines
16 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
<link rel="stylesheet" href="fonts/poppins.css">
<link rel="stylesheet" href="fonts/fira-sans.css">
<link rel="stylesheet" href="fonts/fira-code.css">
<link rel="stylesheet" href="css/application.css">
<title>Platypush</title>
<script type="text/javascript">
function toggleMobileMenu() {
const menu = document.getElementById('mobile-menu');
console.log(menu);
if (menu.classList.length)
menu.className = '';
else
menu.className = 'visible';
}
</script>
</head>
<body>
<header>
<div class="left">
<a href="https://platypush.tech" class="logo">
<img src="img/icon.png" alt="Logo">
<span class="name">Platypush</span>
</a>
</div>
<div class="right is-desktop">
<div class="item">
<a href="https://git.platypush.tech/platypush" target="_blank">Git</a>
</div>
<div class="item">
<a href="https://docs.platypush.tech" target="_blank">Docs</a>
</div>
<div class="item">
<a href="https://blog.platypush.tech">Blog</a>
</div>
<div class="item">
<a href="https://git.platypush.tech/platypush/platypush/-/wikis/home" target="_blank">Wiki</a>
</div>
</div>
<div class="right is-mobile">
<button type="button" class="menu-icon" title="Menu" onclick="toggleMobileMenu()">
<img src="img/menu-icon.png">
</button>
</div>
</header>
<main>
<section>
<div class="left">
<div class="title">
Connect things and services together with Platypush
</div>
<div class="content">
Platypush is an open-source modular platform for automation aimed to run on any device that
can run a Python interpreter.
</div>
</div>
<div class="right">
<img src="img/preview.png" alt="App preview">
</div>
</section>
<section>
<div class="left">
<img src="img/integrations.png" alt="Integrations">
</div>
<div class="right">
<div class="title">
Control devices and services through hundreds of available integrations.
</div>
<div class="content">
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.
<a href="https://docs.platypush.tech" target="_blank">Discover the available integrations.</a>
</div>
</div>
</section>
<section>
<div class="left">
<div class="title">
Easy to install, easy to extend.
</div>
<p>
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.
</p>
<p>
Extensions may come with optional sets of additional dependencies, and they can be easily installed
through <tt>pip</tt> - see the <a
href="https://git.platypush.tech/platypush/platypush/-/blob/master/setup.py#L169"
target="_blank"><tt>setup.py</tt></a> for a full list of supported extras. The <a
href="https://docs.platypush.tech" target="_blank">documentation</a> also provided the required
dependencies for each integration.
</p>
</div>
<div class="right">
<div class="code">pip install <span class="string">'platypush[http,mqtt]'</span></div>
</div>
</section>
<section>
<div class="left">
<div class="code"><span class="comment"># Enable the Z-Wave monitor</span>
<span class="keyword">backend.zwave</span>:
<span class="keyword">- device</span>: /dev/ttyUSB0
<span class="comment"># Enable the Z-Wave actions plugin</span>
<span class="keyword">zwave</span>:
<span class="keyword">- enabled</span>: <span class="string">True</span>
<span class="comment"># Enable the Philips Hue plugin</span>
<span class="keyword">light.hue</span>:
<span class="comment"># Enable the Hue lights plugin</span>
<span class="keyword">- enabled</span>: <span class="string">True</span>
</div>
</div>
<div class="right">
<div class="title">
Easily configure your integrations.
</div>
Configuring an integration is as simple as defining its attributes in
<tt>~/.config/platypush/config.yaml</tt>. The attributes of each integration are the same as their
documented constructors, and an
<a href="https://git.platypush.tech/platypush/platypush/-/blob/master/examples/conf/config.yaml">example configuration</a>
is also provided.
</div>
</section>
<section>
<div class="left">
<div class="title">
Create hooks that connect events to actions.
</div>
<p>
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 <tt>~/.config/platypush/scripts</tt>, or create a YAML snippet into
your <tt>config.yaml</tt>.
</p>
<p>The interface of the available events is also provided on the documentation, as well as the
methods exposed by each plugin and its parameters.</p>
</div>
<div class="right">
<div class="code"><span class="keyword">from</span> platypush.event.hook <span class="keyword">import</span> hook
<span class="keyword">from</span> platypush.utils <span class="keyword">import</span> run
<span class="keyword">from </span>platypush.message.event.zwave <span class="keyword">ZwaveValueChangedEvent</span>
<span class="keyword">@hook</span>(ZwaveValueChangedEvent)
<span class="keyword">def</span> on_zwave_value(event, **context):
<span class="keyword">if</span> event.value['label'] == <span class="string">'Motion Sensor'</span>:
<span class="comment"># Turn on the lights when motion is detected</span>
<span class="keyword">if</span> event.value['data'] is <span class="string">True</span>:
run(<span class="string">'light.hue.on'</span>)
<span class="comment"># Turn off the lights when motion is not detected</span>
<span class="keyword">elif</span> event.value['data'] is <span class="string">False</span>:
run(<span class="string">'light.hue.off'</span>)
</div>
</div>
</section>
<section>
<div class="left">
<img src="img/zwave-screenshot.png" alt="Web panel screenshot">
</div>
<div class="right">
<div class="title">
Easily control all of your devices and integrations from a single interface.
</div>
<div class="content">
<tt>backend.http</tt> 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.
</div>
</div>
</section>
<section>
<div class="left">
<div class="title">
Get inspired with periodic blog articles.
</div>
<div class="content">
The <a href="https://blog.platypush.tech">blog</a> 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.
</div>
</div>
<div class="right">
<img src="img/blog.png" alt="Blog screenshot">
</div>
</section>
<section>
<div class="left">
<img src="img/extension.png" alt="Web extension">
</div>
<div class="right">
<div class="title">
Use the web extension to debug your remote instances and run actions directly from your browser.
</div>
<div class="content">
<tt>backend.http</tt> 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
<a href="https://chrome.google.com/webstore/detail/platypush/aphldjclndofhflbbdnmpejbjgomkbie" target="_blank">Chrome</a>
and <a href="https://addons.mozilla.org/en-US/firefox/addon/platypush/" target="_blank">Firefox</a>,
and the <a href="https://git.platypush.tech/platypush/platypush-webext" target="_blank">source
code</a> is publicly available.
</div>
</div>
</section>
<section>
<div class="left">
<div class="title">
Create your own dashboards.
</div>
<div class="content">
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.
</div>
</div>
<div class="right">
<img src="img/dashboard.png" alt="Dashboard screenshot">
</div>
</section>
<section>
<div class="left">
<img src="img/grafana.png" alt="Grafana screenshot">
</div>
<div class="right">
<div class="title">
Use Platypush to glue devices, databases and user interfaces.
</div>
<div class="content">
Platypush can be the bridge that connects your sensors, mobile and IoT devices to databases and
message queues and to Grafana to create
<a href="https://blog.platypush.tech/article/How-to-build-your-personal-infrastructure-for-data-collection-and-visualization">advanced visualizations of your data</a>.
Be the owner of your data again, and visualize it wherever you like, however you like.
</div>
</div>
</section>
<section>
<div class="left">
<div class="title">
Control all of your devices and services over chat bots and voice.
</div>
<div class="content">
Use the available
<a href="https://blog.platypush.tech/article/Build-custom-voice-assistants">voice assistant</a>
or
<a href="https://blog.platypush.tech/article/Build-a-bot-to-communicate-with-your-smart-home-over-Telegram">chat bot</a>
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).
</div>
</div>
<div class="right">
<img src="img/telegram-bot.png" alt="Telegram bot screenshot" style="width: auto; height: 70%">
</div>
</section>
<section>
<div class="left">
<img src="img/media-screenshot.png" alt="Media screenshot">
</div>
<div class="right">
<div class="title">
All of your media devices and sources in one place.
</div>
<div class="content">
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.
</div>
</div>
</section>
<section>
<div class="left">
<div class="title">
IoT-powered, events-oriented and self-hosted machine learning.
</div>
<div class="content">
Set up pipelines to automatically gather data from your events and dynamically train machine learning
models to e.g.
<a href="https://blog.platypush.tech/article/Detect-people-with-a-RaspberryPi-a-thermal-camera-Platypush-and-a-pinch-of-machine-learning">detect the presence of people</a> or
<a href="https://blog.platypush.tech/article/Create-your-smart-baby-monitor-with-Platypush-and-Tensorflow">recognize specific sounds</a>.
</div>
</div>
<div class="right">
<img src="img/ml.png" alt="ML model screenshot" style="width: 80%">
</div>
</section>
<section>
<div class="left">
<div class="content">
<p>
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:
</p>
<ul>
<li>Open a <a href="https://git.platypush.tech/platypush/platypush/-/issues" target="_blank">
Gitlab issue</a>.</li>
<li>Reach out on <a href="https://www.reddit.com/r/platypush/" target="_blank">
Reddit</a>.</li>
<li>Open a <a href="https://git.platypush.tech/platypush/platypush/-/merge_requests" target="_blank">
merge request</a>.</li>
<li><a href="mailto:admin@platypush.tech" target="_blank">Contact us</a>.</li>
<li>Donations to cover the costs for hosting the infrastructure <a
href="https://paypal.me/fabiomanganiello" target="_blank">are also welcome</a>!
</li>
</ul>
</div>
</div>
<div class="right">
<div class="title">
Contact us or contribute.
</div>
</div>
</section>
<div id="mobile-menu">
<div class="item">
<a href="https://git.platypush.tech/platypush" target="_blank">Git</a>
</div>
<div class="item">
<a href="https://docs.platypush.tech" target="_blank">Docs</a>
</div>
<div class="item">
<a href="https://blog.platypush.tech">Blog</a>
</div>
<div class="item">
<a href="https://git.platypush.tech/platypush/platypush/-/wikis/home" target="_blank">Wiki</a>
</div>
</div>
</main>
</body>
</html>