NEWS
[gelöst] Probleme mit Javascript-Adapter (error exception: getaddrinfo ENOTFOUND)
-
Hallo,
jetzt hat es mich auch erwischt. Mein Javascript-Adapter macht Probleme. Ich habe zwar hier im Forum schon viel gelesen, und meine Fehlermeldung auch hier http://forum.iobroker.net/viewtopic.php … UND#p15451 schon einmal gefunden. Aber schlau werde ich daraus auch nicht so recht. Und dort geht es ja auch um History… Und welche Adresse mein Javascript Adapter nicht erreichen kann will mir nicht so recht einfallen... Aber mal von vorne:
Gestern ist mir aufgefallen, dass meine handvoll Javascripte nicht mehr sauber zu laufen scheinen. Ein Blick ins Log beförderte dann auch gleich eine Reihe Fehlermeldungen ans Tageslicht. Außerdem die Erkenntnis, dass sich meine Javascript-Instanz offenbar in einer Art Bootloop zu befinden scheint.
Im Log sieht man, dass der Adapter die Scripte lädt, anschließend ein paar Fehler auswirft und beendet wird. Danach startet er die Instanz neu und das Ganze beginnt von vorne...
Hier der Auszug aus dem Log:
host-jarvis 2016-02-23 09:06:00 info Restart adapter system.adapter.javascript.0 because enabled host-jarvis 2016-02-23 09:06:00 error instance system.adapter.javascript.0 terminated with code 6 (uncaught exception) Error: 2016-02-23 09:06:00 error at Object.onanswer [as oncomplete] (dns.js:124:16) Error: 2016-02-23 09:06:00 error at errnoException (dns.js:37:11) Error: 2016-02-23 09:06:00 error getaddrinfo ENOTFOUND uncaught 2016-02-23 09:06:00 error exception: getaddrinfo ENOTFOUND
Im Einsatz habe ich Version 1.2.0 vom Javascript Adapter und Node v0.10.22.
Wenn ich Google mit den Fehlermeldungen füttere, lese ich etwas von Adressen, die nicht erreichbar sind oder falsch aufgelöst werden, und node.js… so richtig kann ich damit aber auch nichts anfangen. Habe ich vielleicht schlicht einen Konfigurationsfehler?
Größere Updates habe ich weder auf Linux-Ebene (ioBroker läuft unter Armbian Jessie) noch im ioBroker gemacht. Allerding habe ich die letzten Tage immer wieder konfiguriert, Scripte angepasst und mit den chromecast, squeezebox und sayit Adaptern gespielt...
Weiß jemand Rat? Danke.
MfG,
André
-
Mhh, keiner eine Idee??
Ich habe in den letzten Tagen einiges an Updates gemacht und das ganze System auf eine neue Platte umgezogen. Diverse Reboots und sogar die ein oder andere Adapter Installation. Trotzdem habe ich, wenn auch nur noch selten und sporadisch den oben beschriebenen Fall, dass sich der Javascript-Adapter verabschiedet und neu startet.
Meine Beobachtungen der letzten Tage zeigen aber, dass dies für die Funktionalität der Scripte offensichtlich kein Problem ist (der Adapter wird ja auch immer wieder gestartet).
Hat niemand sonst das Phänomen? Kann niemand etwas mit den Meldungen aus dem Log anfangen?
Danke.
MfG,
André
-
Hallo,
jetzt hat es mich auch erwischt. Mein Javascript-Adapter macht Probleme. Ich habe zwar hier im Forum schon viel gelesen, und meine Fehlermeldung auch hier http://forum.iobroker.net/viewtopic.php … UND#p15451 schon einmal gefunden. Aber schlau werde ich daraus auch nicht so recht. Und dort geht es ja auch um History… Und welche Adresse mein Javascript Adapter nicht erreichen kann will mir nicht so recht einfallen... Aber mal von vorne:
Gestern ist mir aufgefallen, dass meine handvoll Javascripte nicht mehr sauber zu laufen scheinen. Ein Blick ins Log beförderte dann auch gleich eine Reihe Fehlermeldungen ans Tageslicht. Außerdem die Erkenntnis, dass sich meine Javascript-Instanz offenbar in einer Art Bootloop zu befinden scheint.
Im Log sieht man, dass der Adapter die Scripte lädt, anschließend ein paar Fehler auswirft und beendet wird. Danach startet er die Instanz neu und das Ganze beginnt von vorne...
Hier der Auszug aus dem Log:
host-jarvis 2016-02-23 09:06:00 info Restart adapter system.adapter.javascript.0 because enabled host-jarvis 2016-02-23 09:06:00 error instance system.adapter.javascript.0 terminated with code 6 (uncaught exception) Error: 2016-02-23 09:06:00 error at Object.onanswer [as oncomplete] (dns.js:124:16) Error: 2016-02-23 09:06:00 error at errnoException (dns.js:37:11) Error: 2016-02-23 09:06:00 error getaddrinfo ENOTFOUND uncaught 2016-02-23 09:06:00 error exception: getaddrinfo ENOTFOUND
Im Einsatz habe ich Version 1.2.0 vom Javascript Adapter und Node v0.10.22.
Wenn ich Google mit den Fehlermeldungen füttere, lese ich etwas von Adressen, die nicht erreichbar sind oder falsch aufgelöst werden, und node.js… so richtig kann ich damit aber auch nichts anfangen. Habe ich vielleicht schlicht einen Konfigurationsfehler?
Größere Updates habe ich weder auf Linux-Ebene (ioBroker läuft unter Armbian Jessie) noch im ioBroker gemacht. Allerding habe ich die letzten Tage immer wieder konfiguriert, Scripte angepasst und mit den chromecast, squeezebox und sayit Adaptern gespielt...
Weiß jemand Rat? Danke.
MfG,
André `
Is bei dir request irgendwo im Einsatz? -
Hallo,
jetzt hat es mich auch erwischt. Mein Javascript-Adapter macht Probleme. Ich habe zwar hier im Forum schon viel gelesen, und meine Fehlermeldung auch hier http://forum.iobroker.net/viewtopic.php … UND#p15451 schon einmal gefunden. Aber schlau werde ich daraus auch nicht so recht. Und dort geht es ja auch um History… Und welche Adresse mein Javascript Adapter nicht erreichen kann will mir nicht so recht einfallen... Aber mal von vorne:
Gestern ist mir aufgefallen, dass meine handvoll Javascripte nicht mehr sauber zu laufen scheinen. Ein Blick ins Log beförderte dann auch gleich eine Reihe Fehlermeldungen ans Tageslicht. Außerdem die Erkenntnis, dass sich meine Javascript-Instanz offenbar in einer Art Bootloop zu befinden scheint.
Im Log sieht man, dass der Adapter die Scripte lädt, anschließend ein paar Fehler auswirft und beendet wird. Danach startet er die Instanz neu und das Ganze beginnt von vorne...
Hier der Auszug aus dem Log:
host-jarvis 2016-02-23 09:06:00 info Restart adapter system.adapter.javascript.0 because enabled host-jarvis 2016-02-23 09:06:00 error instance system.adapter.javascript.0 terminated with code 6 (uncaught exception) Error: 2016-02-23 09:06:00 error at Object.onanswer [as oncomplete] (dns.js:124:16) Error: 2016-02-23 09:06:00 error at errnoException (dns.js:37:11) Error: 2016-02-23 09:06:00 error getaddrinfo ENOTFOUND uncaught 2016-02-23 09:06:00 error exception: getaddrinfo ENOTFOUND
Im Einsatz habe ich Version 1.2.0 vom Javascript Adapter und Node v0.10.22.
Wenn ich Google mit den Fehlermeldungen füttere, lese ich etwas von Adressen, die nicht erreichbar sind oder falsch aufgelöst werden, und node.js… so richtig kann ich damit aber auch nichts anfangen. Habe ich vielleicht schlicht einen Konfigurationsfehler?
Größere Updates habe ich weder auf Linux-Ebene (ioBroker läuft unter Armbian Jessie) noch im ioBroker gemacht. Allerding habe ich die letzten Tage immer wieder konfiguriert, Scripte angepasst und mit den chromecast, squeezebox und sayit Adaptern gespielt...
Weiß jemand Rat? Danke.
MfG,
André
Is bei dir request irgendwo im Einsatz?
Also. Da schmeißt dir eine von dir aufgerufene Funktion ( die du nicht verraten willst) ein Exception.
Ich konnte, wenn ich wüsste, try catch drum herum bauen. Ich epfehle dir an der Stelle try catch zu benutzen .
-
Hallo Bluefox,
vielen dank für deine Analyse/ Einschätzung.
Ich nutze in der Tat ein require. Mit dessen Hilfe schalte ich bei meinem Raspberry den HDMI Ausgang per CGI-Script ein und aus.
Habe jetzt herausgefunden, dass das entsprechende Script bei nicht Erreichen des CGI-Scripts (z.B. wenn der Raspberry aus ist) die Exeption raus wirft und damit den Javascript Adapter zum Absturz bringt.
Werde bei Gelegenheit mal versuchen ein try/catch um die Funktion zu bauen. Kannst du mir anhand der Fehlermeldung sagen was ich in den catch schreiben muss? Falls nicht, wie kann ich herausfinden was ich als Exeptionklassennamen eintragen muss?
Hier mal mein Script, das offensichtlich ab und an "Böses" tut:
!
// Script zum Schalten des Wand-Displays nach CCU-Systemvariable ! // Datenpunkt anlegen createState('status.schlafenszeit', 0, {name: 'Schlafenszeit für Display'}); createState('status.schlafenszeit_countdown', 0, {name: 'Countdown für Schlafenszeit'}); ! // Datenpunkt-ID var idBewegung = "hm-rpc.0.MEQXXXXXXX.1.MOTION"; var idSchlafenszeit = "javascript.0.status.schlafenszeit"; var idCountdown = "javascript.0.status.schlafenszeit_countdown"; var idLichtWZ = "hm-rpc.0.KEQXXXXXXX.1.STATE"; ! // Variablendeklaration und Initialisierung bei Scriptstart var stateBewegung = getState(idBewegung).val; var stateSchlafenszeit = getState(idSchlafenszeit).val; var display_on = 'http://XXX.fritz.box:[PORT]/cgi-bin/display_on.cgi'; var display_off = 'http://XXX.fritz.box:[PORT]/cgi-bin/display_off.cgi'; var request = require('request'); var timer; ! // Funktion für Countdownanzeige zur Schlafenszeit in vis function countdown() { setTimeout(function () { var stateCountdown = getState(idCountdown).val || 10; if (stateCountdown > 1 && stateSchlafenszeit === true) { setState(idCountdown, stateCountdown - 1); countdown(); } else { setState(idCountdown, 0); } }, 1000); } ! // Auswertung des Status "Bewegung" / Ausschalten per Timer nach 10 Minuten! function switch_display() { if (timer) { clearTimeout(timer); timer = null; } if (stateBewegung === true && stateSchlafenszeit === false) { request (display_on); } else if (stateBewegung === false && stateSchlafenszeit === false) { timer = setTimeout(function () { request (display_off); }, 10 * 60000); } else if (stateSchlafenszeit === true) { countdown(); setState(idLichtWZ, false); timer = setTimeout(function () { request (display_off); }, 10000); } } ! // Aufruf der Funktion bei Scriptstart switch_display(); ! // Aufruf der Funktion bei Änderung on(idBewegung, function(dp) { stateBewegung = dp.newState.val; switch_display(); }); on(idSchlafenszeit, function(dp) { stateSchlafenszeit = dp.newState.val; switch_display(); }); !
Danke!MfG,
André
-
Du scheinst einfach in setTimeout
try { request (display_off); } catch (e) { log(e, 'warn'); }
-
Du scheinst einfach in setTimeout
try { request (display_off); } catch (e) { log(e, 'warn'); } ```` `
So, habe das Ganze jetzt seit 3 Wochen implementiert. Scheint bisher wunderbar zu klappen. Danke nochmal!
MfG,
André