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

  • 9
  • 4
  • 3
  • 7
  • 1
  • 788
  • 1
  • 7

2.7k
Online

35.1k
Users

41.1k
Topics

564.4k
Posts