Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. [gelöst] Countdown Script zählt nicht bis null (bleibt bei 1 stecken)

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.7k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.2k

[gelöst] Countdown Script zählt nicht bis null (bleibt bei 1 stecken)

Geplant Angeheftet Gesperrt Verschoben JavaScript
javascript
3 Beiträge 2 Kommentatoren 234 Aufrufe 2 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • F Offline
    F Offline
    f0rd42
    schrieb am zuletzt editiert von f0rd42
    #1

    Hi.

    Ich habe hier das Script von @paul53 genutzt um mir einen Regenverzögerungstimer zu bauen.
    Ich habe einen Regensensor und wenn der von true auf false (es regnet nicht mehr) geht, soll das Script anfangen zu den Countdown runterzuzählen, so dass ich einen Wert von "0" (wenn es geregnet hat, ist es wenigstens x Minuten her) abfragen kann. Soweit funktioniert auch alles, aber das Script zählt nie bis auf "0", sondern bleibt immer bei 1 stehen (danach gibt es dann auch keine weiteren updates auf den DP)

    Hier ein Script:

    // RainDelay
     
    var count,timer;
     
    function countdown(){
      count--;
      if(count > 0) {
            setState('javascript.0.Countdown.Bewaesserung.RainDelayStatus1'/*RainDelayStatus1*/, count);
            if (count > 60) {
                var min = parseInt(count/60);
                var sek = count - (min*60);
                setState('javascript.0.Countdown.Bewaesserung.RainDelayStatus1'/*RainDelayStatus1*/, count);
                setState('javascript.0.Countdown.Bewaesserung.RainDelayStatus2'/*RainDelayStatus2*/, min + " Min.  " + sek + " Sek.");
            } else {
                setState('javascript.0.Countdown.Bewaesserung.RainDelayStatus1'/*RainDelayStatus1*/, count);
                setState('javascript.0.Countdown.Bewaesserung.RainDelayStatus2'/*RainDelayStatus2*/, count + " Sek.");
            }
      }
    }
     
    on({id: "javascript.0.Hilfsvariablen.TestTrigger"/*TestTrigger*/, change: "ne"}, function (obj) {
      var value = obj.state.val;
      var oldValue = obj.oldState.val;
      if (getState("javascript.0.Hilfsvariablen.TestTrigger").val == false) { 
            count = getState('javascript.0.Countdown.Bewaesserung.RainDelayTimer').val /*RainDelayTimer*/
    //        count = 65;  // in Sekunden
            timer = setInterval(countdown, 1000);   // 1000 = 1 Sek. ;  60000 = 60 Sek.
        } else {
            clearInterval(timer);
            setState('javascript.0.Countdown.Bewaesserung.RainDelayStatus1'/*RainDelayStatus1*/, 0 );
            setState('javascript.0.Countdown.Bewaesserung.RainDelayStatus2'/*RainDelayStatus2*/, "" );
        }
    });
    

    Kann mir hier jemand helfen / auf die Sprünge helfen?

    Danke

    paul53P 1 Antwort Letzte Antwort
    0
    • F f0rd42

      Hi.

      Ich habe hier das Script von @paul53 genutzt um mir einen Regenverzögerungstimer zu bauen.
      Ich habe einen Regensensor und wenn der von true auf false (es regnet nicht mehr) geht, soll das Script anfangen zu den Countdown runterzuzählen, so dass ich einen Wert von "0" (wenn es geregnet hat, ist es wenigstens x Minuten her) abfragen kann. Soweit funktioniert auch alles, aber das Script zählt nie bis auf "0", sondern bleibt immer bei 1 stehen (danach gibt es dann auch keine weiteren updates auf den DP)

      Hier ein Script:

      // RainDelay
       
      var count,timer;
       
      function countdown(){
        count--;
        if(count > 0) {
              setState('javascript.0.Countdown.Bewaesserung.RainDelayStatus1'/*RainDelayStatus1*/, count);
              if (count > 60) {
                  var min = parseInt(count/60);
                  var sek = count - (min*60);
                  setState('javascript.0.Countdown.Bewaesserung.RainDelayStatus1'/*RainDelayStatus1*/, count);
                  setState('javascript.0.Countdown.Bewaesserung.RainDelayStatus2'/*RainDelayStatus2*/, min + " Min.  " + sek + " Sek.");
              } else {
                  setState('javascript.0.Countdown.Bewaesserung.RainDelayStatus1'/*RainDelayStatus1*/, count);
                  setState('javascript.0.Countdown.Bewaesserung.RainDelayStatus2'/*RainDelayStatus2*/, count + " Sek.");
              }
        }
      }
       
      on({id: "javascript.0.Hilfsvariablen.TestTrigger"/*TestTrigger*/, change: "ne"}, function (obj) {
        var value = obj.state.val;
        var oldValue = obj.oldState.val;
        if (getState("javascript.0.Hilfsvariablen.TestTrigger").val == false) { 
              count = getState('javascript.0.Countdown.Bewaesserung.RainDelayTimer').val /*RainDelayTimer*/
      //        count = 65;  // in Sekunden
              timer = setInterval(countdown, 1000);   // 1000 = 1 Sek. ;  60000 = 60 Sek.
          } else {
              clearInterval(timer);
              setState('javascript.0.Countdown.Bewaesserung.RainDelayStatus1'/*RainDelayStatus1*/, 0 );
              setState('javascript.0.Countdown.Bewaesserung.RainDelayStatus2'/*RainDelayStatus2*/, "" );
          }
      });
      

      Kann mir hier jemand helfen / auf die Sprünge helfen?

      Danke

      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von paul53
      #2

      @f0rd42 Ersetze in Zeilen 6, 7:

        if(count > 0) {
           count--;
      

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      F 1 Antwort Letzte Antwort
      0
      • paul53P paul53

        @f0rd42 Ersetze in Zeilen 6, 7:

          if(count > 0) {
             count--;
        
        F Offline
        F Offline
        f0rd42
        schrieb am zuletzt editiert von
        #3

        @paul53 sehr fein, vielen Dank.
        Sollte eventuell im "Original Post" auch geändert werden ;-)

        1 Antwort Letzte Antwort
        0
        Antworten
        • In einem neuen Thema antworten
        Anmelden zum Antworten
        • Älteste zuerst
        • Neuste zuerst
        • Meiste Stimmen


        Support us

        ioBroker
        Community Adapters
        Donate

        900

        Online

        32.4k

        Benutzer

        81.5k

        Themen

        1.3m

        Beiträge
        Community
        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
        ioBroker Community 2014-2025
        logo
        • Anmelden

        • Du hast noch kein Konto? Registrieren

        • Anmelden oder registrieren, um zu suchen
        • Erster Beitrag
          Letzter Beitrag
        0
        • Home
        • Aktuell
        • Tags
        • Ungelesen 0
        • Kategorien
        • Unreplied
        • Beliebt
        • GitHub
        • Docu
        • Hilfe