Was soll das Programm können?

Heute wollen wir uns mit der Programmierung unseres NodeMCU befassen. Im Gegensatz zu der Programmierung mit Arduino, wo das Steuerprogramm direkt in die NodeMCU gespeichert wird, steuern wir hier den NodeMCU aus dem ioBroker. Dazu ist es erforderlich eine Routine mit unserem Hilfsprogramm Blockly zu erstellen. Da meine Kenntnisse in Hinblick auf Programmierung nicht all zu groß sind, kann es sein das mein Programm nicht den Erwartungen der Profis entspricht, aber es funktioniert und soll lediglich den Umgang in Blockly nahe bringen. Vermutlich kann man auch auf anderem Wege zum Ziel finden.

Wir wollen dies nun an Hand des Projektes aus dem vorherigen Kapitel (11b) tun. Die rote und die grüne LED sollen in Abhängigkeit von der Temperatur leuchten. Und zwar soll die Grüne leuchten wenn die Temperatur größer 20° C beträgt, während die Rote leuchten soll wenn es 20° C oder weniger ist. Dabei soll jeweils nur eine LED leuchten.

Telemetriezeit

Die Telemetriezeit sollten wir von 300 auf 10 (kleinste Einstellung) heruntersetzen, damit unsere NodeMCU sich alle 10 Sekunden berichtigt (siehe Bild). Ansonsten würde eine Änderung nur alle 5 Minuten erfolgen, was bei unserm Beispiel zu lange dauert.

Blockly öffnen.

Zunächst müssen wir einen neuen Skript anlegen.

Neuen Skript füllen:

Wir wählen zunächst einen Kommentar um unser Projekt zu beschreiben und weitere Kommentare damit wir den Überblick nicht verlieren was in unserem Programmablauf vor sich geht. Diesen Kommentar ziehen wir in die Arbeitsfläche (Bild 3).

Als nächstes legen wir einen Trigger auf unsere Arbeitsfläche. Der Trigger soll auf ein Ereignis warten. Wenn dieses Eintritt soll er den weiteren Programmablauf starten (Bild 4).

Nun bearbeiten wir unseren Trigger auf der Arbeitsfläche. Dazu wählen wir als erstes Object ID aus. (Bild 5)

Nach Anklicken, öffnet sich das Fenter der „ioBroker Objekte“. Darin wählen wir das Objekt auf welches der Trigger reagieren soll. In unserem Fall die Temperatur des ESP8266-x (Bild 6).Noch mit OK bestätigen und unter Object ID steht nun das Temperatur von ESP8266-x Oblekt.

Im Trigge ändern wir außerdem von „wurde geändert“ auf „wurde aktualisiert“. Jetzt startet der Trigger bei jeder Aktualisierung des Temperaturwertes und nicht erst wenn sich der Wert tatsächlich ändert. Also entsprechend unserer Telemetriezeit (s.o.). So erreichen wir wesentlich mehr Prüfvorgänge. Unser bisheriges Programm sieht nun so wie in Bild 7 aus.

Im nächsten Schritt legen wir das Programm an, das nach Ansprechen des Triggers ablaufen soll.

Wir ziehen dazu die Logik „falls – mache“ auf die Arbeitsfläche (Bild 8).

Außerdem benötigen wir noch eine Logik zum Vergleich der gemessenen Temperatur mit dem von uns festgelegten. Dazu fügen wir den Wertevergleich in unser Programm ein (Bild 9).

Nun sieht unser Programm wie in Bild 10 aus. Die beiden leeren Felder (1 u. 2) müssen wir noch füllen (Bild 10).

In Feld 1 fügen wir den Wert von Objekt ID ein (Bild 11).

Als Ojekt ID wählen wir wieder unseren Temperatursensor wie oben beschrieben aus (Bild 12).

Die Einstellung Wert belassen wir, da wir einen Zahlenwert auswerten wollen, nämlich die Temperatur mit unserem Schwellwert.

In das Feld 2 im Bild 12 soll mit einem Zahlen-Wert verglichen werden, daher muß hier die mathematische funktion Zahl eingesetzt werden (Bild 13).

Außerdem ist die Einstellung für den Vergleich von = auf > (größer) zu setzen.

Unser ganzes Programm sieht nun so wie in Bild 14 aus und besagt, wenn der Wert der Temperatur größer 20 °C ist dann mache folgendes.

Wir wissen nun, dass wenn der Wert unserer Temperatur größer 20 °C ist irgendwas passieren soll. Was das ist müssen wir nun weiter festlegen.

In unserem Fall soll etwas gesteuert werden. Und Zwar soll die grüne LED leuchten. Demzufolge benötigen wir einen Steuer-Block (Bild 15). Diesen Ziehen wir nun in den „falls – mache“ Block (Bild 16).

In dem Steuer Block ändern wir als erstes auf die „Objekt ID“ für die grüne LED unter „ESP8266-x Power1“ und bestätigen mit OK (Bild 16 u. 17).

Als nächstes setzen wir in das Feld, das ich mit 3 gekennzeichnet habe eine Logik ein, die uns sagt, ob unser Schalter die Stellung „wahr“ oder „falsch“ einnehmen soll (Bild 18). Wahr bedeutet LED leuchtet, falsch sie leuchtet nicht.

In Bild 19 ist nun unser bisheriges Programm zu sehen. Unsere grüne LED leuchtet wenn die Temperatur größer 20 °C ist. Aber was ist mit unserer roten LED, die soll aus sein. Auch diesen Zustand müssen wir dem Programmablauf mitteilen.

Um weiter Blöcke zu erstellen, können wir es uns ab hier einfach machen. Wir haben die Grüne LED zum Leuchten gebracht, mit dem gleichen Block können wir nun die rote LED aus Schalten. Hier sind allerdings die Parameter zu ändern. Wir kopieren kurzer Hand unseren Steuer-Block mit: Markieren – rechte Maustaste – Kopieren (Bild 20).

Die duplizierte Zeile ziehen wir nun unter die erste und ändern die Parameter. Unser, bis hier hin fertiges Programm, sieht wie in Bild 21 aus.

Das Programm schaltet nun bei Überschreitung von 20 °C die grüne LED an und die rote LED aus. Soweit so gut. Wir haben aber noch einen weiteren Zustand. Ist die Temperatur gleich oder kleiner 20 °C soll das Spielchen genau anderst herum ablaufen. Da dies nur eine Umkehr unseres bisherigen Programms ist, sind die benötigten Blöcke schon vorhanden. Lediglich wieder mit anderen Parametern.

Die rote LED soll leuchten wenn die Temperatur gleich oder kleiner 20 °C beträgt und die Grüne soll aus sein. Wie bereits oben festgestellt ist nun bereits alles vorhanden um die Schaltung genau umgekehrt funktionieren zu lassen. Lediglich die Parameter unterscheiden sich. Wir kopieren also den erstellten falls-mache Block, wie bereits beschrieben (Bild 22).

Den duplizierten „falls – mache“ Block ziehen wir nun in unseren bereits erstellten Trigger-Block, nicht unter ihn.

Nun noch die Parameter ändern (Bild 23) und unser Programm ist fertig (Bild 24).

Zum Schluss noch Speichern und unseren Skript aktivieren.

Damit ist unser kleines Programm fertig und wir können testen ob es auch das macht was es soll.

Ich habe mit diesem Skript noch einmal die prinzipielle Arbeitsweise mit Blockly und auch was mit einem NodeMCU ESP8266 möglich ist zeigen wollen.

Achtet aber darauf, wenn ihr Steuerungen entwerft, was ihr steuert und welche Konsequenzen eine fehlerhafte Steuerung mit sich bringen kann. Gerade bei Temperatursteuerungen lauern erhebliche Gefahren.