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);
        }
    

  • Forum Testing Most Active

    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


Log in to reply
 

Suggested Topics

  • 2
  • 3
  • 7
  • 3
  • 4
  • 1
  • 22
  • 2

2.2k
Online

32.6k
Users

39.1k
Topics

530.3k
Posts