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
Die Verwendung von Skripten erfolgt ausdrücklich auf eigene Gefahr. Weder Shelly noch die jeweiligen Autoren oder Entwickler der Skripte übernehmen irgendeine Form der Haftung für mögliche Schäden, Fehlfunktionen, Datenverluste oder anderweitige Beeinträchtigungen, die durch die Nutzung dieser Skripte entstehen könnten. Bitte stellen Sie vor dem Einsatz sicher, dass Sie den Quellcode verstehen und sich der möglichen Auswirkungen bewusst sind. Die Skripte werden ohne Gewähr bereitgestellt und unterliegen keiner regelmäßigen Wartung oder offiziellen Unterstützung.
Wenn Sie eigene Skripte bereitstellen, achten Sie bitte darauf, eine klare Beschreibung, eventuelle Einschränkungen und Sicherheitsaspekte zu dokumentieren. Beachten Sie zudem, dass Nutzer Ihre Skripte grundsätzlich auf eigenes Risiko verwenden. Eine Haftung für Schäden ist ausgeschlossen, sofern diese nicht vorsätzlich oder grob fahrlässig verursacht wurden oder gesetzlich anderweitig geregelt ist.
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: