NEWS
[gelöst]timer und countdown
-
Hallo mal wieder,
ich hätte gerne einen Countdown, in dem der aktuelle Timer heruntergezählt wird und die Restzeit h:mm in einen Datenpunkt geschrieben werden. Ich habe hier im Forum schon einiges gelesen, aber so richtig weitergekommen bin ich noch nicht.Anbei mein Skript:
idManu und idTaster_virtu sind Datenpunkte var taster_virtu = true; var laufzeit = 3600000; //Laufzeit in Stunden if (taster_virtu) { manu = true; timer = setTimeout(function() { timer = null; setState(idManu, false, true); setState(idTaster_virtu, false, true); }, laufzeit); }
-
var count,timer; function countdown(){ count--; if(count > 0) setState('javascript.0.Countdown.Brunnen.countdown', count); else { setState('javascript.0.Countdown.Brunnen.countTrigger', false ); } } on({id: "javascript.0.Countdown.Brunnen.countTrigger", change: "ne"}, function(obj){ if(obj.state.val) { count = getState('javascript.0.Countdown.Brunnen.Zeitvorgabe').val; // in Minuten setState('javascript.0.Countdown.Brunnen.countdown', count); timer = setInterval(countdown, 60000); // 1000 = 1 Sek. ; 60000 = 60 Sek. } else { clearInterval(timer); setState('javascript.0.Countdown.Brunnen.countdown', 0 ); } });
Anmerkung:
Variablen musst du manuell anlegen.
Zeitvorgabe: hier kannst du die Zeit in Min. vorgeben
Tripper: true startet den countdown
countdown: enthält dann die Zahl in Minuten.mfg
-
Vorschlag:
var laufzeit = getState(idLaufzeit).val; //Laufzeit in Stunden var cnt; on(idTaster_virtu, function(dp) { taster_virtu = dp.state.val; var manu = false; if(timer) clearInterval(timer); // Stopp Timer timer = null; if (taster_virtu) { manu = true; cnt = 60 * laufzeit; // Minuten timer = setInterval(function() { cnt--; var mm = cnt % 60; if(mm < 10) mm = '0' + mm; setState(idCountdown, Math.floor(cnt / 60) + ':' + mm, true); if(cnt <= 0) { clearInterval(timer); timer = null; setState(idManu, false, true); setState(idTaster_virtu, false, true); } }, 60000); } setState(idManu, manu, true); });
Anmerkung: die Zeilen 18 bis 20 können entfallen, da dies auch durch den Trigger als Reaktion auf
setState(idTaster_virtu, false, true) erfolgt. -
danke - funktioniert