NEWS

Frage zur Astrofunktion



  • Also bei mir ist da definitiv noch mehr im Argen. Nachdem gestern Abend mal wieder nichts mehr lief - IOBroker bekam nichts mehr von Homematic (über den hm-rpc-Adapter) mit geschweige denn dass die Astrofunktion oder andere Javascripte gelaufen wären- habe ich den PC neu gestartet. Danach lief erstmal alles wieder, nur die Astrofunktion gab nichts von sich… Heute ist es nun so (wie schon manchmal vorher) dass mir IOBroker den gesamten Arbeitsspeicher (3GB installiert) verbrät und somit der gesamte PC unheimlich langsam wird.
    250_ram_auslastung2.jpg
    Wenn auf dem PC alles normal läuft was ich drauf habe sind noch 1,5 bis 1 GB frei. Ich hatte aber das Verhalten schon des Öfteren dass die node-Prozesse den RAM "zumachen" und dann alles logischerweise so zäh wird dass eigentlich nichts mehr geht.

    Was könnte denn die Ursache dafür sein?


  • Forum Testing

    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.


  • Forum Testing

    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?


  • Forum Testing

    @Bluefox - mach ich direkt heute Abend.

    Ich geb Dir morgen früh eine Rückinfo ob es funktioniert hat.


  • Forum Testing

    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…


  • Forum Testing

    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.


  • Forum Testing

    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:

    5044_unbenannt.png

    /**
     * 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.


Log in to reply
 

Suggested Topics

1.9k
Online

32.1k
Users

38.7k
Topics

525.3k
Posts