danielwippermann / resol-vbus

A JavaScript library for processing RESOL VBus data
MIT License
67 stars 34 forks source link

Main function returned with error: undefined #97

Closed fliix-de closed 9 months ago

fliix-de commented 9 months ago

Hallo Daniel, danke für diese tolle Anwendung.

Ich schaffe es leider nicht, die Anwendung stabil zum Laufen zu bekommen.

Manchmal läuft die Anwendung fehlerfrei und das JSON ist erreichbar. Nach einem Neustart lässt sich die Anwendung dann nicht mehr starten:

Main function returned with error: undefined

grafik

Ich bin neu im NodeJS Umfeld, daher die Bitte der Nachsicht.

Hast du eine Idee, was die Ursache sein könnte?

Installiert innerhalb von einem Debian Docker (latest bookworm): npm -v 10.2.4 node -v 21.5.0

Nach ca. 20 Versuchen, hat es dann wieder geklappt. Nutze ich die falsche node Version?

grafik

danielwippermann commented 9 months ago

HI @fliix-de !

Hmmm, "error: undefined"... Ja, wirklich sehr hilfreich... :)

Ok, ich bekomme so eine Fehlermeldung auch hin, wenn ich einen Konfigurationsfehler einbaue, aber das wird ja nicht direkt auf Dich übertragbar sein, weil es bei Dir ja ab und zu dann doch ohne Änderung an der config.js zu funktionieren scheint.

grafik

Ich versuche jetzt erstmal rauszufinden, wie ich die Fehlermeldung etwas "informativer" bekomme. Dann melde ich mich nochmal...

danielwippermann commented 9 months ago

Es scheint so zu sein, dass die Formatierungfunktion von logger.error nicht damit zurecht kommt, wenn man ein JavaScript-Error-Objekt da rein reicht. Könntest Du in Deiner index.jsmal folgende Änderung machen (oder aber das git-Repo pullen, da habe ich die Änderung auch gemacht):

https://github.com/danielwippermann/resol-vbus/commit/bb428ca7f0fcadd5ba2e154af8267d67784ee0ef

Dann sehen die Fehlermeldungen etwas informativer aus:

grafik

Ggf. finden wir so den eigentlichen Grund für die Fehler etwas einfacher...

fliix-de commented 9 months ago

Erstmals vielen Dank, dass du dir die Mühe gemacht hast. Ich stehe gerade etwas auf dem Schlauch. Ich habe deine Änderung eingetragen und erhalte jetzt die gleiche Fehlermeldung, wie in deinem Screenshot.

Docker neu gestartet. 1. Versuch: sofort eine Verbindung hergestellt. 2./3./4./5. Versuch: Fehlermeldung

grafik

Ich habe gerade auch mein altes Script auf Basis von ioBroker weiterlaufen lassen, hier läuft es stabil. Da der Fehler in der "TCP-Connection" auftritt, wollte ich das parallel testen.

Hast du noch irgendeine Idee, warum es dazu kommen könnte?

danielwippermann commented 9 months ago

Was für ein LAN-Gateway benutzt Du? Wenn Du ein VBus/LAN-Adapter verwendest, ist die vermutlichste Ursache, dass dieser Adapter nur eine VBus/TCP-Verbindung gleichzeitig erlaubt. Wenn also jetzt im Hintergrund noch ein anderes Skript daraufzugreift oder aber (bezogen auf Deinen Screenshot) der VBus/LAN-Adapter noch nicht mitbekommen hat, dass die Verbindung vom oberen Aufruf eigentlich beendet ist und erstmal Zeit verstreichen muss, bis der VBus/LAN-Adapter das realisiert und bis dahin keine weitere Verbindung zulässt. Ist aber alles nur Vermutung, ich hatte das hier mit einem DL2 Plus getestet und der erlaubt 10 gleichzeitige Verbindungen und gibt eine wohlklingende Fehlermeldung zurück, wenn diese Grenze erreicht ist.

Andere mögliche Ursachen für das "Unable to connect" wären noch klassische Netzwerkprobleme zwischen PC und Adapter und Probleme mit der Spannungsversorgung, aber diese zwei Kategorien schließe ich aufgrund Deiner Schilderung erstmal aus.

fliix-de commented 9 months ago

Ich verwende den: Schnittstellenadapter VBus®/LAN.

Und ja das klingt logisch, dass der Adapter noch nicht realisiert hat, dass die Verbindung geschlossen wurde. Allerdings war der Test mit dem ioBroker Skript erst nach meinem Screenshot, sprich da sollte eigentlich nichts anderes im Hintergrund laufen. In diesem Fall wahrscheinlich mein STRG-C und dann zu schnell erneut versucht. Hatte das System jetzt gerade 15 Minuten unangetastet und das Script lief wieder sauber. Erneutes beenden und starten führte wieder zum Fehler. Sieht fast danach aus.

Ein klassisches Netzwerk-Problem konnte ich ausschließen. LAN Leitungen durchgemessen, Switch Ports kreuz getauscht. Spannungsversorgung am Adapter stabil.

Ich werde das weiter beobachten. Danke für deine Unterstützung.