Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [gelöst] Countdown Script umbauen

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.8k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    892

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

[gelöst] Countdown Script umbauen

Scheduled Pinned Locked Moved Skripten / Logik
15 Posts 6 Posters 4.2k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • BluefoxB Offline
    BluefoxB Offline
    Bluefox
    wrote on last edited by
    #5

    @coyote:

    Das funktioniert schon mal, danke dir Pix.

    Nun geht es weiter…

    Wie kann ich denn jetzt in Vis anstatt die 9000 Sekunden mir z.B 150min oder eben 2h30min anzeigen lassen.

    Dazu muss doch das Script geändert werden oder?

    Und wenn die Statusmeldung der Variable "Waschmaschine" = false ist würde ich gerne den Counter zurücksetzen.

    Sorry für die ganzen Fragen, aber das ist das erste Mal dass ich mit Javascript zu tun hab. Wird noch etwas dauern bis ich da durchblicke. `

    var interval = null;
    var countdown = 9000;
    
    createState('countdown', seconds2text(countdown));
    createState('afterCount', false);
    createState('countTrigger', false);
    
    function seconds2text(seconds) {
    	var sec_num = parseInt(seconds, 10); // don't forget the second param
        var hours   = Math.floor(sec_num / 3600);
        var minutes = Math.floor((sec_num - (hours * 3600)) / 60);
        var seconds = sec_num - (hours * 3600) - (minutes * 60);
    
    	var time;
    	if (hours > 0)
    		if (hours   < 10) {hours   = "0" + hours;}
    		if (minutes < 10) {minutes = "0" + minutes;}
    		if (seconds < 10) {seconds = "0" + seconds;}
    		time = hours + ' Stunden, ' + minutes + ' Minuten und ' + seconds + ' Sekunden';
    	} else 	if (minutes > 0)
    		if (minutes < 10) {minutes = "0" + minutes;}
    		if (seconds < 10) {seconds = "0" + seconds;}
    		time = minutes + ' Minuten und ' + seconds + ' Sekunden';
    	} else 
    		if (seconds < 10) {seconds = "0" + seconds;}
    		time = seconds + ' Sekunden';
    	}
    
        return time;
    }
    
    function count() {
    	// remove trigger
    	if (getState('countTrigger').val) {
    		setState('countTrigger', false);
    	}
    
    	if (countdown > 1) {
    		setState('countdown', seconds2text(--countdown));
    	} else {
    		clearInterval(interval);
    		interval = null;
    		setState('countdown', seconds2text(0));
    		setState('afterCount', true);
    	}
    }
    
    on('countTrigger', function (obj) {
        if (obj.newState.val === true || obj.newState.val === 'true' || obj.newState.val == 1) {
    		countdown = 9000;
            setState('countdown', seconds2text(countdown)); // 2h30min = 150min = 9000s
            setState('afterCount', false);
    		if (!interval) {		
    			count();
    			interval = setInterval(count, 1000);
    		}
        }    
    });
    
    // Wenn Wama an, Counter starten
    on('hm-rega.0.Waschmaschine', function (obj) { // Homematic Variable
        if (obj.newState.val === true || obj.newState.val === 'true' || obj.newState.val === 'läuft' || obj.newState.val == 1) {
            setState('countTrigger', true);
        }    
    });
    

    Ohne Gewähr. :)

    1 Reply Last reply
    0
    • coyoteC Offline
      coyoteC Offline
      coyote
      Most Active
      wrote on last edited by
      #6

      Danke dir Bluefox, werde dein Script nachher mal testen.

      Was muss ich hier in VIs dann eintragen?

      536_unbenannt.png

      1 Reply Last reply
      0
      • BluefoxB Offline
        BluefoxB Offline
        Bluefox
        wrote on last edited by
        #7

        Was für ein Widget ist das?

        1 Reply Last reply
        0
        • HomoranH Do not disturb
          HomoranH Do not disturb
          Homoran
          Global Moderator Administrators
          wrote on last edited by
          #8

          Das hast du mal in einem thread gebastelt um einen Countdown darzustellen.

          http://forum.iobroker.org/viewtopic.php … 5503#p5406

          Ich hab es jedoch nicht ans laufen bekommen :(

          Gruß

          Rainer

          kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

          der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

          1 Reply Last reply
          0
          • coyoteC Offline
            coyoteC Offline
            coyote
            Most Active
            wrote on last edited by
            #9

            Genau, das aus dem Thread.

            @Homoran: Echt nicht? Bei mir läuft das Ding. Ich weiß eben jetzt nur nicht was ich dort eintragen muss um nicht die Sekunden, sondern die 2,5h zu sehen.

            1 Reply Last reply
            0
            • BluefoxB Offline
              BluefoxB Offline
              Bluefox
              wrote on last edited by
              #10

              Nimm einfach basic-string-val.

              1 Reply Last reply
              0
              • coyoteC Offline
                coyoteC Offline
                coyote
                Most Active
                wrote on last edited by
                #11

                Läuft so leider nicht.

                script.js.testscript compile failed: Syntax error: unexpected token else

                1 Reply Last reply
                0
                • BluefoxB Offline
                  BluefoxB Offline
                  Bluefox
                  wrote on last edited by
                  #12

                  @coyote:

                  Läuft so leider nicht.

                  script.js.testscript compile failed: Syntax error: unexpected token else `
                  Da fehlten ein paar "{"

                  var interval = null;
                  var countdown = 9000;
                  
                  createState('countdown', seconds2text(countdown));
                  createState('afterCount', false);
                  createState('countTrigger', false);
                  
                  function seconds2text(_seconds) {
                      var sec_num = parseInt(_seconds, 10); // don't forget the second param
                      var hours   = Math.floor(sec_num / 3600);
                      var minutes = Math.floor((sec_num - (hours * 3600)) / 60);
                      var seconds = sec_num - (hours * 3600) - (minutes * 60);
                  
                      var time;
                      if (hours > 0) {
                          if (hours   < 10) {hours   = "0" + hours;}
                          if (minutes < 10) {minutes = "0" + minutes;}
                          if (seconds < 10) {seconds = "0" + seconds;}
                          time = hours + ' Stunden, ' + minutes + ' Minuten und ' + seconds + ' Sekunden';
                      } else    if (minutes > 0) {
                          if (minutes < 10) {minutes = "0" + minutes;}
                          if (seconds < 10) {seconds = "0" + seconds;}
                          time = minutes + ' Minuten und ' + seconds + ' Sekunden';
                      } else {
                          if (seconds < 10) {seconds = "0" + seconds;}
                          time = seconds + ' Sekunden';
                      }
                  
                      return time;
                  }
                  
                  function count() {
                      // remove trigger
                      if (getState('countTrigger').val) {
                          setState('countTrigger', false);
                      }
                  
                      if (countdown > 1) {
                          setState('countdown', seconds2text(--countdown));
                      } else {
                          clearInterval(interval);
                          interval = null;
                          setState('countdown', seconds2text(0));
                          setState('afterCount', true);
                      }
                  }
                  
                  on('countTrigger', function (obj) {
                      if (obj.newState.val === true || obj.newState.val === 'true' || obj.newState.val == 1) {
                          countdown = 9000;
                          setState('countdown', seconds2text(countdown)); // 2h30min = 150min = 9000s
                          setState('afterCount', false);
                          if (!interval) {
                              count();
                              interval = setInterval(count, 1000);
                          }
                      }
                  });
                  
                  // Wenn Wama an, Counter starten
                  on('hm-rega.0.Waschmaschine', function (obj) { // Homematic Variable
                      if (obj.newState.val === true || obj.newState.val === 'true' || obj.newState.val === 'läuft' || obj.newState.val == 1) {
                          setState('countTrigger', true);
                      }
                  });
                  
                  1 Reply Last reply
                  0
                  • coyoteC Offline
                    coyoteC Offline
                    coyote
                    Most Active
                    wrote on last edited by
                    #13

                    Ah ja, jetzt läuft es perfekt. Vielen Dank, Bluefox :mrgreen:

                    1 Reply Last reply
                    0
                    • K Offline
                      K Offline
                      klmf2
                      wrote on last edited by
                      #14

                      ist ja irgendwie schon älter, habe aber noch mal eine Frage.

                      Ich habe das Skript von Bluefox übernommen. Würde aber anstelle der 9000s gerne einen Wert aus einen Datenpunkt nehmen.

                      Den Datenpunkt habe ich bereits erstellt (Zahl), komme aber nicht weiter. Versucht habe ich schon:

                      on(idSchalter + 'countTrigger', function (obj) {
                          if (obj.newState.val === true || obj.newState.val === 'true' || obj.newState.val == 1) {
                              countdown = "javascript.0.Timer.TimerLena.Timerwert";
                              setState(idSchalter + 'countdown', seconds2text(countdown)); // 2h30min = 150min = 9000s
                              setState(idSchalter + 'afterCount', false);
                              if (!interval) {
                                  count();
                                  interval = setInterval(count, 1000);
                      

                      oder

                              countdown = 'javascript.0.Timer.TimerLena.Timerwert';
                      
                      

                      aber wenn ich den Counter dann beginne, wird der Countdown immer als 00s übernommen.

                      Mein Datenpunkt sieht aktuell wie folgt aus und hat den Wert 1800:

                      {
                        "from": "system.adapter.admin.0",
                        "ts": 1543496749271,
                        "common": {
                          "name": "Timerwert",
                          "role": "",
                          "type": "number",
                          "desc": "Manuell erzeugt",
                          "unit": "",
                          "min": 0,
                          "def": 0,
                          "read": true,
                          "write": true
                        },
                        "native": {},
                        "acl": {
                          "object": 1636,
                          "owner": "system.user.admin",
                          "ownerGroup": "system.group.administrator",
                          "state": 1636
                        },
                        "_id": "javascript.0.Timer.TimerLena.Timerwert",
                        "type": "state"
                      }
                      

                      Wahrscheinlich liegt es am Syntax?!

                      Grüße, Sebastian

                      1 Reply Last reply
                      0
                      • jedoJ Offline
                        jedoJ Offline
                        jedo
                        wrote on last edited by
                        #15

                        @klmf2:

                        countdown = 'javascript.0.Timer.TimerLena.Timerwert';
                           
                        ```` `  
                        

                        Versuche mal:

                        countdown = (getState('javascript.0.Timer.TimerLena.Timerwert').val);
                        

                        Viele Grüße,

                        Jens

                        1 Reply Last reply
                        0
                        Reply
                        • Reply as topic
                        Log in to reply
                        • Oldest to Newest
                        • Newest to Oldest
                        • Most Votes


                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        754

                        Online

                        32.6k

                        Users

                        82.1k

                        Topics

                        1.3m

                        Posts
                        Community
                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                        ioBroker Community 2014-2025
                        logo
                        • Login

                        • Don't have an account? Register

                        • Login or register to search.
                        • First post
                          Last post
                        0
                        • Home
                        • Recent
                        • Tags
                        • Unread 0
                        • Categories
                        • Unreplied
                        • Popular
                        • GitHub
                        • Docu
                        • Hilfe