Blockly – Grundlagen – Logik

In dieser Artikelserie möchte ich das Thema Blockly in ioBroker näher erklären. Im Artikel zeige ich, wie Steuerungslogik integriert werden kann.

1. Einführung

2. Logik Blöcke

2.1 Falls

2.2 Vergleiche

2.3 Logische Verknüpfungen

2.4 nicht

2.5 wahr/falsch

2.6 null

2.7 prüfe (falls wahr, falls falsche)

 

 



1. Einführung

Mittels den Logik Blöcken können Smart Home Steuerungen genauer auf einzelne Situationen reagieren. Zu den klassischen Logik Blöcken gehören die Abfragen (Falls) mit Vergleichen und logischen Verknüpfungen. In den folgenden Abschnitten werden ich Schritt für Schritt die einzelnen Bereich erklären.

 

2. Logik Blöcke

Mit logischen Blöcken können Abfragen erstellt werden.

 

2.1 Falls

Die wohl wichtigste, und am häufigsten genutzt Kontrollstruktur ist der Falls Block. In der Programmierung steht der Falls Block für eine IF-THEN-ELSE Abfrage. Im Falls Bereich wird eine Bedingung verwendet, die wahr oder falsch (true oder false) zurückgeben muss. Wenn die Bedingung wahr ist, wird die Aktion ausgeführt, die im Bereich „mache“ definiert wurde.

 

Der Falls Block kann über die Konfiguration noch um einen weiteren falls Block (sonst falls) erweitert werden. Zusätzlich kann auch ein normaler sonst Block eingefügt werden. Die Blöcke können per „Drag and Drop“ auf der Konfiguration in den Block verschoben weden.

Über die Konfiguration wurde noch der sonst Bereich hinzugefügt.

 

 

2.2 Vergleiche

Mit dem Block „vergleiche“ wird ein Wert überprüft. Dabei stehen verschiedene Vergleichsoperatoren zur Auswahl. Der Vergleich gibt immer einen Logischen Wert (wahr oder falsch) zurück.

Im folgenden Beispiel überwache ich die Temperatur meines PI. Die Temperatur-Prüfung wird durch den Trigger auf den Datenpunkt „temperature.soc_temp“ angestoßen. Bei einer Veränderung des Wertes wird über den Block „falls“ und „vergleiche“ geprüft, ob der Wert größer als 50 ist. Wenn die Temperatur über 50 beträgt, wird über den Telegram-Adapter eine Benachrichtung verschickt.

 

 

2.3 Logische Verknüpfungen

Mit logischen Verknüpfungen lassen sich z.B. mehrer Vergleiche miteinander kombinieren. Dabei können und/oder Verknüpfungen verwendet werden. Wenn man das vorherige Beispiel betrachtet könnte die Temperatur-Abfrage zusätzlich noch mit der Auslastung des PI kombiniert werden.

 

Im folgenden Script wird der bestehende Falls Block in der Abfrage um eine Logische UND-Verknüpfung erweitert. Über den Block wird die Temperatur und die Prozessorauslastung miteinander kombiniert.

 

 

2.4 nicht

Mit dem Block „nicht“ wird eine logische Negation auf den Wert durchgeführt. Im Script wird dazu der NOT(!)-Operator verwendet.

Bei der Negation wird der Wert folgendermaßen umgewandelt:
wahr -> Negation -> falsch
falsch -> Negation -> wahr

 

2.5 wahr/falsch

Mit dem Block „wahr/falsch“ wird im Script die entsprechende Konstante für den Wert true oder false eingesetzt.

 

 

2.6 null

Der Block null repräsentiert das absichtliche Fehlen eines Wertes. Es ist einer der Primitiven Werte in Javascript. Im folgenden Beispiel Script wird der Wert null für die Abfrage der Temperatur verwendet. Wenn hier null gemessen wird, handelt es sich um einen Messfehler, auf den ich so entsprechend reagieren kann.

 

 

2.7 prüfe (falls wahr, falls falsche)

Der Block „prüfe … falls wahr … falls unwahr“ stellt einen bedingten ternärer Operator dar. Im Script wird damit eine Kurzform der IF-Kontrollstruktur gebildet. In der Bedingung „prüfe“ muss eine logische Bedingung mit dem Rückgabewert (wahr oder falsch) eingesetzt werden. Der Block gibt dann den entsprechenden Wert von „falls wahr“ oder „falls unwahr“ zurück.

 

 

Ich hoffe Dir gefällt der Artikel 🙂 Ich freue mich über Deinen Kommentar!

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.

* Die Checkbox für die Zustimmung zur Speicherung ist nach DSGVO zwingend.

Ich akzeptiere