ioBroker bietet die Möglichkeit eigene Skripte auszuführen, welche dann beispielsweise bei der Änderung eines States eine bestimmte Aktion auslösen.

Die eigenen Skripte können dabei in Javascript, Typescript oder Blocky erstellt werden. Blocky ist dabei sicherlich vor allem für diejenigen unter euch interessant, die bislang über wenig bis gar keine Programmiererfahrung verfügen.


Adapter Skriptausführung

Als Grundlage muss der Adapter Skriptausführung installiert werden. Dies geschieht wie gewohnt über die Administrationsoberfläche von ioBroker.

Die Adapterkonfiguration zur Instanz javascript.0 kann einfach mit den Standardeinstellungen bestätigt werden.

Nach der erfolgreichen Installation des Adapters muss die Seite einmal neu geladen werden. Danach ist links in der Menüleiste der neue Punkt Skripte verfügbar, über den wir zur Verwaltung der Skripte kommen.


Anlegen eines Skripts

Zum Anlegen eines neuen Skripts klicken wir oben links auf den +-Button, woraufhin sich eine Auswahl zwischen Javascript, Blocky und Typescript öffnet.

Ich selbst verwende am liebsten Typescript, aber letztendlich ist das Geschmackssache. 🙂


Einfaches Beispielskript

Dieses einfache Beispielskript reagiert auf jede Veränderung des States dummy.0.toggle und schaltet dann den State von dummy.0.value entsprechend um. Zudem werden jeweils der alte und neue Wert im Log ausgegeben.

Javascript / Typescript

on({ id: 'dummy.0.toggle', change:'any'}, (obj) => {
    let oldState = getState('dummy.0.value');
    log(alt: ${oldState.val});

    let newVal = !oldState.val;
    log(neu: ${newVal});

    setState('dummy.0.value', newVal);
});

Blocky

In Blocky wird das Skript durch einfaches Drag&Drop von verschieden Blöcken erstellt, was dann so aussieht:

Dazu der Javascript Code, den Blocky daraus erzeugt:

var newVal;

on({id: 'dummy.0.toggle', change: "any"}, function (obj) {
  var value = obj.state.val;
  var oldValue = obj.oldState.val;
  console.log(('alt: ' + String(getState("dummy.0.value").val)));
  newVal = !getState("dummy.0.value").val;
  console.log(('neu: ' + String(newVal)));
  setState("dummy.0.value"/*value*/, newVal, true);
});

Schlusswort

Die Möglichkeit eigene Skripte zu verwenden ist ein sehr mächtiges Werkzeug und eröffnet jede Menge Möglichkeiten.

Alle Funktionen und Optionen der Skripte zu erklären würde den Rahmen dieses Beitrags deutlich sprengen, weshalb ich abschließend einfach noch auf zwei Links zu dem Thema verweisen möchte.