Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Timer, Countdown

    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

    SOLVED Timer, Countdown

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      michihorn last edited by

      Hallo
      gibt es hier evtl. schon ein Script das folgendes kann:
      Habe in zwei Datenpunkten Stunde=23 und Minute=15 eine Triggeruhrzeit.
      Ich möchte nun von der Aktuellen Uhrzeit aus, wissen wie lange es noch bis zur Triggerzeit dauert.
      Gruß
      Michael

      crunchip 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @michihorn last edited by paul53

        @michihorn
        Versuche es mal so:

        // Countdown bis zum Rolladen Runterfahren
        
        createState("javascript.0.Rolladen.Zeitsteuerung.EINS.Restzeit",{type: 'string', read: true,write: true,desc: "Countdown bis zum Schließen der Rolladen"'});
         
        var R_stunde = getState("javascript.0.Rolladen.Zeitsteuerung.EINS.R_stunde").val;
        var R_minute = getState("javascript.0.Rolladen.Zeitsteuerung.EINS.R_minute").val;
        var R_time = 60 * R_stunde + R_minute;
        
        schedule("* * * * *", function () {
            let now = new Date();
            now = 60 * now.getHours() + now.getMinutes();
            let diff = (R_time - now);
            if(diff < 0) diff = 0;
            let h = Math.floor(diff / 60);
            let m = diff - h * 60;
            let restzeit = (h + " Stunden, " + m + " Minuten");
            log(restzeit);
            setState("javascript.0.Rolladen.Zeitsteuerung.EINS.Restzeit", restzeit, true);
        });
        
        on('javascript.0.Rolladen.Zeitsteuerung.EINS.R_stunde', function(dp) {
            R_stunde = dp.state.val;
            R_time = 60 * R_stunde + R_minute;
        });
        
        on('javascript.0.Rolladen.Zeitsteuerung.EINS.R_minute', function(dp) {
            R_minute = dp.state.val;
            R_time = 60 * R_stunde + R_minute;
        });
        
        1 Reply Last reply Reply Quote 1
        • crunchip
          crunchip Forum Testing Most Active @michihorn last edited by

          @michihorn sowas in der Art?
          https://forum.iobroker.net/topic/22532/vorlage-blockly-script-für-stoppuhr-laufzeiten-aufzeichen

          M 1 Reply Last reply Reply Quote 0
          • M
            michihorn @crunchip last edited by

            @crunchip Dankeschön, ich bin kein Freund von Blocky.
            Mein Script soll ganz simpel die noch verbleibenden Stunden, Minuten, Sekunden von Jetzt ab, bis zu der Zeit in den Datenpunkten "Stunde" und "Minute" berechnen.

            Das war mein Ansatz:

            // Countdown bis zum Rolladen Runterfahren
            
            createState("javascript.0.Rolladen.Zeitsteuerung.EINS.Restzeit",{read: true,write: true,desc: "Countdown bis zum Schließen der Rolladen", def: ''});
            
            var R_stunde=getState("javascript.0.Rolladen.Zeitsteuerung.EINS.R_stunde").val;
            var R_minute=getState("javascript.0.Rolladen.Zeitsteuerung.EINS.R_minute").val;
            var timer;
            var startStamp = Date.now();
            var newStamp =  R_stunde + ":" + R_minute;
            log (newStamp)
             schedule("*/1 * * * *", function () {
            function updateClock() {
                let newStamp = Date.now();
                let diff = Math.round((newStamp - startStamp)/1000);
                let d = Math.floor(diff/(24*60*60));
                diff = diff-d*24*60*60;
                let h = Math.floor(diff/(60*60));
                diff = diff-h*60*60;
                let m = Math.floor(diff/(60));
                diff = diff-m*60;
                let s = diff;
                let restzeit = (d+" Tage, "+h+" Stunden, "+m+" Minuten, "+s+" Sekunden");
                log(restzeit);
                setState("javascript.0.Rolladen.Zeitsteuerung.EINS.Restzeit", restzeit, true);
            };
            ;
            });
            
            paul53 2 Replies Last reply Reply Quote 0
            • paul53
              paul53 @michihorn last edited by

              @michihorn sagte:

              Das war mein Ansatz:

              Es wird die Zeitdifferenz zwischen Skriptstart und aktueller Zeit berechnet.

              M 1 Reply Last reply Reply Quote 0
              • M
                michihorn @paul53 last edited by

                @paul53
                Hab es nochmal überarbeitet:
                Es trotzdem nichts im Datenpunkt "Restlaufzeit" angezeigt.

                // Countdown bis zum Rolladen Runterfahren
                
                createState("javascript.0.Rolladen.Zeitsteuerung.EINS.Restzeit",{read: true,write: true,desc: "Countdown bis zum Schließen der Rolladen", def: ''});
                
                var R_stunde=getState("javascript.0.Rolladen.Zeitsteuerung.EINS.R_stunde").val;
                var R_minute=getState("javascript.0.Rolladen.Zeitsteuerung.EINS.R_minute").val;
                
                 schedule("*/1 * * * *", function () {
                function updateClock() {
                    let Endzeit =  R_stunde + ":" + R_minute;
                    let startZeit = Date.now();
                    let diff = Math.round((Endzeit - startZeit)/1000);
                    let d = Math.floor(diff/(24*60*60));
                    diff = diff-d*24*60*60;
                    let h = Math.floor(diff/(60*60));
                    diff = diff-h*60*60;
                    let m = Math.floor(diff/(60));
                    diff = diff-m*60;
                    let s = diff;
                    let restzeit = (d+" Tage, "+h+" Stunden, "+m+" Minuten, "+s+" Sekunden");
                    log(restzeit);
                    setState("javascript.0.Rolladen.Zeitsteuerung.EINS.Restzeit", restzeit, true);
                }
                });
                
                1 Reply Last reply Reply Quote 0
                • paul53
                  paul53 @michihorn last edited by paul53

                  @michihorn
                  Versuche es mal so:

                  // Countdown bis zum Rolladen Runterfahren
                  
                  createState("javascript.0.Rolladen.Zeitsteuerung.EINS.Restzeit",{type: 'string', read: true,write: true,desc: "Countdown bis zum Schließen der Rolladen"'});
                   
                  var R_stunde = getState("javascript.0.Rolladen.Zeitsteuerung.EINS.R_stunde").val;
                  var R_minute = getState("javascript.0.Rolladen.Zeitsteuerung.EINS.R_minute").val;
                  var R_time = 60 * R_stunde + R_minute;
                  
                  schedule("* * * * *", function () {
                      let now = new Date();
                      now = 60 * now.getHours() + now.getMinutes();
                      let diff = (R_time - now);
                      if(diff < 0) diff = 0;
                      let h = Math.floor(diff / 60);
                      let m = diff - h * 60;
                      let restzeit = (h + " Stunden, " + m + " Minuten");
                      log(restzeit);
                      setState("javascript.0.Rolladen.Zeitsteuerung.EINS.Restzeit", restzeit, true);
                  });
                  
                  on('javascript.0.Rolladen.Zeitsteuerung.EINS.R_stunde', function(dp) {
                      R_stunde = dp.state.val;
                      R_time = 60 * R_stunde + R_minute;
                  });
                  
                  on('javascript.0.Rolladen.Zeitsteuerung.EINS.R_minute', function(dp) {
                      R_minute = dp.state.val;
                      R_time = 60 * R_stunde + R_minute;
                  });
                  
                  1 Reply Last reply Reply Quote 1
                  • M
                    michihorn last edited by

                    Danke Paul super!!!!!

                    1 Reply Last reply Reply Quote 0
                    • First post
                      Last post

                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    446
                    Online

                    31.8k
                    Users

                    80.0k
                    Topics

                    1.3m
                    Posts

                    javascript
                    3
                    7
                    568
                    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