Nachdem ich in der Zählersache etwas mehr durchgestiegen bin, habe ich einfach folgendes zurechtgehämmert.
Das hat den Vorteil, dass ich den Schalter wie gewohnt benutzen kann ohne "Irgendwann" wenn die ON- und Off-Zähler ihre Füllstände erreicht haben eine Szene ausgeführt wird ohne, dass man es wollte.
Mein Script zählt die Schaltzustände innerhalb eines gewissen Timeouts.
Ist der Timeout abgelaufen, werden die Zähler zurückgesetzt und der Spaß geht von vorne los.
var Rueckstellung, Zaehler_On, Zaehler_OFF;
on({id: "Lichtschalter XY", change: "ne"}, function (obj) {
var value = obj.state.val;
var oldValue = obj.oldState.val;
Rueckstellung = setTimeout(function () {
Zaehler_On = 0;
Zaehler_OFF = 0;
}, 5000);
if (getState("Lichtschalter XY").val == true) {
Zaehler_On = (typeof Zaehler_On == 'number' ? Zaehler_On : 0) + 1;
}
if (getState("Lichtschalter XY").val == false) {
Zaehler_OFF = (typeof Zaehler_OFF == 'number' ? Zaehler_OFF : 0) + 1;
}
if (Zaehler_On == 2 && Zaehler_OFF == 2) {
if (getState("Aktor_in_der_Wunschszene").val == false) {
setState("Aktor_in_der_Wunschszene", true);
sendTo("telegram", "send", {
text: 'Wunschaktor aktiviert'
});
}
if (getState("Aktor_in_der_Wunschszene").val == true) {
setState("Aktor_in_der_Wunschszene", false);
sendTo("telegram", "send", {
text: 'Wunschaktor deaktiviert'
});
}
Zaehler_OFF = 0;
Zaehler_On = 0;
}
});
Was mir jetzt noch fehlt, ist die Auswahl von mehreren Szenen, was ich dann in einen weiteren timeout packen sollte, der erst nach einer gewissen Zeit die Codefolgen des Schalters prüft.
Als Tipp: Der gewählte Schalter steuert eine eher unauffällige Lampe, die nicht im Raum für Blitzlichtgewitter sorgt. 