Schalter mit mehreren Aktionen – IObroker Script

Wie kann ich mit einem Schalter nacheinander mehrere Aktionen ausführen? Das Zeige ich dir mit einem kleinen Iobroker Script am Beispiel eines Homematic Tasters.

als Beispiel:

  1. mal drücken oben >> Schalte Licht an
  2. mal drücken oben >> Schalte ein weiteres passives Licht an
  3. mal drücken oben >> Musik ein

Beim Tippen nach unten soll alles wieder ausgeschaltet werden. Zusätzlich könnte noch ein langes Drücken (auf einem geeigneten Taster) dazu belegt werden, um beispielsweise eine andere Playlist zu starten.

Das Script Beispiel hab ich für meine Homematic Taster genutzt um im Bad durch die Lichtszenen zu hüpfen. Dabei rotiere ich in einer Endlosschleife von ganz dunkel – mittelhell – ganz hell.

var akt_modus = 0; // aktueller Modus ist der Startpunkt und somit 0. Wird nicht in der Laufzeit gesetzt. Bei einem Neustart der JS-Engine wird der Status demnach wieder auf 0 gesetzt ohne die Aktionen auszuführen

function switchON() {
    // Wenn modus bei 0 dann erste szene aktivieren
    if (akt_modus === 0) { 
        setState(..., true);
        akt_modus = 1;

    // zweite szene
    } else if (akt_modus === 1) { 
        setState(..., true);
        akt_modus = 2;

    // dritte szene 
    } else if (akt_modus === 2) { 
       // akt_modus = 0; // falls nach der Xten wieder zum anfang gehüpft werden soll, dann auskommentieren um wieder zu 1 zu hüpfen. Bspw. für Lichthelligkeiten im Raum
    }
}

function switchOff() {
    setState(..., 0);
    akt_modus = 0;
}


// Die Listener setzen
on({ id: "DEINE_ID.PRESS_SHORT" }, function () {
    switchON();
});

on({ id: "DEINE_ID.PRESS_LONG" }, function () {
   setState(..., ) // Playlist wechseln
});

on({ id: "DEINE_ID.PRESS_SHORT" }, function () {
   switchOff(); 
});
on({ id: "DEINE_ID.PRESS_LONG" }, function () {
   switchOff(); 
});

Fragen? Anregungen? Dann hinterlasst mir doch einen Kommentar!

Schreibe einen Kommentar

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