Moinssen,
verschiedene Lampen habe ich mit einem Timer versehen, z.B. Flur für 90 sek an. Um nicht vom ausschalten überrascht zu werden, lasse ich sie 40sek vor Ablauf des Timers zwei mal kurz flackern, dafür habe mir eine Function gebaut.
Funktioniert prima, aber wenn ich zu oft in kurzer Zeit auf den Schalter drücke, löscht er offenbar nicht den laufenden Timer sondern hängt immer neue an?!
Wie könnte ich das umgehen, wie kann ich die laufenden Timer wirklich beenden - Timer.clear() scheint nicht die Lösung zu sein...
Code
function LichtAnmitWarnung(IP, Tim, Warnung) {
Timer.clear();
Call('HTTP.get',{url: 'http://192.168.0.' + IP + '/rpc/switch.set?id=0&on=true&toggle_after=' + (Tim - Warnung)}); // Erstmal einschalten, 40sek vor Ende Warnung
timerA=Timer.set((Tim - Warnung + 0.3)*1000, false, function () { // Erstes Blinken
if (timerA) Timer.clear(timerA);
Call('HTTP.get',{url: 'http://192.168.0.' + IP + '/rpc/switch.set?id=0&on=true&toggle_after=0.3'});
let timerB=Timer.set(600, false, function () { // Zweites Blinken
Call('HTTP.get',{url: 'http://192.168.0.' + IP + '/rpc/switch.set?id=0&on=true&toggle_after=' + (Warnung - 0.9)});
if (timerB) Timer.clear(timerB);
});
});
};
Alles anzeigen