Blockly – Blockly-Script optimieren und vereinfachen

In diesem Artikel zeige ich Dir, wie Du bestehende Blockly-Scripts optimieren und einfacher aufbauen kannst.

Mit Blockly kannst Du Dir schnell und einfach eigene Logiken zur Steuerung von Deinem Smart-Home aufbauen. Damit Du einen besseren Überblick über Deine Scripts bekommst, habe ich Dir in diesem Artikel meine Tipps und Tricks zur Optimierung von Blockly-Scripts zusammengestellt.

Bevor wir mit den eigentlichen Blockly-Scripts beginnen, möchte ich Dir zunächst die Ordner-Funktion im JavaScript-Adapter zeigen. Mit den Ordnern kannst Du Deine Scripts besser nach Gewerk, Funktion, etc. Ablegen und verwalten. Anbei ein Screenshot von meinem Ordnungsprinzip:

Nicht verwendete Blöcke deaktivieren

Eine weitere praktische Funktion ist das Deaktivieren und Aktivieren von temporär nicht benötigten Blöcken. Über die rechte Maustaste können somit einzelne Blöcke oder ganze Trigger deaktiviert werden. Gerade bei der Fehlersuche eine praktische Vorgehensweise:

Trigger-Wert verwenden

Im ersten Tipp zeige ich Dir einen Trigger auf einen Datenpunkt eines Zisternen-Füllstands. Als einfaches Beispiel wurde hier nach einer Veränderung der neue Werte mit dem Block „Wert vom Objekt ID“ nach einer Änderung ausgelesen. Das ist so nicht erforderlich, da der Trigger den neuen Wert bereits über den Wert-Block bereitstellt. Über den Wert-Block kann zudem auch noch der vorherige Wert sowie viele weitere Informationen über die Datenpunkt-Änderung ermittelt werden.

Bestehendes Script

Optimierte Version

Trigger-Bedingungen verwenden

Im folgenden Beispiel wird bei der Veränderung des Datenpunkts TV.State abgefragt, ob der neue Wert wahr (true) ist. In diesem Fall soll dann im Esszimmer das Licht ausgeschaltet werden. Diese Abfrage kann durch die Trigger-Bedingung ist wahr ersetzt werden. Der Trigger wird dann nur ausgelöst, wenn der neue Wert des Datenpunkts true ist.

Über diese Trigger-Bedingung kann zudem abgefragt werden, ob der neue Wert größer oder kleiner als der alte Wert ist. Somit lassen sich eine Vielzahl von Abfragen direkt in der Trigger-Bedingung abfragen.

Bestehendes Script

Optimierte Version

Zustandsänderung

Im nächsten Beispiel soll sich der Status eines Leuchtmittel über einen Taster ändern. Im bestehenden Script wurde die Zustandsänderung über die Wert-Ermittlung des Objekts sowie einem Falls-Block umgesetzt. Deutlich eleganter und kürzer geht es mit dem Block Umschalten. Hier wird die komplette Logik (Wert auslesen und tauschen) bereits im Block umgesetzt.

Bestehendes Script

Optimierte Version

Übersichtlichkeit steigern

Im folgenden Beispiel zeige ich Dir ein einfache Licht-Steuerung aufgrund eines Helligkeitssensors. Wenn die Helligkeit in Lux kleiner 250 beträgt, soll automatisch im Esszimmer das Licht eingeschaltet werden. Im bestehenden Script wurde dazu im Trigger eine Falls-Abfrage erstellt. Somit wurde der Wert abgefragt und dann über zwei Steuere-Blöcke das Leuchtmittel gesteuert. In der Optimierten Version habe ich die Falls-Abfrage entfernt und den logischen Ausdruck direkt in den Steuere-Block gesetzt. Ich finde diese Darstellung deutlich kompakter und lesbarer.

Bestehendes Script

Optimierte Version

Ich hoffe Dir gefällt der Artikel. Über Kommentare, Anregungen oder Ideen freue ich mich wie immer 🙂

Matthias Korte

Hauptberuflich Software-Entwickler und seit einigen Jahren Smart-Home Fan. Angefangen hat alles mit einem RaspberryMatic und einer schaltbaren Steckdose. Mittlerweile habe ich einige Steckdosen, Sensoren, und Thermostate sowie ioBroker zur Visualisierung im Einsatz.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.