NEWS
Node-Red TCP-Request Timeout
-
Hallo,
ich habe folgendes Thema: Ich frage per Node-Red per TCP-Request einen RS485-WLAN Adapter bzw. das Geräte am RS485 ab. Ist kein Modbus.
Das klappt alles prima.
Ich möchte aber eine Fehlerbehandlung einbauen.
- Der WLAN Adapter ist nicht erreichbar (WLAN aus, Abgestützt, kein Strom)
- Das Geräte an RS485 ist nicht da (Kabel raus, defekt)
Im erste Fall kriege ich eine passende Meldung vom Request.
Aber im 2. Fall bleibt der Request einfach stehen. Hab eingestellt, das er nach 1 Sekunden trennen soll. Hilft nix. Hab also gesucht und hier im Forum gefunden:https://discourse.nodered.org/t/change-the-amount-of-time-before-tcp-node-throws-error/13729
und
https://forum.iobroker.net/topic/17294/node-red-persistence-funktion-einschalten
Aber auch bei einem TCPSocket Timeout von 60 Sekunden bleibt es dauerhaft stehen.
Ich würde gerne die beiden Fehler adäquat abhandeln. Kann mir jemand helfen.
Mein iobroker und alle Instanzen sind stable und auf dem Stand von heute.Danke und schönen Sonntag.
-
@werde45 Also, das eleganteste ist sicher das mit dem socket timeout, wie in dem 1. Link beschrieben. Die persistence Funktion, wie in dem 2. Link beschrieben hilft Dir hier gar nichts.
Das Problem ist, wenn man an der settings.js etwas ändert - das an der richtigen Stelle machen muss, da der iobroker die Konfigurationsdatei vor dem Über schreiben schützt.
Also 1. Frage hast Du auch die richtige settings.js modifiziert und kommt der timeout oder kommt er nicht. Wenn der timeout kommt, dann kannst Du es wahrscheinlich mit einer catch Node abfangen und die Meldung triggern.
Die einfachste Möglichkeit ist aber grundsätzlich mit Hilfe der Trigger Node - selbst so einen Timeout zu produzieren.
-
@mickym
Hi.Ich habe den Wert des Timeout hier eingetragen:
/opt/iobroker/node_modules/iobroker.node-red/settings.js
Und nach dem Neustart von Node-Red auch übertragen.
-
@werde45 OK - und in der Request Node ist doch auch ein timer drin - wirft denn der keine Fehler wenn keine Antwort kommt?
-
@mickym
Nö.. Nix. Bleibt auf Verbunden....Stundenlang...
-
@werde45 Nun es ändert sich nichts am Status auch wenn die Verbindung nicht mehr möglich ist?
-
@mickym
Genau. Solange der RS485 WLAN Adapter da ist, aber keine Leitung zum Gerät per RS485 passiert nix. Er sendet die Anfrage und es kommt keine Antwort. Und das wollte ich eben abfangen.Habe im Node-Red Forum gefunden, das andere Leute dies als Bug bezeichnen.
-
@werde45 Du kannst selbst so eine Art timeout basteln - ich zeig Dir gleich einen Flow.
Schick parallel zu dem Request die Nachricht in eine Trigger Node. Lass diese triggern, wenn keine Nachricht aus der Request Node rauskommt.
-
@mickym
Okay.. Gute Idee. Werde ich testen. Schade, das es so umständlich sein muss.