Hallo zusammen,
gibt es eine Möglichkeit die Restlaufzeit von Timern zu ermitteln ?
Ich habe einen Timer mit Timer.set gestartet.
Nun möchte ich in meinem Skript die Restlaufzeit auslesen.
Hat jmd. eine Idee wie das geht ?
Danke.
Patrick
VPN/Proxy erkannt
Es scheint, dass Sie einen VPN- oder Proxy-Dienst verwenden. Bitte beachten Sie, dass die Nutzung eines solchen Dienstes die Funktionalität dieser Webseite einschränken kann.
Hallo zusammen,
gibt es eine Möglichkeit die Restlaufzeit von Timern zu ermitteln ?
Ich habe einen Timer mit Timer.set gestartet.
Nun möchte ich in meinem Skript die Restlaufzeit auslesen.
Hat jmd. eine Idee wie das geht ?
Danke.
Patrick
let t = 0;
let tlong = 120;
// Timer starten
let timer = Timer.set(1000, true, function () { // jede Sekunde
t++ ;
print(t + " Sec.");
if (t == 60) {
print("timer läuft noch: " + (tlong - t) + " Sckunden")
}
if (t >= tlong) { // Nach 2 Minuten Timer stoppen
Timer.clear(timer);
print("Timer gestoppt nach 2 Minuten.");
}
});
Alles anzeigen
Hallo Viedotraum
vielen Dank.
Ohne es zu testen bin ich mir sicher das es funktioniert.
Einen Funktionsaufruf für den Registerwert gibt es nicht ?
Patrick
Hab es nun doch etwas anders gelöst.
Beim Timer-Start, zähle ich auf die aktuelle Unixtime die Timer-Zeit.
Wenn jetzt nach der Remaining-Time gefragt wird,
ziehe ich von der Endzeit die aktuelle Zeit ab und habe somit die Remaining Time und
der Timer wird nicht unterbrochen.
// Test_Remaining_Timer_v1.0
// 17.12.2024 by PatrickR
//
// ****************************************************************************************
// ****************************************************************************************
// ******************************* GLOBAL *******************************
// ****************************************************************************************
// ****************************************************************************************
let tms_shellyTimeEnd = 0;
let timer_handler = null;
// ****************************************************************************************
// ****************************************************************************************
// ***************************** FUNCTION ******************************
// ****************************************************************************************
// ****************************************************************************************
function fkt_calc_endtime(tm_timer) {
let tms_shellyTimeCur = Shelly.getComponentStatus("sys").unixtime;
tms_shellyTimeEnd = tms_shellyTimeCur + Math.round(tm_timer * 60);
}
function strRight(fulltext, numberChar) {
let result = fulltext.substr(fulltext.length - numberChar, numberChar);
return result
}
function fkt_remaining_time() {
let tms_shellyTimeCur = Shelly.getComponentStatus("sys").unixtime;
let tms_newShellyTime = tms_shellyTimeEnd - tms_shellyTimeCur;
let t_hour = "00";
let t_min = "00";
let t_sec = "00";
if (tms_newShellyTime > 0) {
t_hour = t_hour + Math.floor(tms_newShellyTime / 3600);
t_min = t_min + Math.floor(tms_newShellyTime / 60) % 60;
t_sec = t_sec + (tms_newShellyTime % 60);
}
else { // ***** else :: ONLY for TEST *****
Timer.clear(timer_handler); // ***** else :: ONLY for TEST *****
} // ***** else :: ONLY for TEST *****
let retvalue = strRight(t_hour, 2) + ":" + strRight(t_min, 2) + ":" + strRight(t_sec, 2) + " (hh:mm:ss)";
return retvalue;
}
// ****************************************************************************************
// ****************************************************************************************
// ***************************** ONLY TEST ******************************
// ****************************************************************************************
// ****************************************************************************************
function fkt_test_remaining_time() {
print(fkt_remaining_time());
}
fkt_calc_endtime(0.28); // tm_timer in minutes
fkt_test_remaining_time();
timer_handler = Timer.set(5 * 1000, true, fkt_test_remaining_time);
Alles anzeigen
PatrickR In der bereits in den Startlöchern befindlichen FW 1.5 ist diese Möglichkeit der "remain time" Abfrage neu implementiert.
Mit der FW 1.5 würde es dann so aussehen: