NEWS
[gelöst]Funktion nur für bestimmten Zeitraum ausführen (Timer)
-
Ich bin gerade irgendwie nicht so richtig auf der Höhe und brauche mal etwas Hilfe.
Folgende Ausgangssituation:
Ich habe in einem Zimmer einen Dect Thermostaten und einen Dash Button
Über den Dash Button möchte ich den Thermostaten voll aufregeln.
Das erfolgt hiermit:
var Taster = "amazon-dash.0.00-fc-xx-xx-xx-a9.pressed"/*pressed*/; var idTarget = "fritzdect.0.Comet_1196xxx99192.targettemp"/*Target Temp*/; var idComfy = "fritzdect.0.Comet_1196xxx99192.comfytemp"; var idNight = "fritzdect.0.Comet_1196xxx99192.nighttemp"; var idHigh = "28"; on({id: Taster, val: true}, function (obj) { setState(idTarget, idHigh); });
Soweit funktioniert das jetzt ohne Probleme.
Jetzt möchte ich allerdings die Funktion erweitern und bin mir nicht so richtig im Klaren wie ich vorgehen sollte.
Hinzufügen möchte ich:
-
einen Timer mit 60 Minuten der nach 60 Minuten auf die die Komforttemperatur zurückschaltet. Bei erneutem Drücken soll der Timer neu starten.
-
einen Datenpunkt in dem ich die abgelaufene Zeit des Timers sehen kann für VIS
Ich habe mehrere Möglichkeiten gefunden aber bin scheinbar irgendwie zu blöd das umzusetzen.
viewtopic.php?f=21&t=16364&p=172478&hil … pt#p172478
Bitte zerlegt mich jetzt nicht, aber ich bin die Tage nicht so richtig fähig klar zu denken(Erkältung), möchte aber das irgendwie schon weiterbringen.
-
-
- einen Datenpunkt in dem ich die abgelaufene Zeit des Timers sehen kann für VIS `
Dafür muss man setInterval() verwenden. Möchtest Du die abgelaufene Zeit oder die Restdauer anzeigen ?
Vorschlag (nicht getestet) mit Restdauer (in Minuten):
const idTaster = "amazon-dash.0.00-fc-xx-xx-xx-a9.pressed"/*pressed*/; const idTarget = "fritzdect.0.Comet_1196xxx99192.targettemp"/*Target Temp*/; const idComfy = "fritzdect.0.Comet_1196xxx99192.comfytemp"; const idNight = "fritzdect.0.Comet_1196xxx99192.nighttemp"; const idVis = "javascript.0..."; // Anzeige Restdauer in Minuten const High = 28; var cnt = getState(idVis).val; var timer = null; function countDown() { cnt--; setState(idVis, cnt, true); if(cnt <= 0) { clearInterval(timer); setState(idTarget, getState(idComfy).val); } } on({id: idTaster, val: true}, function () { setState(idTarget, High); cnt = 60; setState(idVis, cnt, true); if(timer) clearInterval(timer); timer = setInterval(countDown, 60000); // jede Minute });
- einen Datenpunkt in dem ich die abgelaufene Zeit des Timers sehen kann für VIS `
-
Ich danke dir ganz herzlich.
Das funktioniert einwandfrei.
Darf ich noch eine Frage loswerden?
Du hast den Anfang von
"var"
auf
"const"
geändert. Was ist da der Unterschied?
-
Was ist da der Unterschied? `
Mit const deklariert man Konstanten, deren Wert anschließend im Skript nicht mehr geändert werden kann (trifft nicht auf den <u>Inhalt</u> von Objekten / Arrays zu). Es ist einfach nur konsequenter. -
Danke!
Wieder etwas schlauer