ioBrokerioBroker Blockly

Blockly – Schleifen

In dieser Artikelserie möchte ich das Thema Blockly in ioBroker näher erklären. In diesem Artikel zeige ich Dir verschiedene Blöcke rund um das Thema Schleifen.

 

1. Wiederhole X mal

In diesem Kapital schauen wir uns den folgenden Block an:

Die Schleife wiederholt die in der Schleife definierten Blöcke so oft wie oben definiert. Die Anzahl Durchläufe kann dabei statisch (fester Wert) oder dynamisch (z.B. aufgrund einer Variable) definiert werden.

Im Beispiel wird ein Trigger auf einen Test-Datenpunkt eingefügt. Beim Ändern des Wertes löst der Trigger auf und setzt zunächst die Variable „n“ auf 0. Im nächsten Schritt wird der Inhalt der Schleife 5 mal ausgeführt. Die Variable wird jeden Schleifendurchlauf um 1 erhöht und der neue Wert der Variable „n“ in das ioBroker-Log ausgegeben.

 

Im ioBroker-Log werden nun die folgenden Einträge geschrieben:

 

 

2. Wiederhole solange

In diesem Kapital schauen wir uns den folgenden Block an:

Mit dieser Schleife wird der Inhalt so lange ausgeführt, wie die Bedingung der Schleife wahr (true) ist. Zudem kann die Schleife optional mit dem folgenden Block beendet werden:

 

Im folgenden Beispiel wird wieder ein Index von 0 auf 10 erhöht. Die Bedingung der Schleife ist dabei so formuliert, dass die Schleife so lange laufen soll, wie die Variable n kleiner 10 ist. Innerhalb der Schleife wird die Variable n um den Wert 1 erhöht und die Variable in das ioBroker-Log geschrieben.

 

Im ioBroker-Log werden nun die folgenden Einträge geschrieben:

 

 

3. Definierte Schleife (For-Schleife)

In diesem Kapital schauen wir uns den folgenden Block an:

 

Die For-Schleife ist die klassische Schleife. Bei der Schleife wird mittels einem Zähler der Start, das Ende sowie die Schrittgröße definiert. Im folgenden Beispiel verwende ich die Schleife für das Durchlaufen einer Zeichenfolge. Die Anzahl der Schleifendurchläufe wird dabei durch die Länge der Zeichenfolgen definiert. Der Start sowie die Schrittgröße wird auf 1 festgelegt. Innerhalb der Schleife wird dann mit dem Index auf den Wert des Datenpunkts zugegriffen um so den jeweiligen Wert auszulesen.

 

Im ioBroker-Log werden nun die folgenden Einträge geschrieben:

 

 

4. Liste per Schleife durchlaufen

In diesem Kapital schauen wir uns den folgenden Block an:

 

Mit der Schleife kann eine Liste (Array) einfach und schnell durchlaufen werden. Der Schleife legt dazu eine Variable für den Wert des aktuellen Satzes an. Zudem wird der Schleife die zu durchlaufende Liste übergeben. Im folgenden Beispiel durchläuft die Schleife eine Liste, welche aus einem Text mit Trennzeichen erstellt wurde. Die Schleife gibt die einzelnen Einträge der Liste  dann einfach aus.

 

Die folgenden Ausgaben werden erstellt, wenn in den Datenbank die folgende Zeichenfolge geschrieben wird:

hallo,welt,!

 

 

Ich hoffe Dir gefällt der Artikel. Ich freue mich über Deinen Kommentar oder Fragen zum Thema 🙂

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.

Ein Gedanke zu „Blockly – Schleifen

  • Mark der Zweite

    Moin, Moin,

    Irgendwie steh ich auf dem Schlauch (wahrscheinlich ein grundsätzlicher/s Denkfehler/Problem und nicht nur in Schleifen).
    Folgende Problemstellung:
    Habe einen „Türklingelsensor“ mit einem ESP aufgesetzt, welcher per über MQTT sendet. Dieser funktioniert soweit und über ein Blockly-Script wird er auch getriggert, sodass ich eine Lampe/LED-Leiste im Schaltstatus ändere. Nun dachte ich, dass ich die Lampe 3/4 oder 5 mal an- und ausschalte und habe mir in das Blocklyscript eine x-mal-Schleife eingebaut mit umschalten/Objekt-ID/Verzögerung von 2000ms. Die Lampe schaltet, egal was ich anstelle, immer nur 1 mal. Zum Test habe ich deinen Teil zur Log-Ausgabe mit eingebaut, und dies wird im Log auch mit ausgegeben.
    Wo könnte das Problem/der Denkfehler liegen?

    Grüße

    Antwort

Schreibe einen Kommentar

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