ioBroker JavaScript – Einführung

In diesem Artikel möchte ich eine kurze Einführung in das Skripting in ioBroker geben. 

In ioBroker existieren verschiedene Möglichkeiten eigene Anwendungsfälle in die Smart-Home Steuerung zu implementieren. So gibt es zum Beispiel die Möglichkeit über den Kalender einfache Steuerungen zu implementieren (z.B. Aktoren aufgrund von Wochentagen und Uhrzeiten steuern). Ein weitere Form der Programmierung ist Blockly. Mit Blockly können einfache Anwendungsfälle per Designer zusammengestellt werden. Gerade für Einsteiger oder weniger erfahrene Anwender ist diese Form der Programmierung eine gute Möglichkeit eigene Steuerungen zu implementieren. Die wohl mächtigste Form der Programmierung sind die Skripts in Form von „JavaScript“ Code. In diesem Artikel möchte ich zeigen wie diese Skripts eingerichtet und erstellt werden können.

 

Inhaltsverzeichnis:

1. JavaScript-Adaper installieren

2. Aufbau des Script-Editors

3. Anlegen von Gruppen

4. Anlegen eines neuen Skripts

5. Scriptsammlung

6. Weiterführende Links und Artikel

 

 

 



1. JavaScript-Adaper installieren

Bevor wir mit der Programmierung der Skripts beginnen können, müssen wir zunächst den JavaSkript-Adapter „Skript Engine“ installieren. Dazu gehen wir auf den Bereich Adapter und suchen hier nach „javascript“. Über die Plus-Schaltfläche kann dann der Adapter „Skript Engine“ installiert werden. Der Adapter enthält neben den JavaScripts auch Blockly und TypeSkript.

 

Nach der Installation des Adapters aktivieren wir den Bereich „Skripte“ in der Auswahl der anzuzeigenden Bereiche.

2. Aufbau des Script-Editors
Der folgende Screenshot zeigt den Aufbau des Script-Bereichs mit den einzelnen Elementen und den Funktionalitäten.

 

In den Skripten sind nun zwei Bereiche sichtbar (Common und global). Im Ordner global stehen globale Skripte, welche auch in jedem anderen Skript zur Verfügung stehen. In globalen Skripten können häufig verwendete eigener Funktionen abgelegt werden.

 

3. Anlegen von Gruppen

Im nächsten Schritt legen wir uns nun eine eigene Gruppe an, in der wir Skripte zur Lichtsteuerung ablegen. Ich verwende Gruppen sehr intensiv zur besseren Strukturierung um somit einen guten Überblick über alle Skripte zu behalten. Dazu klicken wir auf die Plus-Schaltfläche und vergeben im nachfolgenden Fenster einen Gruppennamen.

 

Für unser Beispiel habe ich hier den Name „Lichtsteuerung“ gewählt, da wir mit einem einfachen Nachtlicht beginnen möchten. Zusätzlich zum Namen können wir hier noch den Speicherort „common oder global“ auswählen. Wir wählen hier common.

 

Nach dem wir die Gruppe gespeichert haben sehen wir diese nun in der Baumstruktur der Skripte.

 

4. Anlegen eines neuen Skripts

Um ein neues Skript anzulegen klicken wir nun auf den entsprechenden Ordner „Lichtsteuerung“ und klicken oben in der Leiste auf das Symbol für ein neues Skript.

 

Auf dem Auswahlfenster klicken wir auf das JavaScript-Symbol um ein neues JavaScript Element anzulegen.

 

Im nächsten Schritt passen wir den Namen des Skriptes an, in dem wir einen neuen Namen „Nachtlicht“ in das Namensfeld eintragen und mit Speichern bestätigen. Wir haben nun die Basis für das neue Skript geschaffen und können nun mit der eigentlichen Implementierung beginnen.

 

 

 

 

 

 

Im nächsten Schritt fügen wir den unten angefügten JavaScript Code in den Editor ein.


function Licht_Flur_Nachlicht_An() {
setState("hm-rpc.0.OEQ08167XX.State", true);
}

function Licht_Flur_Nachlicht_Aus() {
setState("hm-rpc.0.OEQ08167XX.State", false);
}

schedule({hour: 20, minute: 30}, function () { Licht_Flur_Nachlicht_An(); } );
schedule({hour: 6, minute: 0}, function () { Licht_Flur_Nachlicht_Aus(); } );

Im Skript wird eine einfache Nachtlicht-Steuerung programmiert. Dazu wird per schedule Funktion eine Funktion um 20:30 Uhr aufgerufen, welche das Nachtlicht einschaltet. Über eine zweite Funktion wird um 6:00 Uhr morgends das Nachtlicht wieder ausgeschaltet. Das steuern von Aktoren läuft dabei über die setState Funktion. Mit dem Skript wird eine relative simple Form der Programmierung dargestellt, die selbstverständlich auch per Kalender oder Blockly gelöst werden könnte. Anhand diesen Beispiels kann nun aber zusätzliche Funktionalität und Logik hinzugefügt werden, welche über JavaScript deutlich flexibler gesteuert werden kann. So könnten folgenden Szenarien noch zusätzlich hinzugefügt werden:

  • Anwesenheitsprüfung integrieren
  • Abfrage ob z.B. das Flurlicht eingeschaltet ist, da dann das Nachtlicht nicht aktiviert werden müßte
  • Anwesenheitssimulation für den Urlaub

 

Nach dem wir nun erstes Script erstellt haben, müssen wir dieses nun im nächsten Schritt aktivieren.

 

Nun haben wir unser erstes kleines JavaScript erstellt, mit dem wir nun unser Smart-Home um eigene Logik erweitern können.

 

5. Scriptsammlung

Ich veröffentliche in regelmäßigen Abständen eigene Skripte zur Steuerung meines Smart-Home hier auf der Webseite. Dazu habe ich eine Skriptsammlung erstellt, welche unter folgendem Link aufgerufen werden kann:

ioBroker JavaScript-Sammlung

 

6. Weiterführende Links und Artikel

In der folgenden Liste habe ich interessante Links und Informationen zum Thema JavaScript zusammengefasst:

ioBroker Dokumentation JavaScript

Umfangreiches JavaScript Tutorial von www.w3schools.com

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.

2 Gedanken zu „ioBroker JavaScript – Einführung

  • 12. Dezember 2018 um 13:19
    Permalink

    Hallo Matthias,

    die Anleitung stimmt mit meiner Windosinstallation überein.
    Auf dem Raspberry sieht sie aber anders aus.
    Da gibt es keine neue Gruppe sondern nur neuen Ordner erstellen.
    Auch das Skrip sieht anders aus.
    Gibt es dafü auch eine Anleitung?

    Antwort
    • 15. Dezember 2018 um 15:37
      Permalink

      Hallo Klaus, welche Version des JavaScript-Adapters verwendest Du denn?

      Antwort

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