NEWS
SOLVED Timer, Countdown
-
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 -
@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; });
-
-
@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); }; ; });
-
@michihorn sagte:
Das war mein Ansatz:
Es wird die Zeitdifferenz zwischen Skriptstart und aktueller Zeit berechnet.
-
@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); } });
-
@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; });
-
Danke Paul super!!!!!