Wenn Ihr mir einige Tage Zeit gebt, dann entsteht hier ein Tutorial, wie man (Meß-) Daten verschiedener Raspberry Pis über Netzwerk in Ectzeit austauscht, Aktionen auslöen kann und das ganze noch in einem schönen Cockpit darstellen kann, sowie natuerlich auch damit Stuern kann.
Das gibt es alles schon unter den Stichworten MQTT und Node Red. Ich möchte aber einen etwas anderen Weg aufzeigen, der schneller und zuverlässiger sein sollte. Hierzu wird das Cockpit nicht(!) in einem Browser dargestellt, sondern in einem Fenster einer Applikation, die sogenannte Dashboards darstellen kann.
Zusätzlich kann man natuerlich auch andere Darstellungs-App verwenden, insbesondere auch auf einem Android-Smartphone. Hierauf wollte ich hier auch eingehen.
Was wird benötigt?
1. einen oder besser meherer Raspberry Pis im selben (lokalen) Netzwerk,
2. gerne meherer MQTT Kompatible Smart-Home Komponenten
3. einen Raspberry Pi oder Linux PC mit angeschlossenem Bildschirm und Maus.
Voraussetzungen
1. Raspbian version ab "stretch". Wer einen älteren Pi hat, (so wie ich auch "weezy") bei dem geht es auch, aber es treten zusatzschwierigkeiten auf, auf die ich hier im Einzelnen nicht eingehen will. Auf den aktuelleren Modellen sollte alles genau so wie hier beschrieben laufen.
2. Etwas Erfahrung mit dem compilieren und installieren von Programmen, die man von github bekommt.
Etwas zum Konzept
Das ganze soll so funktionieren:
1. Ein Raspberry Pi muss als Zentrale fungieren, Auf ihm wird ein sogenannter MQTT broker installiert. Der läuft dann dort permanent.
2. Ein (anderer oder derselbe) Raspberry Pi oder linux Laptop wird für die Cockpit-Darstellung benötigt. Dort sollte eine Maus und ein Bildschirm dran sein.
3. Weitere Raspberry Pis (oder auch Smat-Home geräte) im selben Netzwerk werden daten liefern. Z.B von einem Temperatursensor, Feinstaubsensor oder
was auch immer ihr mit de Raspberry Pis bereits jetzt schon messt. Ausserdem kann man auf den Raspberry Pis empfänger für Kommandos installieren, die Aktionen auslösen können, also GPIO-Ausgänge schalten, pythn scripte starten oder was auch immer. Außerdem, und das finde ich besonders spannend, kann man verteilt auf einen oder beliebig viele Raspberry Pis sogenannte Regelmaschinen installieren (rule-engines), welche live-Berechnungen ausführen, also die Messwerte gleich nach ihrer Entstehen weiterverarbeiten können. Das tolle daran ist, dass die Berechnungen sehr komplex sein dürfen, denn selbst wenn die Daten von einem schwächlichen Smart-Home-Gerätchen kommen, kann die Verarbeitung dann auf einem Raspberry Pi geschehen, der vergleichsweise sehr leistungsstark ist.
Vorfreude:
Damit es nicht zu langweilig wird, hier ein paar Leistungsdaten von was da so entstehen soll:
* Daten können mit bis zu 20Hz auf dem Cockpit dargestellt werden, also ruckelfrei.
* Die CPU-Belastung ist ziemlich niedrig, ein Raspberry Pi kann also ziemlich viele solcher Daten verarbeiten.
* Netzwerkleistung wird kaum benötigt (jedenfalls wenn nur Zahlen und keine Videobilder übertragen werden sollen.
* Das Ganze kann beliebig ausgeweitet werden auf mehr Rechner, auf entfernte Server im Internet, auf das Smatphone etc.
* Man kann mehrer Cockpits auf vielen Rechnern darstellen, wobei garantiert ist, dass alle Cockpits zu jeder Zeit und immer sofort dasselbe anzeigen. Bewegt man auf einem Cockpit mit der Maus einen Scaler (simuliertes Potentiometer) dann bewegt sich dieser Schieber auf den Cockpits der anderen Rechnern wie von Geisterhand.
Geschmacksachen
Es gibt auch eine Besonderheit, die einige vielleicht als Nachteil ansehen: Die Gestaltung des Cockpits geschieht nicht mit einem Grafikprogramm sondern per Textdateien, die mit einem Texteditor bearbeitet werden müssen. Obwohl das sehr simpel gehtm ist es doch etwas fummelig, die einzelnen Koordinaten als Zahlen einzugeben, bis alles mal passt. Einen Cockpit-Designer hat noch keiner dafür geschrieben, und das, finde ich, ist auch die Stärke von anderen ähnlichen Lösungen wir "node red" et. al. Rule-engines muessen ebenfalls in Text-Dateien definiert werden, eigentlich programmiert, aber da es sich nur um wenige Zeilen handelt ist programmieren hier eigentlich etwas zu viel gesagt. Für mich war das aber ein Feature, denn ich arbeite gerne mit der Console und mag eigentlich interaktive Progamme, wo man alles zusammenklicken muss nicht so gerne. Oft sind die unnötig kompliziert zu verstehen und benutzen Javascript oder laufen im WEBbrauser, was sie sehr langsam macht, speziell auf einem alten raspberry Pi ist es quälend langsam.
Soll ich weitermachen mit dem Tutorial? Hier eine Vorschau:
1. So installiert man den mosquitto broker.
2. So kann man Daten senden und empfangen
3. So installiert man das Cockpit "MQTT-Hyperdash" auf einem Raspberry Pi
4. So laüft auch was unter Android
5. Ein commander zum absetzen von shell kommandos
6. Eine kleine Regelmaschine für den ANfang
7. Jetzt ein konkretes Beispiel.