NEWS
Javascriptadapter neustart bei Fehler trotz Catch-Block
-
Hallo Zusammen,
seit längerem nutze ich das NPM modul "nefit-easy-commands" in folgender Weise um aktuelle Daten meiner Heizung abzufragen:const NefitEasyClient = require('nefit-easy-commands'); function WerteAuslesen() { // Instantiate client const client = NefitEasyClient({ serialNumber : "xx", accessKey : "yy", password : "zz", }); // Connect client and retrieve status and pressure. client.connect().then( () => { return [ client.status(), client.pressure() ]; }).spread((status, pressure) => { console.log("Temperature is set to " + status['temp setpoint'].toFixed(1) + " °C, current is " + status['in house temp'].toFixed(1) + " °C.\n" + "Outside temperature is "+status['outdoor temp'].toFixed(1)+" °C.\n" + "User Mode is "+status['user mode']+".\n" + "System pressure is " + pressure.pressure + " " + pressure.unit); }).catch((e) => { console.error('Error: ' + e); }).finally(() => { client.end(); }); } schedule({minute: [12]}, WerteAuslesen);
Das Funktioniert schon seit Wochen super (mein ioBroker läuft in einem Docker Container auf meinem Synology NAS).
Seit gestern bekomme ich sporadisch (ca. einmal pro Tag) folgende Fehlermeldung:host.ioBroker 2019-06-02 12:12:01.565 info Restart adapter system.adapter.javascript.0 because enabled host.ioBroker 2019-06-02 12:12:01.565 error instance system.adapter.javascript.0 terminated with code 0 (OK) Caught 2019-06-02 12:12:01.565 error by controller[0]: errno: 'ECONNRESET', code: 'ECONNRESET', syscall: 'read' } Caught 2019-06-02 12:12:01.565 error by controller[0]: at TLSWrap.onread (net.js:622:25) Caught 2019-06-02 12:12:01.564 error by controller[0]: { Error: read ECONNRESET javascript.0 2019-06-02 12:12:01.533 error at TLSWrap.onread (net.js:622:25) javascript.0 2019-06-02 12:12:01.533 error Error: read ECONNRESET javascript.0 2019-06-02 12:12:01.532 error uncaught exception: read ECONNRESET javascript.0 2019-06-02 12:12:01.504 info System pressure is 1.2 bar javascript.0 2019-06-02 12:12:01.504 info User Mode is manual. javascript.0 2019-06-02 12:12:01.504 info Outside temperature is 27.0 °C. javascript.0 2019-06-02 12:12:01.504 info script.js.common.Nefit: Temperature is set to 11.0 °C, current is 23.4 °C.
Ich dachte bisher, dass der Catch Block (welcher auch ausgeführt wird) verhindert, dass der Fehler zum Absturz des Adapters führt.
Was kann ich tun, um den Absturz abzufangen?
Danke
Christof -
Edit: Warum machst du es nicht wie im example ist doch genau das was du brauchst? https://github.com/robertklep/nefit-easy-commands/blob/master/example/status.js
Du musst Promise all verwenden wie im Beispiel sonst arbeiten die Funktionen asynchron und der Fehler fliegt auch asynchron.
-
Hi,
ich bin mir sicher, das Beispiel von dieser Homepage genommen zu haben - da ist ja auch das Paket her.
Egal, Danke für den Tip.
Jetzt lass ich das mal laufen und bin schon gespannt, ob es robust läuft.Bis dann
Christof