Categories
IoT

#2: IoT Stack

Oder – wie erreiche ich Automation?

IoT – Meine Interpretation (Grafik Axel T.)

Schaut man sich nochmal meine IoT Grafik an, wird schnell klar, dass es etwas komplexer ist, als man im ersten Moment vermutet und gleichzeitig nicht zu komplex ist, dass man es nicht mehr versteht.

Um etwas zu schalten oder zu automatisieren kann man jetzt verschiedenen Strategien wählen.

  1. Je Topic oder Geräte-Typ kann man die vom Hersteller bereitgestellte App verwenden und über dessen Cloud-Angebot auf die Geräte zugreifen und je Hersteller dessen Automation nutzen.
    Bsp.: Shelly oder Sonoff Produkte in Verbindung mit der Hersteller Cloud.
  2. Je Funktions-Gruppe (Haustechnik, Licht, …) kann man versuchen einen Hersteller oder Standard finden und innerhalb dieser Funktions-Gruppe die Automationsaufgaben lösen.
    Bsp.: KNX mit einer Server-Installation für die Haustechnik und Apple-Home für z.B. die Lichtsteuerung
  3. Alle Funktions-Gruppen werden auf einem einzigen Layer (Message Broker) für den Informations-Austausch integriert. Über diesen Layer werden die Automations-Aufgabe durch Sensor- und Aktor Nachrichten (Telemetrie) und mit einem geeigneten Automations-System gelöst.
    Bsp.: MQTT als Telemetrie Protokoll und Node-Red als Entwicklungswerkzeug für die Automation

Schaut man sich diese drei Möglichkeiten an, so könnte man argumentieren, dass die erste Möglichkeit vielleicht als die am einfachsten umzusetzende Möglichkeit erscheint, aber wenig oder keine Automation Horizontal – also über die Grenzen eines Geräte-Typs oder Herstellers erlaubt.

Die zweite Möglichkeit ist besser, da sich Funktions-Gruppen zusammenfassen und eine Horizontale Integration so möglich wird, jedoch zum Preis einer propietären Lösung, für deren Konfiguration man Software kaufen muss. Bei Apple-Home gibt es die Möglichkeit, mit OpenSource Software eine Brücke zu schlagen.

Die dritte Möglichkeit bietet mit Hilfe von MQTT vertikale (Anzahl Geräte) und horizontale (Geräte Typen) Integration und Skalierbarkeit, da es als Industrie-Standard auf Masse und Robustheit sowie Sicherheit ausgelegt ist. Der Preis ist jedoch, dass man für jeden Geräte-Typ eine MQTT-Integration haben muss, was aber für dass, was man im Homeautomation Umfeld machen möchte, gegeben ist.

Meine gesamte Homeautomation basiert auf dem MQTT zentrierten Ansatz.

Was braucht es jetzt? Wie die Überschrift schon vermuten lässt – einen IoT-Stack – also eine Softwarelandschaft, die auf einem (kleinen) Server 24h * 7Tage im Betrieb ist.

MQTT-Stack R-Pi (Grafik Axel T.)

Den MQTT-Stack habe ich mir nicht selbst ausgedacht. Das haben andere Entwickler aus der OpenSource Community übernommen. Unter folgendem Link findet man alles Lesenswerte, was man für einen ersten eigenen IoT-Stack benötigt.

https://sensorsiot.github.io/IOTstack/

Unbedingt sehenswert sind die folgenden Videos von Anderas Spiess aus der Schweiz:

Was braucht es hier zu? Eingentlich nicht viel. Neugier, Willen etwas Neues zu lernen, ein wenig Linux und Computer Kenntnisse und ca. 150CHF an Hardware. Ich würde mit einem Raspberry Pi starten, der von einer SSD bootet anstatt der SD-Card.

Mein Test- und Experimentier-Setup sieht wie folgt aus:

Raspberry Pi 3, PoE HAT (B) und SSD Shield / Foto Axel T.

Die Implementation für meine produktive Homeautomation habe ich mit einem HP Microserver Gen8 Umgesetzt. Mit einem Gehäuse von knapp 30cm x 30cm x 30cm passt der noch gut überall hin und ist dabei noch grade so erträglich vom Lärm.

MQTT-Stack HP Microserver Gen8 (Grafik Axel T.)

Als Betriebssystem läuft auf beiden Systemen ein Linux System.

Docker

Docker ist eine Container Management Software und damit ein Sicherheits-Feature, auf das ich nicht verzichten möchte. Docker sperrt Software in einen Container und regelt den Zugriff auf andere Container, den Host oder Ressourcen wie Netzwerk. Und es senkt in diesem Fall die Komplexität massiv, wie man im Video von Andreas schön sehen kann!

Portainer

Portainer managed und verwaltet die Container. Es hilft beim Einarbeiten in diese Materie. Portainer selbst sitzt in einem Docker-Container, hat aber weitreichende Rechte.

Mosquitto

Nein – kein Stechmücke sondern der Message-Brocker – also die Nachrichtendrehscheibe, an der sich alle Beteiligten Softwaren beteiligen und bedienen.

An dieser Stelle unbeding der folgende Buch-Tip: “Das MQTT-Praxisbuch – Mit ESP8266 und Node-Red” von Walter Trojan (Link zu Amazon). Es erschlägt gleich drei Fliegen mit einer Klappe! Es erklärt MQTT, Node-Red und die ESP8266 Microcontroller Familie in einem gut gemachten Buch (Ja richtig – die Dinger aus Papier…).

InfluxDB

InfluxDB ist ein Datenbanksystem speziell ausgerichtet für das Speichern von Zeitreihen. Also das Sammeln von Datenpunkten über der Zeitlichen Verlauf. Ich sammel damit Temperaturen, Wasserstände, Bewegungsmeldungen, Stromverbräuche, etc. – Diese Datenbestände sind die Grundlage für jede Auswertung und Darstellung. Wie war noch mal der Stromverbrauch letzten Jahr im November? Wissen Sie es? Nein? Dann hilft InfluxDB.

Grafana

Ich liebe Grafiken und Darstellungen von Datenpunkten. Grafana ist ein geniales Werkzeug zur Darstellung der Zeitreihen in InfluxDB. Also in meinem Fall dann auch für die Darstellung des Stromverbrauchs, der Stromproduktion, dem Delta, der Einspiesung etc. . Klar – bekommt man auch vom Hersteller des Wechselrichters. Aber was ist, wenn das Internet NICHT funktioniert? You get the Idea… . Cloud ist gut, aber in diesem Fall ist on premise besser.

Node-Red

Node-Red ist ein Programmiersystem, was durch Grafische Darstellung von Funktionsbausteienen und deren Verknüpfung erlaubt diverse Funktionen er realisieren. In meinem Fall übernimmt es zum einen das Auslesen von Sensoren und Speichern von Daten in InfluxDB, aber auch Automationsaufgaben (Licht auf der Auffahrt im Zeitraum zwischen Sonnenuntergang und Sonnenaufgang einschalten, wenn der Bewegungsmelder XY ausgelöst wurde und dann nach 5 Minuten wieder Licht auszuschalten.) Da die Sonne nicht jeden Tag gleich auf und untergeht, ist es nicht ganz trivial mit z.B. PHP oder C/C++ zu realisieren.
Node-Red bietet die passenden Bausteine.

Das alles ist der IoT-Stack, den ich verwende.

Leave a Reply