NEWS
schedule mit Date Objekt -> falscher Zeitpunkt?
-
Hi,
entweder mache ich etwas falsch oder da ist was buggy. Folgendes Skript (vereinfacht):
function mittagsSchlafMax2H() { let state = getState("alias.0.scenes.Mittagsschlaf.state"); if (state.val) { let time = new Date(state.ts); time.setHours(time.getHours() + 2, time.getMinutes() + 15); ... log("Scheduling für " + time); schedule(time, () => { log("Mittagsschlaf lang genug."); setState("alias.0.shadow.Marwin.shadow", true); }); } } mittagsSchlafMax2H();
-> schedule(time, () => {... }); soll, wenn ich die Doku richtig verstehe, genau zu dem Zeitpunkt aufgerufen werden und das nur einmal. Hat aber nicht funktioniert, folgendes Log:
2020-03-19 14:08:03.922 - info: javascript.0 (4952) script.js.Schlafen.kinderSchlafen: Scheduling für Thu Mar 19 2020 14:28:31 GMT+0100 (Central European Standard Time) 2020-03-19 14:09:00.001 - info: javascript.0 (4952) script.js.Schlafen.kinderSchlafen: Mittagsschlaf lang genug. 2020-03-19 14:10:00.001 - info: javascript.0 (4952) script.js.Schlafen.kinderSchlafen: Mittagsschlaf lang genug. 2020-03-19 14:11:00.000 - info: javascript.0 (4952) script.js.Schlafen.kinderSchlafen: Mittagsschlaf lang genug. 2020-03-19 14:12:00.000 - info: javascript.0 (4952) script.js.Schlafen.kinderSchlafen: Mittagsschlaf lang genug. 2020-03-19 14:13:00.000 - info: javascript.0 (4952) script.js.Schlafen.kinderSchlafen: Mittagsschlaf lang genug. 2020-03-19 14:14:00.001 - info: javascript.0 (4952) script.js.Schlafen.kinderSchlafen: Mittagsschlaf lang genug. 2020-03-19 14:15:00.000 - info: javascript.0 (4952) script.js.Schlafen.kinderSchlafen: Mittagsschlaf lang genug.
-> hat also bei der nächsten vollen Minute getriggert und dann jede Minute? Urgs...
Ist das ein Bug? Oder stimmt die Doku nicht? (Zitat doku: "Pattern can be a Javascript Date object (some specific time point) - in this case only it will be triggered only one time.").
Oder mache ich was falsch?Viele Grüße,
Garfonso -
Ist auch so in der Typenprüfung:
function schedule(date: Date, callback: () => void): any;
Mal einen anderen Variablenamen probiert?
-
@Garfonso
Ist wohl ein Bug. Das hier geht:schedule(time.getTime(), () => {
-
@ticaki
Danke fürs testen. Auf die Idee bin ich nicht gekommen.Nachtrag: Es gibt sogar schon ein Issue dazu (ups). https://github.com/ioBroker/ioBroker.javascript/issues/325