NEWS
Errormeldungen abfangen
Errormeldungen abfangen
-
ich habe in den letzten Tagen manchmal folgende Errormeldungen bekommen
javascript.1 2024-04-13 08:32:16.541 error Request error: Error: connect ETIMEDOUT 192.168.138.103:80 javascript.1 2024-04-13 08:32:16.541 error Error in request callback: ReferenceError: url is not defined javascript.1 2024-04-13 08:32:16.540 error Request error: Error: connect ETIMEDOUT 192.168.138.103:80 javascript.1 2024-04-13 08:32:16.540 error Error in request callback: ReferenceError: url is not defined javascript.1 2024-04-13 08:32:16.540 error Request error: Error: connect ETIMEDOUT 192.168.138.103:80 javascript.1 2024-04-13 08:32:16.540 error Error in request callback: ReferenceError: url is not defined javascript.1 2024-04-13 08:32:16.539 error Request error: Error: connect ETIMEDOUT 192.168.138.103:80 javascript.1 2024-04-13 08:32:16.539 error Error in request callback: ReferenceError: url is not defined javascript.1 2024-04-13 08:32:16.539 error Request error: Error: connect ETIMEDOUT 192.168.138.103:80 javascript.1 2024-04-13 08:32:16.539 error Error in request callback: ReferenceError: url is not defined javascript.1 2024-04-13 08:32:16.538 error Request error: Error: connect ETIMEDOUT 192.168.138.103:80 javascript.1 2024-04-13 08:32:16.538 error Error in request callback: ReferenceError: url is not defined javascript.1 2024-04-13 08:32:16.537 error Request error: Error: connect ETIMEDOUT 192.168.138.103:80 javascript.1 2024-04-13 08:32:16.537 error Error in request callback: ReferenceError: url is not defined javascript.1 2024-04-13 08:32:16.537 error Request error: Error: connect ETIMEDOUT 192.168.138.103:80 javascript.1 2024-04-13 08:32:16.537 error Error in request callback: ReferenceError: url is not definedDie Dauer heute waren ca. 90msec aber bei 4 Meldungen pro msec knallt das das Log ganz schön voll.
Ich nehme an, dass es sich um ein Script zum auslesen des Kostal Piko Wechselrichters handelt und es möglicherweise Probleme im Netzwerk gibt, welcher Art auch immer.
Anders kann ichurl is not definednicht zuordnen.kann man das irgendwie abfangen.
PS sobald ich es schaffe das Skript zu kopieren, poste ich es

-
ich habe in den letzten Tagen manchmal folgende Errormeldungen bekommen
javascript.1 2024-04-13 08:32:16.541 error Request error: Error: connect ETIMEDOUT 192.168.138.103:80 javascript.1 2024-04-13 08:32:16.541 error Error in request callback: ReferenceError: url is not defined javascript.1 2024-04-13 08:32:16.540 error Request error: Error: connect ETIMEDOUT 192.168.138.103:80 javascript.1 2024-04-13 08:32:16.540 error Error in request callback: ReferenceError: url is not defined javascript.1 2024-04-13 08:32:16.540 error Request error: Error: connect ETIMEDOUT 192.168.138.103:80 javascript.1 2024-04-13 08:32:16.540 error Error in request callback: ReferenceError: url is not defined javascript.1 2024-04-13 08:32:16.539 error Request error: Error: connect ETIMEDOUT 192.168.138.103:80 javascript.1 2024-04-13 08:32:16.539 error Error in request callback: ReferenceError: url is not defined javascript.1 2024-04-13 08:32:16.539 error Request error: Error: connect ETIMEDOUT 192.168.138.103:80 javascript.1 2024-04-13 08:32:16.539 error Error in request callback: ReferenceError: url is not defined javascript.1 2024-04-13 08:32:16.538 error Request error: Error: connect ETIMEDOUT 192.168.138.103:80 javascript.1 2024-04-13 08:32:16.538 error Error in request callback: ReferenceError: url is not defined javascript.1 2024-04-13 08:32:16.537 error Request error: Error: connect ETIMEDOUT 192.168.138.103:80 javascript.1 2024-04-13 08:32:16.537 error Error in request callback: ReferenceError: url is not defined javascript.1 2024-04-13 08:32:16.537 error Request error: Error: connect ETIMEDOUT 192.168.138.103:80 javascript.1 2024-04-13 08:32:16.537 error Error in request callback: ReferenceError: url is not definedDie Dauer heute waren ca. 90msec aber bei 4 Meldungen pro msec knallt das das Log ganz schön voll.
Ich nehme an, dass es sich um ein Script zum auslesen des Kostal Piko Wechselrichters handelt und es möglicherweise Probleme im Netzwerk gibt, welcher Art auch immer.
Anders kann ichurl is not definednicht zuordnen.kann man das irgendwie abfangen.
PS sobald ich es schaffe das Skript zu kopieren, poste ich es

@homoran sagte in Errormeldungen abfangen:
kann man das irgendwie abfangen.
Selbstverfreilich

"try + catch" um deinen "request" (ev. gleich auch auf axios umbauen
) bauentry { // code... } catch (err) { // error handling } -
@homoran sagte in Errormeldungen abfangen:
kann man das irgendwie abfangen.
Selbstverfreilich

"try + catch" um deinen "request" (ev. gleich auch auf axios umbauen
) bauentry { // code... } catch (err) { // error handling }isch kann koi Jawa
Das Script hat mir jemand geschrieben
EDIT
verursacht das gezeigte Script überhaupt den Fehler?ist
urlbei "url is not defined" nicht möglicherweise eine variable?
die ist hier in meinen Augen tatsächlich nicht definiert,else { log("Fehler: " + error + " bei Abfrage von: " + url, "warn");habe aber gerade noch ein zweites Script gefunden das auf den WR zugreift (auch nicht von mir, sondern einem freundlichen Helfer)
-
@homoran sagte in Errormeldungen abfangen:
kann man das irgendwie abfangen.
Selbstverfreilich

"try + catch" um deinen "request" (ev. gleich auch auf axios umbauen
) bauentry { // code... } catch (err) { // error handling } -
@homoran
Sieht nach dem 1. Skript aus, ich finde nirgends eine Definition von "url" die aber hier
log("Fehler: " + error + " bei Abfrage von: " + url, "warn");
aufgerufen wird.
Ändere es doch mal testweise auf
log("Fehler: " + error + " bei Abfrage von: " , "warn");
ab. Anscheinend klappt die Abfrage nicht immer "ETIMEDOUT"....und jetzt habe ich gerade deinen Edit gelesen

-
@homoran
Sieht nach dem 1. Skript aus, ich finde nirgends eine Definition von "url" die aber hier
log("Fehler: " + error + " bei Abfrage von: " + url, "warn");
aufgerufen wird.
Ändere es doch mal testweise auf
log("Fehler: " + error + " bei Abfrage von: " , "warn");
ab. Anscheinend klappt die Abfrage nicht immer "ETIMEDOUT"....und jetzt habe ich gerade deinen Edit gelesen

@sborg sagte in Errormeldungen abfangen:
ich finde nirgends eine Definition von "url"
dann nehme ich "IPAnlage" statt "url"
DANKE!
-
@sborg sagte in Errormeldungen abfangen:
ich finde nirgends eine Definition von "url"
dann nehme ich "IPAnlage" statt "url"
DANKE!
@homoran
Jupp, ist "global" definiert, funktioniert also auch innerhalb der "function". Ggf. würde ich vielleicht noch den Level von "warn" auf "info" runter setzen. Bei mir ist "warn" eigentlich eher die Bude brennt gerade ab
-
@homoran
Jupp, ist "global" definiert, funktioniert also auch innerhalb der "function". Ggf. würde ich vielleicht noch den Level von "warn" auf "info" runter setzen. Bei mir ist "warn" eigentlich eher die Bude brennt gerade ab
@sborg Danke nochmal.
WARN ist aber besser als ERROR
ETIMEDOUT wird dann trotzdem 4x pro Millisekunde aufschlagen?
oder war das nur weil im else das url nicht definiert war? -
@sborg Danke nochmal.
WARN ist aber besser als ERROR
ETIMEDOUT wird dann trotzdem 4x pro Millisekunde aufschlagen?
oder war das nur weil im else das url nicht definiert war?@homoran
Immer gerne.Ja, da anscheinend deine Gegenstelle nicht immer zuverlässig antwortet. Da würde "try + catch" zwar helfen, behebt aber nicht das eigentliche Problem. Weißt du wie schnell der Trigger agiert? Nicht das er mit der einen Verarbeitung noch beschäftigt ist und schon der nächste ansteht. Abhilfe könnte dann "await" bringen. Damit wird das Skript angehalten bis die Verarbeitung der Funktion beendet ist.
-
@homoran
Immer gerne.Ja, da anscheinend deine Gegenstelle nicht immer zuverlässig antwortet. Da würde "try + catch" zwar helfen, behebt aber nicht das eigentliche Problem. Weißt du wie schnell der Trigger agiert? Nicht das er mit der einen Verarbeitung noch beschäftigt ist und schon der nächste ansteht. Abhilfe könnte dann "await" bringen. Damit wird das Skript angehalten bis die Verarbeitung der Funktion beendet ist.
@sborg sagte in Errormeldungen abfangen:
Weißt du wie schnell der Trigger agiert?
etwa alle 6 Sekunden.
@sborg sagte in Errormeldungen abfangen:
behebt aber nicht das eigentliche Problem.
wobei ich genau da die Ursache vermute. Möglicherweise stirbt ein Switch oder die Fritzbox oder die Netzwerkkarte vom NUC

Auch mein Slave hat einige Male am Tag das Problem sich mit der States DB des masters zu verbinden.
Allerdings erst nach der Updateorgie und damit verbundenen Verwendung von jsonl.Hier kann es aber auch sein, dass zeitgleich das andere Skript auf die API zugreift.
Aber wie gesagt lief es in dieser Konstellation Jahre ohne eine einzige Meldung.
-
@sborg sagte in Errormeldungen abfangen:
Weißt du wie schnell der Trigger agiert?
etwa alle 6 Sekunden.
@sborg sagte in Errormeldungen abfangen:
behebt aber nicht das eigentliche Problem.
wobei ich genau da die Ursache vermute. Möglicherweise stirbt ein Switch oder die Fritzbox oder die Netzwerkkarte vom NUC

Auch mein Slave hat einige Male am Tag das Problem sich mit der States DB des masters zu verbinden.
Allerdings erst nach der Updateorgie und damit verbundenen Verwendung von jsonl.Hier kann es aber auch sein, dass zeitgleich das andere Skript auf die API zugreift.
Aber wie gesagt lief es in dieser Konstellation Jahre ohne eine einzige Meldung.
@homoran sagte in Errormeldungen abfangen:
Aber wie gesagt lief es in dieser Konstellation Jahre ohne eine einzige Meldung.
Haben die Kunden zu meiner damaligen Zeit auch immer gesagt: komisch, gestern lief der Fernseher noch...

Pauschal können sich zwar die Skripte (oder eher die API des Gerätes) in die Quere kommen, da aber dein 2. Skript nur minütlich getriggert wird, dürfte dann immer mindestens eine Minute Ruhe sein und es nur "knallen" wenn dann beide zufällig zur vollen Minute mal darauf zugreifen.
Aktuell jetzt noch kein Thema, aber kannst du ev. den ein oder anderen verlorenen Datensatz verschmerzen?
Mal ein erster Timeout Test:
const axios = require('axios'); (async () => { try { const url = `http://192.168.138.103/api/dxs.json`; console.log(`Sende GET-Anfrage an: ${url}`); const response = await axios.get(url, {timeout: 1000}); console.log(`Antwort: `, response?.data?.message ); console.log('hier erfolgt Verarbeitung bei Antwort'); } catch(err) { console.log(`Fehlermeldung : ${err.message} - `, err.code); } console.log('...und weiter im Programm'); })();Lass ruhig alles andere weiterlaufen, der klopft damit nur mal kurz an. Timeout ist hier 1sek, er wartet also genau 1000ms auf eine Antwort bis er einen Fehler wirft.
14:33:17.284 info javascript.0 (3856837) script.js.common.Test.TMP.Skript_1: Sende GET-Anfrage an: http://192.168.138.103/api/dxs.json 14:33:17.285 info javascript.0 (3856837) script.js.common.Test.TMP.Skript_1: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions 14:33:18.286 info javascript.0 (3856837) script.js.common.Test.TMP.Skript_1: Fehlermeldung : timeout of 1000ms exceeded - 14:33:18.287 info javascript.0 (3856837) script.js.common.Test.TMP.Skript_1: ...und weiter im ProgrammDie Fehlermeldung mit dem "Timeout" solltest du also eigentlich nie sehen. Bei mir ist es klar, ich habe weder die IP noch die API

So 5-10x starten und stoppen sollte eigentlich genügen. Kannst den Timeout auch mal testweise runter setzen. "Request" bspw. wartet überhaupt nicht. Anfrage --> keine Antwort = FehlerIst sowieso mal langsam Zeit vom deprecated request Abschied zu nehmen und umzustellen.
-
@homoran sagte in Errormeldungen abfangen:
Aber wie gesagt lief es in dieser Konstellation Jahre ohne eine einzige Meldung.
Haben die Kunden zu meiner damaligen Zeit auch immer gesagt: komisch, gestern lief der Fernseher noch...

Pauschal können sich zwar die Skripte (oder eher die API des Gerätes) in die Quere kommen, da aber dein 2. Skript nur minütlich getriggert wird, dürfte dann immer mindestens eine Minute Ruhe sein und es nur "knallen" wenn dann beide zufällig zur vollen Minute mal darauf zugreifen.
Aktuell jetzt noch kein Thema, aber kannst du ev. den ein oder anderen verlorenen Datensatz verschmerzen?
Mal ein erster Timeout Test:
const axios = require('axios'); (async () => { try { const url = `http://192.168.138.103/api/dxs.json`; console.log(`Sende GET-Anfrage an: ${url}`); const response = await axios.get(url, {timeout: 1000}); console.log(`Antwort: `, response?.data?.message ); console.log('hier erfolgt Verarbeitung bei Antwort'); } catch(err) { console.log(`Fehlermeldung : ${err.message} - `, err.code); } console.log('...und weiter im Programm'); })();Lass ruhig alles andere weiterlaufen, der klopft damit nur mal kurz an. Timeout ist hier 1sek, er wartet also genau 1000ms auf eine Antwort bis er einen Fehler wirft.
14:33:17.284 info javascript.0 (3856837) script.js.common.Test.TMP.Skript_1: Sende GET-Anfrage an: http://192.168.138.103/api/dxs.json 14:33:17.285 info javascript.0 (3856837) script.js.common.Test.TMP.Skript_1: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions 14:33:18.286 info javascript.0 (3856837) script.js.common.Test.TMP.Skript_1: Fehlermeldung : timeout of 1000ms exceeded - 14:33:18.287 info javascript.0 (3856837) script.js.common.Test.TMP.Skript_1: ...und weiter im ProgrammDie Fehlermeldung mit dem "Timeout" solltest du also eigentlich nie sehen. Bei mir ist es klar, ich habe weder die IP noch die API

So 5-10x starten und stoppen sollte eigentlich genügen. Kannst den Timeout auch mal testweise runter setzen. "Request" bspw. wartet überhaupt nicht. Anfrage --> keine Antwort = FehlerIst sowieso mal langsam Zeit vom deprecated request Abschied zu nehmen und umzustellen.
@sborg Danke!
hab noch einmal neu gestartet und seit dem keine einzige Errormeldung bekommen. :aufHolzKlopf:
@sborg sagte in Errormeldungen abfangen:
und es nur "knallen" wenn dann beide zufällig zur vollen Minute mal darauf zugreifen.
so sah es für mich aus, zusätzlich auch nur zu bestimmten Zeiten, in denen möglicherweise iob oder die Netzwerkkarte noch mit anderen zeitgleichen Aufgaben beschäftigt war.
@sborg sagte in Errormeldungen abfangen:
Ist sowieso mal langsam Zeit vom deprecated request Abschied zu nehmen und umzustellen.
glaub ich dir gerne, aber....
@homoran sagte in Errormeldungen abfangen:
isch kann koi Jawa
und wie gestern in einem anderen Thread geschrieben ist es für C&P user nicht einfach mal eben "umzustellen"
Beide Skripte sind
@homoran sagte in Errormeldungen abfangen:
auch nicht von mir, sondern einem freundlichen Helfer
-
@sborg Danke!
hab noch einmal neu gestartet und seit dem keine einzige Errormeldung bekommen. :aufHolzKlopf:
@sborg sagte in Errormeldungen abfangen:
und es nur "knallen" wenn dann beide zufällig zur vollen Minute mal darauf zugreifen.
so sah es für mich aus, zusätzlich auch nur zu bestimmten Zeiten, in denen möglicherweise iob oder die Netzwerkkarte noch mit anderen zeitgleichen Aufgaben beschäftigt war.
@sborg sagte in Errormeldungen abfangen:
Ist sowieso mal langsam Zeit vom deprecated request Abschied zu nehmen und umzustellen.
glaub ich dir gerne, aber....
@homoran sagte in Errormeldungen abfangen:
isch kann koi Jawa
und wie gestern in einem anderen Thread geschrieben ist es für C&P user nicht einfach mal eben "umzustellen"
Beide Skripte sind
@homoran sagte in Errormeldungen abfangen:
auch nicht von mir, sondern einem freundlichen Helfer
@homoran hatte ich schon mal woanders erwähnt: es könnte sein, dass nach einem error eines scriptes und sogar nach dem stoppen des scriptes teile davon noch aktiv bleiben - sowas, wie ein zombie-script - startet man das script dann nochmal, läuft das parallel(doppelt/evtl. dreifach...) .
passiert das öfters, kann es schlimmer werdenBIS man den javascript adapter oder den iob neustartet - das könnte erklären, warum es jetzt erstmal keine fehler mehr gibt
is nur so eine vermutung und ein versuch zur erklärung
