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) }) } }); -
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.
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden