ioBroker Tutorial-Reihe - Blockly-Scripts optimieren

Mit ** gekennzeichnete Links auf dieser Seite sind Affiliatelinks.

ioBroker Tutorial-Reihe - Blockly-Scripts optimieren
ioBroker Tutorial-Reihe - Blockly-Scripts optimieren
  • Matthias Kleine
  • 20.05.2020
  • Grundlagen
  • Blockly

Täglich sehe ich Blockly-Scripts, welche nicht richtig zu Ende gedacht wurde, redundante Vergleiche anstellen oder zu viele Werte erneut aus dem System abfragen. All das muss nicht sein und kann ganz einfach optimiert werden. In diesem Beitrag möchte ich Dir einmal zeigen, wie Du Deine Scripts mit ein paar ganz einfachen Regeln drastisch verkürzen und vereinfachen kannst. Das spart nicht nur Ressourcen, sondern macht die Logiken auch lesbarer und verständlicher.

Video

ioBroker-Kurs

Beispiele

Im Video haben wir gemeinsam ein (auf den ersten Blick) super einfaches Blockly-Script optimiert. Im folgenden findest Du alle Screenshots, welche exakt zum gleichen Ergebnis führen. Nur eben jedes Mal etwas kürzer und eleganter.

Hier unser Ausgangs-Script. Semantisch ist das alles korrekt implementiert. Allerdings gibt es viel Luft nach oben und viel Optimierungspotenzial. Eventuell fallen Dir ja schon ein paar Punkte auf, wie man dieses Script etwas eleganter gestalten könnte.

ioBroker Blockly 1

Die erste Optimierung betritt die Datenquelle. Offensichtlich wollen wir mit dem aktuellen Wert des Buttons weiter arbeitern. Jetzt holen sich die meisten Anfänger den Wert erneut aus dem System - dafür gibt es ja den Baustein Wert von Objekt ID. Das ist allerdings völlig unnötig, da der Trigger selbst den aktuellen Wert, welcher zur Auslösung geführt hat, als Parameter mitliefert. Diesen Wert direkt zu nutzen spart zum einen Ressourcen, da man nicht nochmal an den ioBroker-Controller herantreten muss, um den aktuellen Wert abzufragen, und zum anderen ist es auch viel sicherer, direkt mit diesem Wert zu arbeiten. Warum? Weil sich der Wert ja während der Laufzeit des Scripts im System ändern kann. Jedes Mal, wenn wir Wert von Objekt ID holen, könnten wir theoretisch eine andere Rückgabe bekommen. Denn während das Blockly-Script läuft, steht das restliche System ja nicht still, sondern arbeitet auch weiter. Das kann zu seltsamen Seiteneffekten führen und man sucht ewig nach dem Problem. Daher immer mit Wert aus dem Trigger arbeiten.

ioBroker Blockly 2

Jetzt haben noch viel redundanten Code. Bei unserem Button bekommen wir wahr oder falsch als Wert mitgeliefert. Warum sollten wir also nochmal prüfen, ob der Wert auch wahr ist? Wenn es um einen mathematischen Vergleich geht, schreibst Du ja auch nicht Wert > 20 = wahr, oder? Und genau daher kann der Vergleich hier eleminiert werden.

ioBroker Blockly 3

Im nächsten Schritt kann noch der “sonst falls” Teil weg. Boolsche Werte können nur wahr oder falsch sein. Wenn er nicht wahr ist, kann er nur falsch/nicht wahr sein. Da gibt es keine dritte Möglichkeit. Also entfernen wir den sonst falls Teil und ersetzen ihn durch ein einfaches sonst.

ioBroker Blockly 4

An dieser Stelle stellt man nun eventuell fest, dass die komplette Bedingung unnötig ist. Am Ende können wir einfach sofort den Wert von Button an die Lampe durchreichen und sparen so weiteren Code.

ioBroker Blockly 5

All diese Scripts führen zu exakt dem gleichen Verhalten. Selbst bei so einfachen Themen gibt es also viel Einsparungspotenzial.

Ich will mehr

Smart-Home-Training von A-Z

Steig noch tiefer in die Themen ein und meistere Deine Projekte!

ioBroker-Master-Kurs

ioBroker-Master-Kurs

Mehr Infos
NodeRed-Kurs

NodeRed-Kurs

Mehr Infos
Lox-Kurs

Lox-Kurs

Mehr Infos
FHEM-Kurs

FHEM-Kurs

Mehr Infos