Wer seinem Smart Home Leben einhauchen will, muss Abläufe programmieren. Diese Abläufe dienen dazu, dass die Technik selbstständig auf eintretende Szenarien reagieren kann. Das Problem dabei ist allerdings, dass nicht jeder die notwendigen Kenntnisse besitzt, um zu programmieren. Zwar kann im Grunde jeder diese Fähigkeit erlernen, das dauert aber mitunter Monate bis Jahre. Einfacher funktioniert die Programmierung des Smart Homes durch Blockly.

Blockly ist eine Bibliothek, die Webanwendungen sowie Android- und iOS-Apps einen visuellen Code-Editor zur Verfügung stellt (Quelle: Wikipedia). Erstellt werden kann die gewünschte Logik hierdurch auf einfache Art und Weise durch ein paar Mausklicks. Oft dient Blockly auch dazu, Programmierkonzepte auf eine einfache Art und Weise darzustellen. Die erstellten Konzepte werden entweder als JavaScript oder als Python exportiert.

Leider wird oft verwechselt, dass ioBroker Blockly nicht erfunden hat. Es handelt sich um eine Bibliothek, die frei genutzt und modifiziert werden kann. Aus diesem Grund war es auch möglich, dass OpenHAB seit der Version 3 auf diese Möglichkeit zur Erstellung von Skripten zurückgreift (Quelle: OpenHAB).

In diesem Artikel möchte ich mich gerne zusammen mit dir auf ioBroker Blockly konzentrieren. Ich zeige dir an konkreten Beispielen, wie Skripte aufgebaut sind und stelle dir die wohl wichtigsten Bausteine des Editors im Detail vor. Ergänzend dazu lasse ich hin und wieder Erfahrungen und Erkenntnisse aus der Softwareentwicklung einfließen.

Fällt dir die Erstellung von Skripten in ioBroker schwer?

Ergebnisse    Archiv

Exklusiv für dich:  ioBroker - Zentrale für Smart Home

Blockly – die unterschiedlichen Blöcke

Damit du in deiner Hausautomation verschiedene Szenarien umsetzen kannst, brauchst du verschiedene Blöcke. Diese Blöcke sind bereits vorgefertigt und werden durch dich in eine bestimmte Reihenfolge gebracht. Die fertige Reihenfolge ergibt dabei deine Logik. So ist es zum Beispiel durch die richtige Anordnung möglich, dass du auf Basis von Lichtwerten eine Lampe automatisch ein- und ausschalten kannst.

Wir schauen uns nun in den nachfolgenden Abschnitten die wohl wichtigsten Blöcke von Blockly an. Ich erkläre dir außerdem, was du mit diesen Blöcken anstellen kannst. Damit der Artikel nicht im Chaos endet, unterteile ich die Blöcke in die unterschiedlichen Kategorien. Diese Kategorien findest du in ioBroker auf der linken Seite, sobald du mit der Erstellung eines Skripts beginnst.

Trigger (Auslöser)

Ein Trigger steht in unserer Sprache für zwei verschiedene Sachverhalte. In der Elektrotechnik bezeichnet man entweder ein Bauelement zum Auslösen eines Vorgangs als Trigger oder einen Impuls, der wiederum einen Vorgang auslöst. Physiologisch spricht man von einem Trigger, wenn man einen auslösenden Reiz meint. Gemeinsam haben beide Definitionen, dass ein äußerer Umstand zur Ausführung einer bestimmten Reaktion führt.

Genauso ist es auch bei der Erstellung eines Skripts in ioBroker. Ein Trigger ist ein virtuelles Bauelement (in diesem Fall ein Baustein), das auf einen äußeren Einfluss reagiert. Dabei ist ein äußerer Einfluss meist die Zustandsänderung eines bestimmten Datenpunkts. Zum Beispiel reagiert der Trigger, sobald die Wetterstation einen neuen Wert für die Lichtverhältnisse um das Haus herum meldet. Sobald der Trigger ausgelöst wird, beginnt ioBroker mit der Abarbeitung deines Skripts.

Zur Verfügung stehen dir in ioBroker dabei unterschiedliche Bausteine. Ein Trigger kann so beispielsweise die Änderung eines Datenpunkts sein (wie bereits erwähnt), der Auf- oder Untergang der Sonne sowie ein definierter Zeitplan. Zeitpläne werden meist im sogenannten CRON-Format angegeben, das durch Unix-Systeme bekannt ist. Durch die intelligente Erweiterung von Blockly musst du dabei nur angeben, wann dein Trigger ausgeführt werden soll und Blockly kümmert sich um die korrekte Formatierung deines Zeitplans.

Üblicherweise beginnt jedes Skript mit der Auslösung eines Triggers, weshalb das der wohl wichtigste Baustein in Blockly ist. Um allerdings nicht auf jede Art von Zustandsänderungen zu reagieren, können Zustände durch Abfragen verfeinert werden. Dazu kommen wir im Unterabschnitt Logik.

ioBroker Trigger
Quelle: ioBroker Blockly

System – Auslesen von Zuständen

Im Abschnitt System findest du unterschiedliche Bausteine, die zum Auslesen vorhandener Datenpunkte in ioBroker dienen. Dabei kannst du sehr genau wählen, was aus einem Datenpunkt ausgelesen werden soll. Mithilfe der System-Blöcke kannst du deine Trigger ergänzen. Hier gibst du an, auf welchen Datenpunkt dein Trigger hören soll, indem du zum Beispiel den Block Wert vom Objekt ID auswählst.

Andere Blöcke in diesem Bereich sind der Debug Output sowie der Kommentar. Debugging-Statements werden dann benutzt, wenn du zum Beispiel den Inhalt einer bestimmten Variable zu Testzwecken auslesen möchtest. Dabei musst du deinen Skript-Editor auf den Debug-Modus umstellen, was du im Fenster oben rechts erledigen kannst. Bei der Ausführung des Skripts wird dir nun in der Konsole unterhalb des Skript der gewünschte Wert angezeigt. Für produktive Zwecke ist der Debugging-Modus nicht erlaubt und auch nicht zu empfehlen.

Mit dem Kommentarblock kannst du deine Skripte besser strukturieren und mit zusätzlichen Hinweisen versehen. Zum Beispiel kannst du so angeben, dass es sich um einen bestimmten Teil des Skripts handelt oder weitere Notizen hinzufügen, die dir beim Bearbeiten helfen.

Grundsätzlich nutzt du die Systemblöcke genau dann, wenn eine Interaktion zwischen Skript und Datenpunkten stattfinden soll. So lassen sich mit diesen Blöcken nicht nur Werte auslesen, sondern auch gezielt Zustände manipulieren. Sobald du einen Datenpunkt eines bestimmten Geräts manipulierst (also änderst), reagiert dieses Gerät auf die gewünschte Weise. Änderst du bei einer Lampe den Wert von falsch auf wahr, wird sie in der Regel eingeschaltet. Umgekehrt wird sie ausgeschaltet.

ioBroker System
Quelle: ioBroker Blockly

Logik – der elementare Bestandteil

Kommen wir nun zu einem der weiteren wichtigen Bausteine deines Skripts. Mithilfe von Blöcken aus der Kategorie Logik kannst du bestimmte Ereignisse abfangen oder überprüfen. Wie du sicherlich selbst schon gesehen hast, ist die Anzahl der Blöcke dabei recht überschaubar. Doch diese begrenzte Anzahl von Blöcken genügt schon, um wirklich komplexe Logiken abbilden zu können.

Nach der Erstellung eines Triggers, willst du in vielen Fällen auf einen konkreten Zustand überprüfen. Sofern du das nicht bereits schon im Trigger erledigt hast, kannst du das mit der Überprüfung falls … mache erledigen. Diese Überprüfung entspricht grob gesagt dem Konstrukt if-then-else aus der Softwareentwicklung.

Lass mich ein konkretes Beispiel dafür machen. Nachdem du einen Trigger auf einen bestimmten Datenpunkt gelegt hast, möchtest du gerne wissen, ob dieser auf wahr gesetzt wurde. Dazu bedienst du dich dem Falls-Mache-Block. Diesem ordnest du dann aus der Kategorie System den Block Wert von Objekt ID zu. Ohne einen weiteren Block wird nun geprüft, ob der enthaltene Wert wahr bedeutet. Solltest du auf einen anderen Zustand überprüfen wollen (z. B. einen Text), musst du hingegen den Block für Vergleiche (=) nutzen. Dort kannst du weitere Werte überprüfen, die sich nicht direkt in wahr oder falsch einteilen lassen.

Ohne eine zusätzliche Eingabe prüft der Falls-Mache-Block immer auf einen Wahrheitswert. Das bedeutet, dass überprüft wird, ob der Inhalt der übergebenen Variable wahr ist. Das ist er lediglich bei einem Vergleich oder wenn die angegebene Variable wahr/falsch enthält.

Weitere Blöcke aus der Kategorie System sind jene, die ebenfalls Überprüfungen durchführen. Allgemein gesagt brauchst du diese Kategorie also genau dann, wenn du Werte miteinander vergleichen möchtest oder auf einen bestimmten Zustand reagieren möchtest. Zusammen mit den Triggern und den System-Blöcken bilden sie damit die wohl wichtigsten Blöcke des gesamten Editors.

Logik
Quelle: ioBroker Blocky

Aktionen – externe Dienste nutzen

In der Kategorie Aktionen findest du Blöcke, die zur Anbindung fremder Systeme dienen können. In meinem Fall gibt es dort genau zwei verschiedene Blöcke. Der erste Block enthält einen sogenannten exec-Befehl, der zweite einen Request.

Exec-Befehle werden genutzt, um zum Beispiel Skripte auf dem Rechner aufzurufen, auf dem ioBroker läuft. So kannst du auch das System selbst automatisieren, wenn es dafür keinen geeigneten Adapter gibt. Exec-Befehle können außerdem dazu nützlich sein, wenn du Systembefehle ausführen möchtest. Ein möglicher Systembefehl ist zum Beispiel der Neustart des Rechners. Allerdings wird hierbei auch ioBroker neu gestartet, wodurch dir kurzzeitig die Kontrolle über den Rechner fehlt.

Requests brauchst du hingegen, um Anfragen an externe Systeme zu stellen. Du kannst beispielsweise verfügbare Schnittstellen abrufen, für die es in ioBroker keinen passenden Adapter gibt. Das ist meist dann der Fall, wenn bislang noch niemand einen Adapter entwickelt hat oder du ein eigenes System einsetzt. Requests werden dabei oft an sogenannte REST-Schnittstellen gerichtet, über die eine Interaktion mit einem Fremdsystem erfolgen kann.

Sicherlich handelt es sich bei den Aktionen-Blöcken um jene, die du nicht allzu häufig brauchen wirst. Hier wird oft erst dann ein Bedarf erkannt, wenn du im Thema Programmierung bereits etwas fortschrittlicher unterwegs ist. Zum Steuern von Geräten innerhalb von ioBroker werden schließlich die System-Blöcke verwendet.

Aktionen
Quelle: ioBroker Blockly

Sendto – Nachrichten versenden

Kommen wir nun zu den Sendto-Blöcken. Sie dienen dem Versand von Nachrichten an andere Systeme. Dabei wird diese Kategorie dynamisch erweitert, je nachdem über welche Adapter du verfügst. Ich habe in meinem Fall Blöcke für die Vernetzung von Telegram, Google Home und E-Mail.

Je nachdem, welchen Block du in dein Skript integrierst, musst und kannst du verschiedene Werte angeben. Zum Beispiel erwartet der Block Aussprechen die Eingabe eines definierten Textes. Der Block E-Mail hingegen einen Text sowie einen Empfänger, an den die Nachricht zugestellt werden soll. Der Block Telegram ist etwas flexibler. Mit ihm kannst du einen vordefinierten Text angeben, der entweder an mehrere oder genau einen Empfänger zugestellt wird. Aus diesem Grund ist bei diesem Block das sogenannte Attribut Empfänger lediglich ein optionales Attribut.

Übrigens, unter einem Attribut versteht man generell ein Wesensmerkmal. Jeder Block verfügt aufgrund seines jeweils eigenen Einsatzorts über eigene Wesensmerkmale. Einige dieser Wesensmerkmale können optional sein, andere sind notwendig. Du kannst dir das vorstellen wie bei einer E-Mail. Während der Empfänger kein optionales Wesensmerkmal ist, können E-Mails hingegen ohne Betreff versendet werden. Der Betreff ist damit ein optionales Wesensmerkmal. Genauso verhält es sich bei den verschiedenen Blöcken, die dir im System zur Verfügung stehen.

Die Kategorie Sendto ist demnach dein Freund, wenn du Nachrichten versenden möchtest. Welcher Kanal dabei verfügbar ist, hängt von den installierten Adaptern ab und kann von dir bewusst beeinflusst werden. Möchtest du zum Beispiel Nachrichten über Telegram versenden, musst du diesen Adapter installieren und einrichten.

Sendto
Quelle: ioBroker Blockly
Exklusiv für dich:  Der Aufbau von ioBroker - unter der Haube

Datum und Zeit

Die Kategorie Datum und Zeit dient der Verarbeitung von Uhrzeiten und Daten (ja, Daten ist die Mehrzahl von Datum). Dabei kannst du zum Beispiel einen Block dafür verwenden, wenn du Uhrzeiten miteinander vergleichen möchtest. Ebenso funktioniert das mit einem Datum.

Alternativ kannst du die Blöcke natürlich auch dann verwenden, wenn du das aktuelle Datum oder die aktuelle Uhrzeit für eine deiner Regeln verwenden möchtest. Allgemein gesprochen liefern dir die Blöcke aus dieser Kategorie sämtliche Informationen zurück, die Datum und Uhrzeit betreffen. Doch nicht nur Informationen dafür stehen zur Verfügung. Du kannst dir auch Informationen zunutze machen, die den Sonnenaufgang oder -untergang bestimmen. Hierfür steht ebenso ein entsprechender Block zur Verfügung.

Besonders an diesen Blöcken ist, dass du die Formatierung bestimmen kannst. Zum Beispiel können das Datum und die Uhrzeit so im US-amerikanischen Format, aber auch im europäischen Format ausgegeben werden. Je nachdem, wie du damit arbeiten möchtest oder aus welchem Teil der Welt du kommst. Dabei formatiert ioBroker in der Regel bereits das Datum auf Basis der Angaben in deinem System. Wenn dein System zum Beispiel auf Deutsch eingestellt ist, wird das Datum entsprechend den Vorgaben für Deutschland formatiert. Im US-amerikanischen Raum eben in einem anderen Format.

Datum und Zeit
Quelle: ioBroker Blocky

Konvertierung – ein anderes Format

Konvertierungen dienen im Allgemeinen dazu, Daten in ein anderes Format umzuwandeln. Ein Computer kann zum Beispiel nicht mit Texten rechnen, mit Zahlen allerdings schon. Wenn nun eine Eingabe als Text (auch String genannt) vorliegt, muss diese Eingabe in eine Zahl umgewandelt werden. Das geschieht mit dem passenden Block.

Du kannst vorhandene Daten allerdings auch in Logikwerte, Texte, Datum/Zeit oder JSON umwandeln. Je nachdem, welche Daten du vorliegen hast, musst du eine entsprechende Konvertierung verwenden. In der Regel ist es aber glücklicherweise so, dass die Datenpunkte bereits Daten im richtigen Format liefern und du eher selten eine Konvertierung vornehmen musst.

Zur Konvertierung sei außerdem noch gesagt, dass es sich bei JSON um ein Datenformat handelt. JSON steht für JavaScript Object Notation und ist ein Format, in dem verschiedene IT-Systeme Daten austauschen können. Schnittstellen, die du in dein Smart Home integrieren kannst verwenden ebenfalls häufig JSON.

Wie du dir nun sicherlich denken kannst, hat auch JSONata etwas mit JSON zutun. Mit JSONata kannst du gezielt Daten in einem sogenannten JSON-Objekt oder JSON-Array abfragen. Auch hier wirst du vermutlich erst dann mit dem Block in Berührung kommen, sobald du etwas fortgeschrittener bist und erste Erkenntnisse zur Vernetzung von Systemen hast. Am Anfang ist ein Berührungspunkt eher unwahrscheinlich.

Konvertierung
Quelle: ioBroker Blockly

Timeouts – die Ausführung stoppen

Timeouts weisen deinen Computer dazu an, eine kurze Pause einzulegen. Dabei wird allerdings nicht das komplette System gestoppt, sondern lediglich dieses eine Skript, in das du einen Timeout einbaust.

Die verschiedenen Blöcke dienen dabei unterschiedlichen Verwendungszwecken. Während ein einfacher Pause-Block das gesamte restliche Skript verzögern, kannst du mit Ausführen in bestimmen, welcher Teil deines Skripts eine Pause einlegen soll. Hilfreich ist eine Pause in der Regel dann, wenn du zum Beispiel auf einen noch ausstehenden Wert warten möchtest. Ein Beispiel hierfür ist die Antwort eines Geräts auf die Ausführung eines Befehls.

Sobald du einen Timeout verwendest und ihm einen Namen gibst (Variable timeout), kannst du diesen Timeout ganz gezielt stoppen. Dies geschieht mit den Blöcken Stop. Sie können für dich den von dir angegebenen Timeout-Block abbrechen.

Ich persönlich habe Timeouts eher selten und nur in speziellen Ausnahmefällen im Einsatz. Ich vermute daher, dass auch du eher seltener mit diesen Blöcken in Berührung kommen wirst. Es kann allerdings in verschiedenen Situationen hilfreich sein. Besonders dahingehend, dass ioBroker asynchron arbeitet. Asynchron bedeutet, dass parallel mehrere Befehle ausgeführt werden und du daher nicht genau weißt, wann ein bestimmtes Ergebnis vorliegt. Durch die Einführung einer Pause kannst du dieses Problem auf einem eher uneleganten Weg umgehen.

Timeouts können allerdings auch genutzt werden, um zum Beispiel eine Lampe nach einer vordefinierten Anzahl von Minuten automatisch wieder auszuschalten. Ich nutze genau diese Funktion zum Beispiel für meine automatische Beleuchtung, so dass diese nach einer vordefinierten Zeit wieder ausgeschaltet wird und nicht die ganze Nacht am Leuchten ist. Die Zeit kannst du dabei in Millisekunden, Sekunden, Minuten oder Stunden angeben.

Timeouts
Quelle: ioBroker Blockly

Schleifen

Nun kommen wir zu den Schleifen. Diese benutzt du, wenn du eine bestimmte Aktion mehrfach ausführen möchtest. Dabei kannst du die gewünschte Aktion innerhalb der Schleife definieren und sie wird dann entsprechend oft ausgeführt. So musst du denselben Block nicht mehrfach definieren, um ein bestimmtes Ergebnis zu erreichen.

Schleifen werden auch dann gebraucht, wenn du mehrere Werte bearbeiten oder überprüfen möchtest. Zum Beispiel kommt das vor, wenn du mit Datenpunkten arbeitest, die über den Typ Array verfügen. Ein Array ist dabei ein definierter Speicher, der mehrere Elemente enthält. Mit einer Schleife kannst du so jeden einzelnen Wert durchgehen, ohne hierfür händisch auf die jeweiligen Bereiche zugreifen zu müssen.

Ein hilfreicher Block in der Kategorie Schleifen ist außerdem der, um Schleifen abzubrechen. Mit diesem Block kannst du die Ausführung der aktuellen Schleife abbrechen, sobald zum Beispiel eine bestimmte Bedingung eingetreten ist. Am Ende einer Schleife wird diese allerdings von allein beendet und du musst dich nicht um die Beendigung kümmern.

Ich selbst habe in ioBroker noch nicht allzu oft mit Schleifen arbeiten müssen. Aus eigener Erfahrung weiß ich allerdings, dass Schleifen nicht immer ganz einfach zu handhaben sind und auch zu viel Frust führen können. In diesem Fall kann dir das Debugging weiterhelfen, das ich dir bereits weiter oben kurz beschrieben habe.

Schleifen
Quelle: ioBroker Blockly
Exklusiv für dich:  OpenHAB vs ioBroker - Harte Fakten

Mathematik

Wie die Kategorie Mathematik bereits verrät, kannst du mit diesen Blöcken bestimmte Rechenoperationen durchführen. Dabei kannst du zum Beispiel Werte aufsummieren oder subtrahieren. Meist werden diese Blöcke dann benötigt, wenn du mit Datenpunkten arbeitest, die über den Datentyp Zahl verfügen.

ioBroker bietet dir mit diesen Blöcken außerdem unterschiedliche Hilfestellungen, um zum Beispiel Zahlen zu runden oder eine Variable um genau 1 zu erhöhen, was besonders bei Schleifen hin und wieder einmal gebraucht wird. Du kannst dir außerdem eine Zufallszahl generieren lassen, die dann in einem weiteren Teil deines Skripts überprüft wird.

Mithilfe der Zufallszahlen lassen sich clevere Automationen erstellen, die nicht vorhersehbar sind. Sie sind demnach gerade dann hilfreich, wenn du zum Beispiel Lampen automatisiert nach dem Zufallsprinzip einschalten möchtest. Eine Zufallszahl (0 oder 1) steht dabei jeweils für eine Lampe, die durch eine Überprüfung (Logik-Blöcke) entsprechend ausgewertet wird. Im Falle einer 0 kann ioBroker dir zum Beispiel die Lampe im Wohnzimmer einschalten, während bei einer 1 die Lampe in der Küche eingeschaltet wird.

Im Allgemeinen kannst du die Blöcke dieser Kategorie also genau dann nutzen, wenn du mit Zahlen arbeitest und auf Basis dieser Automationen erstellen möchtest oder Auswertungen durchführen willst.

Mathematik
Quelle: ioBroker Blockly

Text

Nun sind wir bereits bei der Kategorie Text angelangt, die vermutlich eine der häufiger genutzten Blöcke beinhaltet. Mit den Blöcken aus der Kategorie Text kannst du verschiedene Texte zusammenbauen oder mit Texten umgehen. Zum Beispiel lassen sich mit dem Block erstelle Text aus wunderbare Nachrichten für Telegram zusammenbauen. Dabei kannst du als Input sowohl andere Texte, als auch Zahlen nutzen. Alle eingegebenen Informationen werden dabei automatisch in einen Text (String) umgewandelt und von diesem Block ausgegeben.

Für mich persönlich ist genau das ein hilfreicher Anwendungsfall, wenn ich zum Beispiel Informationen aus Variablen mit ergänzenden Informationen verschicken will. Ich baue mir dann mich dem Block erstelle Text aus die passende Nachricht und versende sie mit einem Sendto-Block an mein Smartphone oder Tablet.

Alternativ kannst du natürlich vorhandene Texte umwandeln oder an andere Texte anhängen. Es ist auch denkbar, dass du Texte auf bestimmte Muster oder Buchstaben durchsuchst. So lässt sich zum Beispiel eine Automation auf Basis einer Nachricht einrichten, die du von deinem Smartphone an ioBroker versendest.

Ebenso hilfreich kann der Block Länge von sein. Dieser gibt die Anzahl der Zeichen innerhalb eines Texts zurück. So lässt sich zum Beispiel feststellen, ob ein Text mehr als 2 Buchstaben hat und einer Überprüfung wert ist.

Was du aus den Blöcken Text gestaltest, kann vielseitig sein. In der Regel verwendest du diese Blöcke genau dann, wenn du über ein anderes System Informationen ausgeben willst oder vorhandene Texte auf bestimmte Muster überprüfen möchtest. Dabei musst du natürlich beachten, dass ein Computer nicht mit Texten rechnen kann und du das bei der Erstellung deines Skripts entsprechend bedenkst.

Text
Quelle: ioBroker Blockly

Listen

Listen dienen im Allgemeinen dem Speichern von mehreren Werten. Sie existieren in der Softwareentwicklung entweder als richtige Listen oder als sogenannte Arrays. Der Hauptunterschied besteht darin, dass eine Liste variabel erweitert werden kann und ein Array eine vordefinierte Größe besitzt. Wie du demnach an den Blöcken bereits festmachen kannst, handelt es sich bei ioBroker um Arrays und keine wirklichen Listen. Du musst also beim Erstellen einer Liste schon wissen, wie groß sie werden soll oder eine neue Liste mit den alten und neuen Werten erstellen, die du festhalten möchtest.

Beim Einsatz von Listen kommen nicht selten auch Schleifen zum Einsatz, um mit jedem Wert in einer Liste eine bestimmte Aktion durchzuführen. Du kannst mit den vorhandenen Blöcken auch die sogenannte Länge bestimmen. Unter der Länge versteht man dabei die Anzahl der enthaltenen Elemente.

Wer bereits erste Erfahrungen mit der Programmierung gemacht hat weiß eventuell, dass das erste Element in einer Liste nicht mit dem Wert 1, sondern mit dem Wert 0 abgefragt wird. Die Nummerierung erfolgt dabei von 0 – x, wobei x für die Länge der Liste steht. Blockly macht es aber gerade den Anfängern sehr einfach und beginnt bei der Nummerierung tatsächlich mit der 1, was später im Code entsprechend korrekt übersetzt wird. Wenn du demnach das erste Element abfragen möchtest, greifst du tatsächlich mit der Zahl 1 auf das erste Element zu.

Blöcke aus der Kategorie Listen dienen außerdem dazu, weitere Teillisten zu erzeugen. Beispielsweise können so die ersten drei Elemente aus einer Liste gezogen und für die Weiterverarbeitung zwischengespeichert werden. Listen lassen sich außerdem nach verschiedenen Kriterien sortieren, um die Daten besser verarbeiten zu können.

Listen
Quelle: ioBroker Blockly

Farbe

Die Kategorie Farbe beinhaltet verschiedene Blöcke zur Nutzung von Farben. Das ist darauf zurückzuführen, dass der Computer Farben an sich nicht erkennen kann. Stattdessen erhält jede Farbe eine einzigartige Nummer, anhand der sie identifiziert und weiterverarbeitet werden kann. Die Blöcke aus der Kategorie Farbe helfen dir dabei, dass du dir diese Nummern nicht merken musst.

So kannst du zum Beispiel mit dem ersten Block eine bestimmte Farbe auswählen, die intern in den richtigen Farbcode übersetzt wird. Ebenso kannst du dir zufällige Farben oder bestimmte Mischungen erstellen lassen. Besonders hilfreich ist das dann, wenn du Lampen ansteuern willst.

Durch die Vorschau der Farbe ist es für dich zudem leichter, dass du die richtige Farbe auswählst.

Ansonsten bleibt in dieser Kategorie gar nicht so viel zu erklären. Du nutzt diese Blöcke genau dann, wenn es (Achtung, Überraschung) um Farben geht. In der Regel kommt das vor, wenn du dich um die Steuerung der Lampen in deinem Smart Home kümmerst und zum Beispiel bestimmte Farbszenen in Automationen einbauen möchtest.

ioBroker Farbe
Quelle: ioBroker Blockly

Variablen

Bei der vorletzten Kategorie angekommen, wird es noch einmal wichtig.

Mit Variablen kannst du dir bestimmte Werte zwischenspeichern. Dabei sind Variablen auf das Skript begrenzt, in dem sie erstellt und genutzt werden. Das bedeutet für dich konkret, dass du die erstellten Variablen nicht in anderen Skripten nutzen kannst und sie sich daher nur für die temporäre Zwischenspeicherung von Werten eignen. Möchtest du hingegen Informationen über das Skript hinaus speichern und eventuell an anderer Stelle verwenden, muss die Speicherung über Datenpunkte geschehen.

Datenpunkte stehen im Gegensatz zu Variablen im gesamten System zur Verfügung und können außerdem bei einer Änderung in einer Datenbank gespeichert werden.

Nun fragst du dich sicherlich, wofür du Variablen verwenden kannst. Auch hier greife ich wieder auf ein Beispiel zurück. Stell dir vor du durchläufst eine Schleife auf der Suche nach einem ganz bestimmten Wert. Sobald du ihn gefunden hast, möchtest du mit diesem Wert gerne etwas machen. Damit nach dem Durchlauf der Schleife der Wert nicht vergessen ist, speicherst du ihn dir in einer Variable, um nach dem Durchlauf der Schleife darauf zurückzugreifen. Der ideale Speicherplatz für diesen Wert ist eine Variable, da sie nach dem Durchlaufen des Skript wieder gelöscht wird und somit nicht dauerhaft Speicherplatz verbraucht.

Würde eine Variable hingegen dauerhaft gespeichert werden, würde sie auf deinem PC Speicher benötigen. Das ist zwar nicht viel, kann in der Masse jedoch große Auswirkungen haben. Speichere Variablen daher nur dann in Datenpunkten, wenn die Werte wichtig sind und für andere Skripte zur Verfügung stehen müssen.

Funktionen

Gibt es nun noch etwas, das du mit den bisherigen Blöcken nicht tun konntest? Dann sind eventuell die Funktionen genau das richtige für dich.

Mit den Blöcken aus der Kategorie Funktionen bist zu beispielsweise in der Lage dazu, eine bestimmte JavaScript-Funktion auszuführen, die bisher in keinem Block vertreten ist. Damit ermöglichen dir diese Blöcke eine große Freiheit und können dazu genutzt werden, deine Skripte um weitere Funktionen zu ergänzen.

Ich kann dir aus eigener Erfahrung allerdings sagen, dass du mit den vorhandenen Blöcken wohl nahezu alles abdecken kannst und nur selten auf andere Funktionen zurückgreifen musst. Sollte es doch mal vorkommen, verfügst du vermutlich schon über genug wissen, um deine Skripte selbst zu programmieren. In diesem Fall wirst du höchstwahrscheinlich nicht auf diesen JavaScript-Block übergehen, sondern die Erstellung von Skripten im JavaScript-Editor nutzen. Dieser kann als Alternative zu Blockly genutzt werden und gestattet natürlich weitere Freiheiten.

ioBroker Funktionen
Quelle: ioBroker Blockly
Exklusiv für dich:  ioBroker - Vorstellung und erster Eindruck

Zusammenfassend

Blockly ist ein großartiges Tool für die Erstellung von Skripten für das Smart Home. Gerade Anfängern wird es so ziemlich leicht gemacht, ihre eigenen Automationen zu erstellen. Dabei ist Blockly allerdings nicht ganz so einfach, wie man vielleicht zuerst vermuten mag. Auch ich als Softwareentwickler habe manchmal meine Schwierigkeiten mit dieser Bibliothek, da ich es gewohnt bin, meinen Code selbst zu schreiben und dazu schon die richtigen Befehle im Kopf habe.

Du musst außerdem wissen, dass du für das Nutzen von Blockly zumindest über ein grundlegendes Verständnis der Blöcke verfügen musst. Kein Tool dieser Welt nützt dir etwas, wenn du nicht weißt, was die einzelnen Blöcke tun. Daher ist es in meinen Augen sehr wichtig, dass du dich im Voraus mit der Funktionsweise beschäftigst und dir eventuell ein paar Skripte ansiehst. Wenn du diese dann noch versuchst zu verstehen, bist du auf einem guten Weg.

Trotz schöner Farben und einfacher Mausklicks bleibt in ioBroker Blockly eins: Ein Tool, um Skripte zu erstellen, die im Normalfall nicht in 5 Minuten zusammengeklickt sind. Die eigene Hausautomation an die eigenen Wünsche anzupassen ist Arbeit und darf nicht auf die leichte Schulter genommen werden.

Kategorien: ioBroker

Lukas

Hey, ich bin Lukas. Seit einigen Jahren schreibe ich in meinem Smart Home Blog über Hausautomation und Digitalisierung. Als Wirtschaftsinformatiker weiß ich, wie wichtig die Vernetzung von IT-Systemen ist. Diese Erkenntnisse übertrage ich auf mein eigenes Smart Home, das ich auf Basis von ioBroker betreibe. Hierzu nutze ich die Leistung eines eigenen Rackservers in meinem Keller, der alle Dienste und Smart Home Systeme aufrecht erhält. Mit ihm habe ich mir einen großen Traum erfüllen können. In deinen Ohren klingt das mindestens genauso spannend, wie für mich? Dann komm mit auf unsere Reise zu einem vollwertigen, sicheren und komfortablen Smart Home. Ganz oben findest du Verknüpfungen zu Social Media, wo du mir gerne folgen darfst. Ich freue mich auf dich!

2 Kommentare

Ulf · 6. Oktober 2021 um 08:48

Ich möchte mich für Deine Arbeit bedanken. Du hast eine sehr gute Art die Dinge zu beschreiben.

    Lukas · 6. Oktober 2021 um 20:57

    Hallo Ulf,

    vielen Dank für das Feedback. Das ist ja grandios! Ich werde das definitiv so beibehalten.

    Beste Grüße

Schreibe einen Kommentar

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