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

  • Developer

    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

Suggested Topics

1.8k
Online

36.9k
Users

42.6k
Topics

591.0k
Posts