NEWS
Countdown ersetzen anstatt neuen zu erzeugen
-
Hallo,
ich benötige für ein Skript die Möglichkeit einen Countdown (mit dem betr. Adapter countdown) neu zu setzen bevor der vorhergehnede Countdown zu Ende gegangen ist.Das ganze soll so laufen, dass ich unter 0_userdata für jeden Raum Parameter für die Automatisierung festlegen kann. Einer davon ist "Anwesend". Dieser soll auf true gesetzt werden wenn z.B. der Bewegungsmelder in dem Raum anspricht oder ein Lichtschalter in dem Raum betätigt wird.
Sobald eine Bewegung erkannt bzw. Lichtschalter betätigt wird soll bei einem bereits laufenden countdown die Zielzeit neu gesetzt werden.
Wenn man dies mit "sendTo" macht wird der bestehende Countdown aber nicht geändert.
Löschen und neu Anlegen ist auch keine Alternative, da bei Änderung des Datenpunktes für das ablaufen des Countdowns != false die Anwesenheit dann auf "false" gesetzt werden und ein "flackern" vermieden werden soll.Weiss jemand wie man einen laufenden Timer updaten kann ?
$('channel[state.id=*.STATE](functions=Bewegung)').on(function(obj) { let raum=getRoom(obj.id) let timername="Anwesenheit"+raum let anwesendId="0_userdata.0.RS."+raum+".Anwesend" let timerEndId="countdown.0.countdowns."+timername+".reached" if (getState(obj.id).val == true) { let automatikAus=getState("0_userdata.0.RS."+raum+".LichtAutoAus").val let automatikEin=getState("0_userdata.0.RS."+raum+".LichtAutoAn").val let timeout=getState("0_userdata.0.RS."+raum+".Anwesenheit_CounterSet").val let timerEndDateTime = addMinutes(new Date(), timeout) tolog(logging,("Licht: " + obj.id)) tolog(logging,("Raum: " + raum)) tolog(logging,("AutoAus: " + automatikAus)) tolog(logging,("AutoEin: " + automatikEin)) tolog(logging,("anwesendId: " + anwesendId)) tolog(logging,("timeout: " + timeout)) tolog(logging,("timerEnd: " + timerEndDateTime)) sendTo("countdown.0", "send", { "name": timername, "date": timerEndDateTime }) setState(anwesendId,true,true) on({id:timerEndId, value: 'true'}, function (obj) { setState(anwesendId,false,true) }) } });
-
@ehome Aus der Adapterbeschreibung: "Sie können einen Countdown mit dem sendto löschen. Senden Sie daher mit sendto nur den Namen an den Adapter und der Countdown wird automatisch gelöscht."
-
@geschild
ja, die Adapterberschreibung kenn ich, aber ich möchte ja gerade nicht den Timer löschen sondern ändern. -
@ehome Dann würde ich erst löschen und dann den geänderten sofort hinterherschicken.