Beiträge von chris48

    Restart indication listener hat nicht gereicht. Aber Reload ist die Lösung. Die Funktion sieht jetzt so aus:


    function _API_Callback_Error()

    {

    console.log("OnObjSrvError");

    location.reload(); // Fenster neu laden

    }


    Die Ursache für den "OnObjSrvError" kann ich nicht ausmachen. Der Fehler tritt sporadisch im Interface zu dem KNX-Ethernet-Gateway auf, zu dem ich keinen Zugang habe, im Schnitt einmal pro Tag. Jetzt wird halt das Fenster neu geladen und damit läuft das Skript seit Tagen einwandfrei.


    Problem gelöst. Nochmals vielen Dank!

    Ja, das Lebenszeichen kommt weiter, es kommen nur keine Daten der KNX-Anlage mehr herein.


    Ich habe nun das mitgelieferte Interface-Skript ein bisschen studiert. Es gibt da eine Funktion, die bei einem Callback-Fehler aufgerufen wird, die bisher nur einen Log-Eintrag machte. Die habe ich ergänzt um den Restart des IndicationListener:


    function _API_Callback_Error()

    {

    console.log("OnObjSrvError");


    baos.API_StopIndicationListener(); // Stop indication listener

    baos.API_StartIndicationListener("Default"); // Restart indication listener

    }


    Meine Vermutung ist nämlich, dass dieser bei einem Fehler aufhört zu funktionieren.


    Außerdem hatte ich in meinem Skript ergänzt:


    window.addEventListener("error", fehlerbehandlung);


    function fehlerbehandlung (errorEvent)

    {


    opener.killme(); // Fenster vom opener schließen lassen, damit es neu geöffnet wird


    }


    Reload könnte die bessere Lösung sein. Ich wusste gar nicht, dass es diese Funktion gibt. Das probiere ich als nächstes.

    Der Restart klappt, aber das Absturzproblem ist leider noch nicht aus der Welt.


    Ich habe in die OnInit-Routine eingebaut:


    window.addEventListener("error", fehlerbehandlung);


    dazu diese Funktion in das Skript


    function fehlerbehandlung (errorEvent)

    {

    var fehler = "Fehlermeldung:\n" + errorEvent.message + "\n" + errorEvent.filename + "\n" + errorEvent.lineno;


    WriteProto(fehler);

    errorEvent.preventDefault();


    return true;

    }


    Nun wird in meinem Protokollfeld der Fehler gemeldet, aber immer mit Zeilennummer 0.


    Außerdem gab es im Skript schon


    function _API_Callback_Error()

    {

    console.log("OnObjSrvError"); // Fehlermeldung -> Console

    }


    Eine von beiden schlägt vor einem der Abstürze an. Die Fehlerursache liegt außerhalb meines Skripts. Deshalb müsste ich es jetzt hinkriegen, das Slave-Fenster nach der Fehlermeldung zu schließen, damit der Master es neu öffnet. Ein einfaches 'close;' hat nicht genügt. Wie macht man das?

    Im Log des Master erschien 'livesign received' nicht. Ich habe daraufhin doch Apache eingerichtet und bin zur ersten Version zurückgekehrt. Jetzt läuft der Watchdog wie er soll und der automatische Restart klappt. Ich füge das nun in mein Skript ein und hoffe, dass das Absturzproblem damit aus der Welt ist.


    Herzlichen Dank nochmal!

    Wenn nur die betr. Seite abstürzt, könnte man wahrscheinlich auch einen Neustart hinbekommen: Die Seite mit window.open öffnen und Lebenszeichen an die öffnende Seite senden lassen. Bleiben diese aus, kann man davon ausgehen, dass die Seite abgestürzt ist, sie schließen und neu öffnen.


    Lebenszeichen senden? Wie kann man das machen? (Ich bin Anfänger.) Kannst du mir ein Code-Beispiel geben?

    Danke für die Antwort. Es sind vier Scripts, davon drei nicht von mir, und sie sind sehr umfangreich. Der Browser stürzt nicht ab, die Seite "lebt" noch (die Uhrzeitanzeige läuft) und reagiert sogar noch auf einen einzigen Klick, danach nicht mehr. Die im Hintergrund laufenden js-Routinen, die u. a. auf die Bewegungsmelder reagieren, Lichtautomaten und die Alarmanlage darstellen, funktionieren nicht mehr.

    Hallo zusammen,


    ich bin JavaScript-Neuling und habe eine Applikation geschrieben, die aus einer HTML-Seite besteht und mehrere JavaScript-Komponenten einbettet, darunter JQuery- und Json-Skripte sowie ein API zu einem KNX-System zur Haus-Automatisierung. Diese drei stammen von dem Hersteller des KNX-Gateways und ich verstehe den Code nur teilweise. Der Zugriff aus meinem Skript, das Jalousien, Rolläden, Schalter und Lampen steuert und Komponenten einer Alarmanlage überwacht, erfolgt über Callback-Funktionen.

    Alles funktioniert scheinbar einwandfrei, doch nicht im Dauerbetrieb. Nach einigen Stunden, manchmal nach einigen Tagen, stürzt die App ab. Ruft man die Seite im Browser neu auf, läuft alles wieder für einige Zeit.

    Der Browser läuft ohne Bildschirm auf einem alten Mac mini unter MacOS 10.11.6 (EL Capitan), auf den ich über VNC zugreife. Ich habe neben Firefox auch Safari und Chrome probiert, ohne besseres Ergebnis. Mit den eingebauten Debuggern konnte ich keinen Fehler finden.

    Meine Frage: Gibt es eine Möglichkeit, das Ganze zu überwachen und bei Crash automatisch neu zu starten?

    Chris