Restart Node Red bei Verbindungsproblemen mit dem Miniserver

Problem

Es kommt - vor allem beim Miniserver Gen 2 - häufig vor, dass nach dem Speichern der Config in den Miniserver die Loxone Nodes keine Verbindung mehr zum MS aufbauen.
Siehe https://github.com/codmpm/node-red-contrib-loxone/issues/73

Workaround

Solange es keine Lösung für das Problem gibt, kann folgender Workaround verwendet werden.

 

[ { "id": "a70a29c9f76e0c2a", "type": "tab", "label": "Restart Node Red", "disabled": false, "info": "", "env": [] }, { "id": "e7eacba0deac7bf5", "type": "exec", "z": "a70a29c9f76e0c2a", "command": "node-red-restart", "addpay": false, "append": "", "useSpawn": "false", "timer": "", "winHide": false, "oldrc": false, "name": "Restart Node-RED", "x": 970, "y": 240, "wires": [ [], [], [] ] }, { "id": "36da930ca9816800", "type": "loxone-online", "z": "a70a29c9f76e0c2a", "name": "MS connection ", "miniserver": "bda880d5.2d4e98", "x": 140, "y": 360, "wires": [ [ "31cfba81baee508a" ] ] }, { "id": "da2756de.d5664", "type": "debug", "z": "a70a29c9f76e0c2a", "name": "", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 950, "y": 300, "wires": [] }, { "id": "63503f14.9acb28", "type": "trigger", "z": "a70a29c9f76e0c2a", "name": "", "op1": "", "op2": "node-red-restart", "op1type": "nul", "op2type": "str", "duration": "1", "extend": false, "overrideDelay": false, "units": "min", "reset": "true", "bytopic": "all", "topic": "topic", "outputs": 1, "x": 710, "y": 280, "wires": [ [ "da2756de.d5664", "e7eacba0deac7bf5" ] ] }, { "id": "31cfba81baee508a", "type": "switch", "z": "a70a29c9f76e0c2a", "name": "", "property": "payload", "propertyType": "msg", "rules": [ { "t": "true" }, { "t": "false" } ], "checkall": "true", "repair": false, "outputs": 2, "x": 350, "y": 360, "wires": [ [ "63503f14.9acb28" ], [ "ed8648516cc523d1" ] ] }, { "id": "82d5e91aa08ff31b", "type": "comment", "z": "a70a29c9f76e0c2a", "name": "limit not connected messages, there are a lot!", "info": "", "x": 530, "y": 420, "wires": [] }, { "id": "ec0cb9b2c261d43d", "type": "comment", "z": "a70a29c9f76e0c2a", "name": "Restart Node Red if no connection to MS for > 1 min", "info": "", "x": 510, "y": 160, "wires": [] }, { "id": "645d44bd666f126b", "type": "inject", "z": "a70a29c9f76e0c2a", "name": "", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": true, "onceDelay": "0.0", "topic": "", "payload": "false", "payloadType": "bool", "x": 130, "y": 280, "wires": [ [ "63503f14.9acb28" ] ] }, { "id": "75266b9039c5f86d", "type": "comment", "z": "a70a29c9f76e0c2a", "name": "initialize trigger", "info": "", "x": 140, "y": 240, "wires": [] }, { "id": "ed8648516cc523d1", "type": "delay", "z": "a70a29c9f76e0c2a", "name": "", "pauseType": "rate", "timeout": "5", "timeoutUnits": "seconds", "rate": "1", "nbRateUnits": "30", "rateUnits": "second", "randomFirst": "1", "randomLast": "5", "randomUnits": "seconds", "drop": true, "allowrate": false, "outputs": 1, "x": 540, "y": 380, "wires": [ [ "63503f14.9acb28", "aedd95a05a3c85f5" ] ] }, { "id": "aedd95a05a3c85f5", "type": "debug", "z": "a70a29c9f76e0c2a", "name": "", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 790, "y": 380, "wires": [] }, { "id": "bda880d5.2d4e98", "type": "loxone-miniserver", "host": "192.168.178.230", "port": "80", "enctype": "0", "active": true, "keepalive": "30000" } ]

Wie funktioniert es?

  • Geht die Verbindung verloren, so sendet der Node MS connection eine false Message.

  • Diese false Message startet den 1 Minuten Trigger.

  • Kommt innerhalb dieser einen Minute keine true Message (diese setzt den Trigger zurück), so wird nach einer Minute ein Node Red restart ausgeführt.

  • Die Initialisierung des Triggers ist notwendig, damit er in einem definierten Zustand ist.

Hinweis: Es kann (zumindest bei mir) deutlich länger als eine Minute dauern, bis der Trigger feuert und ein Restart gemacht wird. Das dürfte daran liegen, dass die not-connectet Messages mit fulls speed kommen und anscheinend das ganze Node Red überlasten. Siehe https://github.com/codmpm/node-red-contrib-loxone/issues/72