Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [gelöst] Countdown Script umbauen

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [gelöst] Countdown Script umbauen

    This topic has been deleted. Only users with topic management privileges can see it.
    • coyote
      coyote Most Active last edited by

      Danke dir Bluefox, werde dein Script nachher mal testen.

      Was muss ich hier in VIs dann eintragen?

      536_unbenannt.png

      1 Reply Last reply Reply Quote 0
      • Bluefox
        Bluefox last edited by

        Was für ein Widget ist das?

        1 Reply Last reply Reply Quote 0
        • Homoran
          Homoran Global Moderator Administrators last edited by

          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

          1 Reply Last reply Reply Quote 0
          • coyote
            coyote Most Active last edited by

            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 Reply Quote 0
            • Bluefox
              Bluefox last edited by

              Nimm einfach basic-string-val.

              1 Reply Last reply Reply Quote 0
              • coyote
                coyote Most Active last edited by

                Läuft so leider nicht.

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

                1 Reply Last reply Reply Quote 0
                • Bluefox
                  Bluefox last edited by

                  @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 Reply Quote 0
                  • coyote
                    coyote Most Active last edited by

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

                    1 Reply Last reply Reply Quote 0
                    • K
                      klmf2 last edited by

                      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 Reply Quote 0
                      • jedo
                        jedo last edited by

                        @klmf2:

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

                        Versuche mal:

                        countdown = (getState('javascript.0.Timer.TimerLena.Timerwert').val);
                        
                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        772
                        Online

                        31.7k
                        Users

                        79.9k
                        Topics

                        1.3m
                        Posts

                        6
                        15
                        3853
                        Loading More Posts
                        • Oldest to Newest
                        • Newest to Oldest
                        • Most Votes
                        Reply
                        • Reply as topic
                        Log in to reply
                        Community
                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                        The ioBroker Community 2014-2023
                        logo