Angefangen habe ich mit meiner DIY Bewässerungsanlage um erste Grundlagen im Bereich der IoT zu erlangen.
Weil ich schon ein gewissen Knowhow in der Programmierung mitbringe ist es geschuldet, dass ich die Workflows direkt in einem kleinen Python Skript hinterlegt habe. Dort müssen folgende Schritte abgearbeitet werden:
- lese Sensordaten ein
- speichere Sensordaten (in einer MySQL Datenbank)
- Ist der Boden so trocken, dass gegossen werden muss?
- Wenn ja sende Befehl zum Bewässern
- und speichere Bewässerung in der MySQL Datenbank ab
Vorteil dabei ist: Das ganze läuft auf dem Server ab: Möchte man die Schritte ändern oder nur den Zeitraum wie lange die Pumpe angesteuert wird (um die Wassermenge zu ändern), muss man nicht die Firmeware auf dem ESP8266 Board neu aufspielen. Das wäre auch recht aufwändig, da die Anlage sich auf meinem Balkon befinde und dazu erst abgebaut und an den PC angeschlossen werden muss (Okay es gäbe eine OTA Funktion, aber das ist ein anderes Thema). Hier reicht es aus nur den Server-Code zu ändern und schon finden die Änderungen statt.
Nun ist nicht jeder Softwareentwickler oder möchte sich alle halbe Jahre mit einem Skript beschäftigen was mit der Zeit immer umfangreicher werden kann.
Zum Glück stieß ich vor einigen Monaten bei Youtube auf ein Video, wo jemand eine kleine Einführung in Node-Red gegeben hat: Damit lassen sich Arbeitsschritte in Form von grafischen Elementen recht einfach zusammen klicken. Es ist schnell installiert. Alles was man auf seinem Server benötigt ist nodejs und PM2 um es als Service laufen zu lassen. Node-Red bringt bereits ein Fülle an Events und Aktions-Blöcken mit. So konnte ich die kompletten Arbeitsschritte meines Python Skripts damit nachstellen. Die Kommunikation mit dem Bewässerungsanlagen-Board läuft dabei weiterhin über MQTT statt.
Es gibt sogar ein Plugin namens „node-red-dashboard“ mit dem man sich aus den Werten ein schönes Dashboard erstellen lassen kann. Die Diagramme sind frei konfigurierbar und auch die Abspeicherung zur historischen Ansicht übernimmt Node-Red dabei.
Den kompletten Node-Red Flow habe ich euch auf Github hochgeladen.