Hallo Zusammen,
in einem größeren Projekt benötige ich eine wait bzw. sleep Funktion, damit ich nicht die maximale Anzahl gleichzeitiger RPC's überschreite. Leider funktioniert mein Ansatz (hier reduziert auf das eigentliche Problem) nicht, weil der Code ohne Rückmeldung auf einem Shelly Plus1 (aktuelle Firmware 0.12.0) abstürzt. Wäre toll, wenn jemand eine Erklärung dafür hätte.
Gruß Martin
[script][/script]
[script]let Shellyunixtime = 0; [/script]
[script]let updateShellytimeInterval = 5 * 1000; [/script]
[script]
[/script]
[script]function getShellyTime(){ [/script]
[script]Shelly.call("Shelly.GetStatus", {}, [/script]
[script]function (res, error_code, error_msg, ud ) { [/script]
[script]Shellyunixtime = res.sys.unixtime; [/script]
[script]print("Shellyunixtime:",Shellyunixtime); [/script]
[script]}, [/script]
[script]null); [/script]
[script]} [/script]
[script]
[/script]
[script]function wait(seconds) { [/script]
[script]let start = Shellyunixtime; [/script]
[script]let now = start; [/script]
[script]while (now <= (start + seconds)) { [/script]
[script]now = Shellyunixtime; [/script]
[script]} [/script]
[script]} [/script]
[script]
[/script]
[script]function testwait() { [/script]
[script]print("Start wait"); [/script]
[script]wait(10); [/script]
[script]print("End wait"); [/script]
[script]} [/script]
[script]
[/script]
[script]// Keep ShellyTime up to date [/script]
[script]Timer.set(updateShellytimeInterval, true, function () { [/script]
[script]getShellyTime(); [/script]
[script]}); [/script]
[script]
[/script]
[script]// Test wait [/script]
[script]Timer.set(updateShellytimeInterval*2, true, function () { [/script]
[script]testwait(); [/script]
[script]});[/script]
[script][/script]