ioBrokerioBroker Blockly

Blockly – System-Blöcke

In dieser Artikelserie möchte ich das Thema Blockly in ioBroker näher erklären. Im Artikel werden wir uns gemeinsam die System-Blöcke ansehen.

1. Debug output

Im ersten kleinen Beispiel zeige ich Dir, wie Du Dir die aktuelle Uhrzeit in einem Script ausgeben kannst. Im Beispiel habe ich dazu einen Trigger auf den Datenpunkt Sensor.Bodenfeuchtigkeit angelegt, der bei einer Veränderung die aktuelle Uhrzeit über den Debug output Block in das ioBroker Log ausgibt. Als Art des Log-Eintrags kann zwischen info, debug, warn und error unterschieden werden.

2. Kommentar

Mit dem Kommentar-Block kannst Du im Blockly-Script eigene Kommentare und Informationen integrieren. Im folgenden Script verwende ich den Kommentar-Block für die Beschriftung von Triggern.

3. Steuere

Der Steuere Block wird verwendet um ein Gerät zu steuern (ack=true). Über den Block kann zum Beispiel ein Gerät ein- oder ausgeschaltet werden. Für den zu schreibenden Wert können feste Werte (true/false) oder auch eigene Variablen verwendet werden. Im folgenden Beispiel verwende ich den Block zur Steuerung eines Lichts über den Astro-Block.

Des weiteren kann hier auch eine Verzögerung des Steuerns-Vorgang aktiviert werden. Damit ist es möglich den Steuern-Vorgang zeitlich zu verzögern.

4. Umschalten

Mit dem Umschalten-Block wird der Wert eines Datenpunktes umgeschaltet. In meinem Beispiel funktioniert der Taster als Ein- und Ausschalter für eine Lampe. Wird der Taster gedrückt wenn die Lampe ausgeschaltet ist, so wird die Lampe eingeschaltet. Ist die Lampe eingeschaltet, so wird sie ausgeschaltet. Auch hier kann wieder eine Verzögerung für den Schaltvorgang aktiviert werden.

5. Aktualisieren

Mit dem Block aktualisieren wird der Wert eines Datenpunkt gesetzt. Im folgenden Beispiel verwende ich wieder den Taster um damit den Zeitpunkt des Tastendrucks in einem eigenen Datenpunkt zu dokumentieren. Im Datenpunkt wird der Zeitstempel des Tastendrucks vermerkt.

6. Binde Object

Mit dem Block Binde Object kann zwei Datenpunkte synchronisiert werden. Mit dem hier dargestellten Beispiel-Script wird das State des Fernsehers mit dem State der Stehlampe synchronisiert. Wenn der Fernseher eingeschaltet wird, wird automatisch auch die Stehlampe eingeschaltet. Mit der Einstellung „nur Änderungen“ wird die Synchronisierung nur für Wert-Änderungen aktiviert.

7. Schreibe

Der Block Schreibe steuert oder aktualisiert den angegebenen Datenpunkt mit übergebenen Wert. Zudem kann hier ebenfalls eine Verzögerung in Millisekunden hinterlegt werden. Die Einstellung löschen falls läuft wird verwendet um die Verzögerung zu beenden, falls der Wert nochmals geändert wurde.

8. Datenpunkt erzeugen

Mit dem Block Datenpunkt erzeugen können wir über ein Script einen eigenen Datenpunkt anlegen. Hierfür muss die Objekt ID fest im Block hinterlegt werden. Mit der Einstellung Init-Wert wird der Wert nach der Erzeugung initialisiert. Über die Common Einstellung können zusätzliche Definitionen über ein JSON-Zeichenkette mitgegeben werden. Im Beispiel verwende ich hier folgende Einstellungen für das Setzen des minimalen, maximalen und der Einheit des Datenpunkts:

{ "type": "number", "min": 0, "max": 100, "unit": "%" }

Innerhalb des Blocks können dann noch weitere Blöcke hinterlegt werden, die nach Fertigstellung der Datenpunkt Erzeugung ausgeführt werden.

9. Wert von Objekt ID

Mit dem Block „Wert vom Objekt ID“ können wir im Script einen beliebigen Datenpunkt auslesen und den Wert zurückgeben. Über das DropDown-Menü können wir hier den eigentlichen Wert, den Zeitstempel der letzten Änderung sowie auch die Quelle oder das Ack-Flag auslesen. Im folgenden Beispiel sende ich mir den aktuellen Zisternen Füllstand über den Taster.

10. RegExp

Block für eine reguläre Expression. Dieser Block kann zum Beispiel als Auslösebedingung für einen Trigger eingesetzt werden. Im folgenden Artikel wird das Thema ausführlicher beschrieben:

Grundlagen Trigger System-Blöcke Zeichenfolgen   Datum und Uhrzeit Konvertierungen Farben   Listen   Schleifen   Timeout   Mathematik   Kommunikation   Hue / Yeelight Leuchtmittel steuern   Beispiele  

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.

3 Gedanken zu „Blockly – System-Blöcke

  • Wolfgang

    Ich habe noch eine Anmerkung zum Ack-Flag: Der Parameter „write“ im zu ändernden Object muss auf „true“ gesetzt werden (oder sein). Sonst wird im Log ein Fehler gemeldet und das Ack-Flag nicht gesetzt. Habe den Fehler gemacht und erst gedacht, dass ich den falschen Block zum Ändern benutzt hätte.

    Antwort
  • Thomas

    Hallo,

    wie kann man eine Bindung aufheben (Punkt 6.) und gegen eine andere Bindung ersetzen?
    Ich habe es versucht mit einer zweiten Anweisung, aber anscheinend werden beide Bindungen aufrecht erhalten.

    mfg
    Thomas

    Antwort
  • Hallo
    Erstmal danke das du dir soviel Mühe gibst.
    Habe schon das ein oder anderen von deinem Blog gelernt. Trotzdem habe ich gerade ein Problem wo ich einfach nicht weiterkomme. Möchte gerne das meine Siemens Waschmaschie iq 700 die ich schon bei iobroker drin habe wenn sie fertig ist eine WhatsApp schreibt Maschine ist feritg. Das läuft auch so ganz gut es gibt aber 2 Zustände im State run und finished und jedesmal wenn sich der Wert ändert bekomme ich die Nachricht Maschine ist fertig möchte aber nur eine Meldung haben wenn sie auf den Wert finished springt schaffe es aber nicht im Blockly was zu bauen was den Wert explizit finished abruft.
    Das du nen Tipp Gruß stefan

    Antwort

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.