NEWS
SOLVED Frage zur Astrofunktion
-
Aktuell habe ich immer noch Probleme mit dem "Schedule" in Verbindung mit der Astro Funktion.
Um das Problem mal etwas weiter einzukreisen habe ich folgendes gemacht.
Alle Instanzen des Javascript-Adapters entfernt (ich hatte 2 - einen zum Testen und einen produktiven)
Alle Updates durchgeführt (auch den js-controller - auf Version 0.6.4)
Dann eine neue Javascript Instanz erzeugt und dort die Einstellungen (Breite und Länge) vorgenommen.
Dann folgendes Testscript erzeugt:
schedule({astro: "sunrise"}, function () { log("XGWSTRE - Sunrise!",'warn'); }); schedule({astro: "sunriseEnd"}, function () { log("XGWSTRE - SunriseEnd!",'warn'); }); schedule({astro: "goldenHourEnd"}, function () { log("XGWSTRE - Golden Hour End!",'warn'); }); schedule({astro: "sunsetStart"}, function () { log("XGWSTRE - sunsetStart!",'warn'); }); schedule({astro: "sunset"}, function () { log("XGWSTRE - sunset!",'warn'); }); schedule({astro: "dusk"}, function () { log("XGWSTRE - dusk!",'warn'); }); schedule({astro: "nauticalDusk"}, function () { log("XGWSTRE - Nauticaldusk!",'warn'); }); schedule({astro: "night"}, function () { log("XGWSTRE - Night!",'warn'); }); schedule({astro: "nightEnd"}, function () { log("XGWSTRE - NightEnd!",'warn'); }); schedule({hour: 20, minute: 30}, function () { log("XGWSTRE - manuell 20.30 Uhr",'warn'); }); schedule({hour: 20, minute: 55}, function () { log("XGWSTRE - manuell 20.55 Uhr",'warn'); }); schedule({hour: 06, minute: 10}, function () { log("XGWSTRE - manuell 06.10 Uhr",'warn'); }); schedule({hour: 06, minute: 55}, function () { log("XGWSTRE - manuell 06.55 Uhr",'warn'); });
Anschließend den Service neu gestartet.
Folgendes war im Log zu beobachten:
2015-04-26 20:30:00.394 - warn: javascript.0 script.js.xxxTESTSCRIPTxxx: XGWSTRE - manuell 20.30 Uhr 2015-04-26 20:42:21.494 - warn: javascript.0 script.js.xxxTESTSCRIPTxxx: XGWSTRE - sunsetStart! 2015-04-26 20:46:06.276 - warn: javascript.0 script.js.xxxTESTSCRIPTxxx: XGWSTRE - sunset! 2015-04-26 20:55:00.389 - warn: javascript.0 script.js.xxxTESTSCRIPTxxx: XGWSTRE - manuell 20.55 Uhr 2015-04-26 21:23:41.083 - warn: javascript.0 script.js.xxxTESTSCRIPTxxx: XGWSTRE - dusk! 2015-04-26 22:11:39.272 - warn: javascript.0 script.js.xxxTESTSCRIPTxxx: XGWSTRE - Nauticaldusk! 2015-04-26 23:09:08.486 - warn: javascript.0 script.js.xxxTESTSCRIPTxxx: XGWSTRE - Night!
und dann heute Morgen wo eigentlich die sunrise-schedules greifen sollten…
2015-04-27 06:10:00.398 - warn: javascript.0 script.js.xxxTESTSCRIPTxxx: XGWSTRE - manuell 06.10 Uhr 2015-04-27 06:55:00.389 - warn: javascript.0 script.js.xxxTESTSCRIPTxxx: XGWSTRE - manuell 06.55 Uhr
kein sunrise oder sunriseEnd
Das Script läuft allerdings, die schedule-Befehle die eine feste Zeit hinterlegt haben (06:10 und 06:55) werden ausgeführt.
Wenn ich jetzt irgendetwas an dem Script ändere und dann speichere (egal was) dann werden die schedule-Befehle heute Abend wieder ausgeführt,
die morgen früh nicht.
Wenn ich noch weiter zur Fehlersuche beitragen kann, ich bin zu allen Schandtaten bereit.
-
Habe jetzt auch den Test gestartet. Werde Morgen schauen, ob es durchgelaufen ist.
-
Da bin ich aber mal gespannt. Danke schön.
Bei mir ist er wieder bis "Night" gekommen, dann war wieder Schluss "NightEnd" hat schon nicht mehr ausgelöst.
-
Kannst du Zeilen ab 808 in /opt/iobroker/node_modules/iobroker.javascript/javascript.js umschreiben?
date.setDate(date.getDate() + 1); date.setMinutes(0); date.setHours(0); date.setSeconds(0); date.setMilliseconds(0);
in
date.setDate(date.getDate() + 1); date.setMinutes(1); // Somtimes timer fires at 23:59:59 date.setHours(0); date.setSeconds(0); date.setMilliseconds(0); date.setMinutes(-date.getTimezoneOffset());
Und dann javascript adapter neu starten?
-
@Bluefox - mach ich direkt heute Abend.
Ich geb Dir morgen früh eine Rückinfo ob es funktioniert hat.
-
gegen 04:00 Uhr kam schon der log Eintrag für nightEnd, gerade dann sunrise.
Es scheint zu funktionieren. Ich beobachte das noch mal ein paar Tage und markiere den Beitrag dann als gelöst.
Danke Blufox…
-
Ich hab gesehen, Du hast schon ein Update des JavaScript Adapters fertig.
Bisher ist auch alles ordnungsgemäß gelaufen
Daher habe ich den Vorgang jetzt als gelöst markiert.
-
Das Ändern des Betreff geht wohl nur wenn man den Thread selbst geöffnet hat.
Das müsstest DU also machen @thisoft
-
Der Betreff ist ja schon geändert…?
Seit dem letzten Update Mittwoch Abend läuft die Astrofunktion. Allerdings tat sie das bei mir vorher auch schon einige Zeit um dann auch mal wieder auszusetzen. Ich behalte mal den Optimismus dass es jetzt korrekt läuft.
-
Hallo zusammen,
ich nutze auch seit einer Weile die Astro Funktion um zwei Objekte ("Hell" [ja/nein] und "Dunkel" [ja/nein]) zu ändern.
Entsprechend wird bei mir die Beleuchtung & Rollladensteuerung geschaltet.
Zu Debugging-Zwecken sende ich außerdem zusätzlich noch Telegram Messages an den jeweiligen Events.
Siehe:
/** * Beschreibe diese Funktion … */ function update_uhrzeit_hell_dunkel() { setState("javascript.0.Umwelt_Dunkel_Uhrzeit"/*Umwelt_Dunkel_Uhrzeit*/, formatDate(getDateObject(getAstroDate("dusk", undefined, 0)), "hh:mm"), true); setState("javascript.0.Umwelt_Hell_Uhrzeit"/*Umwelt_Hell_Uhrzeit*/, formatDate(getDateObject(getAstroDate("dawn", undefined, 0)), "hh:mm"), true); } /** * Beschreibe diese Funktion … */ function alle_Zeiten_ausgeben() { console.log(getAstroDate("goldenHour", undefined, 0)); console.log(getAstroDate("sunsetStart", undefined, 0)); console.log(getAstroDate("sunset", undefined, 0)); console.log(getAstroDate("dusk", undefined, 0)); console.log(getAstroDate("nauticalDusk", undefined, 0)); console.log(getAstroDate("night", undefined, 0)); console.log(getAstroDate("nadir", undefined, 0)); console.log(getAstroDate("nightEnd", undefined, 0)); console.log(getAstroDate("nauticalDawn", undefined, 0)); console.log(getAstroDate("dawn", undefined, 0)); console.log(getAstroDate("sunrise", undefined, 0)); console.log(getAstroDate("sunriseEnd", undefined, 0)); console.log(getAstroDate("goldenHourEnd", undefined, 0)); } schedule({astro: "nadir", shift: 0}, function () { update_uhrzeit_hell_dunkel(); }); schedule({astro: "sunset", shift: 0}, function () { setState("javascript.0.Umwelt_Dunkel"/*Umwelt_Dunkel*/, true, true); sendTo("telegram.0", "send", { text: 'Umwelt Dunkel ja' }); }); schedule({astro: "dusk", shift: 0}, function () { setState("javascript.0.Umwelt_Hell"/*Umwelt_Hell*/, false, true); sendTo("telegram.0", "send", { text: 'Umwelt Hell nein' }); }); schedule({astro: "dawn", shift: 0}, function () { setState("javascript.0.Umwelt_Hell"/*Umwelt_Hell*/, true, true); sendTo("telegram.0", "send", { text: 'Umwelt Hell ja' }); }); schedule({astro: "sunriseEnd", shift: 0}, function () { setState("javascript.0.Umwelt_Dunkel"/*Umwelt_Dunkel*/, false, true); sendTo("telegram.0", "send", { text: 'Umwelt Dunkel nein' }); });
Leider ist mir jetzt aufgefallen dass immer 2x das jeweilige Event ausgelöst wird bei der Astro-Funktion. Sprich die Objekte 2x aktualisiert & 2x die Telegram Messages geschickt. Teilweise auch um einige Minuten versetzt…
Ist das ansonsten auch noch jemandem aufgefallen? Bei mir ist es ein Problem, da zb. wenn es Nacht ist, die Rollläden runter gehen. Wenn diese aber noch offen bleiben sollen stoppe ich manuell direkt am Aktor. Wenige Minuten später wird aber die Astro Funktion nochmal ausgelöst und sie schließen sich wieder...
Genauso verhält es sich mit der "Abendbeleuchtung"
Hoffe auf Feedback.