INSYS Router mit icom OS verfügen über eine integrierte Linux-Umgebung, in der eigene, unabhängige Systeme mit Hilfe von Linux-Containern (LXC) virtualisiert werden können.

Damit ist es zum Beispiel auch möglich, das grafische Entwicklungswerkzeug Node-RED auf dem Router ausführen zu können, um damit eigene IoT-Anwendungen zu realisieren.

1. Situation

Sie haben einen Feuchte-/Temperatursensor mit Modbus RTU (RS485). Sie möchten Luftfeuchtigkeit und Temperatur mit Hilfe von Node-RED auslesen und die ausgelesenen Werte in einem Dashboard visualisieren. Dafür verwenden wir mit Thingsboard eine Open-Source IoT-Plattform.

2. Lösung

Verbinden Sie den Sensor mit der RS485-Schnittstelle ihres INSYS icom Routers (z. B. aus der ECR-Familie oder MRX-Familie mit MRcard SI). Verwenden Sie den von uns zur Verfügung gestellten Node-Red-Container und installieren Sie ihn auf dem Router. Erstellen Sie damit ihre Anwendung, welche die Werte des Sensors ausliest, und stellen Sie diese Werte dann einem Thingsboard-Dashboard zur Verfügung.

2.1. Sensor am Router anschließen

Für das vorliegende Beispiel wird ein handelsüblicher Feuchte-/Temperatursensor mit RS485-Schnittstelle verwendet. Verbinden Sie den Sensor mit der Stromversorgung und der RS485-Schnittstelle des Routers. Achten sie dabei auf die richtige Polung des Anschlusses der RS485-Datenleitungen (siehe Installationshandbuch des Routers sowie die Technische Dokumentation Ihres Sensors).

Note Die RS485-Datenleitungen auf unseren Routern sind mit D+ und D- benannt. Geläufig sind auch die Bezeichnungen TX+/RX+ (für D+) und TX-/RX- (für D-). Werden die Bezeichnungen A und B genutzt, so sind diese nicht immer eindeutig, wenn kein /- angehängt ist. Häufig wird A für D und B für D- verwendet, dies jedoch nicht einheitlich. Im Zweifelsfall müssten die beiden Drähte dann einmal vertauscht werden.

2.2. Internet-Verbindung des Routers konfigurieren

Um die ausgelesenen Daten an Thingsboard zu übermitteln, muss der Router über eine Internet-Verbindung verfügen. Ein Schnellstart-Assistent ermöglicht eine einfache Konfiguration der Internet-Verbindung.

  1. Öffnen Sie die Bedienoberfläche des Routers in einem Browser: insys.icom [1]

  2. Klicken Sie im Menü handshake outline AssistentenSchnellstart-Assistent auf   STARTEN  auto fix white  .

  3. Ändern sie optional die Zeit- und Synchronisierungseinstellungen und klicken Sie auf   WEITER  menu right white  .

  4. Geben Sie die für die Authentifizierung gewünschten Zugangsdaten ein und klicken Sie auf   WEITER  menu right white  .

  5. Konfigurieren Sie die jeweilige Internet-Verbindung ein und klicken Sie auf   WEITER  menu right white  .

  6. Konfigurieren Sie optional Ihre VPN-Verbindung (für dieses Beispiel nicht notwendig) und klicken Sie auf   WEITER  menu right white  .

  7. Ändern Sie optional die Einstellungen der LAN-Verbindung (für dieses Beispiel nicht notwendig) und klicken Sie auf   WEITER  menu right white  .

  8. Laden Sie optional eine Konfiguration für das icom Router Management auf den Router (für dieses Beispiel nicht notwendig).

  9. Klicken Sie auf   WIZARD AUSFÜHREN  .

  10. Verfolgen Sie die Ausführung ded Assistenten und klicken Sie auf   WIZARD VERLASSEN  .

Der Schnellstart-Assistent hat den Router für die Internet-Verbindung konfiguriert.

Im Menü view dashboard outline StatusDashboard können Sie im Abschnitt WAN-Kette verfolgen, wie die WAN-Kette für die Internet-Verbindung aufgebaut wird.
cg de nr startup 01

2.3. Node-RED-Container auf dem Router installieren

Node-RED ist ein grafisches Entwicklungswerkzeug, das in einem Container auf dem Router ausgeführt werden kann.

Note Falls auf Ihrem Router eine icom Data Suite installiert ist, deaktivieren Sie deren Container im Menü package variant closed ContainerContainer durch Deaktivieren der Checkbox Aktiv und klicken Sie auf   SPEICHERN  .
  1. Öffnen Sie die INSYS Container-Seite und laden sie den Node-RED-Container herunter.

  2. Öffnen Sie die Bedienoberfläche des Routers in einem Browser: insys.icom [1]

  3. Klicken Sie im Menü package variant closed ContainerContainer auf file upload und laden Sie den Container auf den Router.
    cg de nr install 01

  4. Klicken Sie auf   SPEICHERN  .

  5. Klicken Sie auf package variant closed plus für den gerade hochgeladenen Container und bearbeiten Sie die Konfiguration des Containers:

    • Benutzergruppe für CLI ohne Authentifizierung: Lesen/Schreiben

    • Bridge zu IP-Netz: net1

    • IPv4-Adresse: 192.168.1.10 / 24

    • IPv4-Gateway: 192.168.1.1

  6. Klicken Sie auf   SPEICHERN  .
    cg de nr install 02

  7. Klicken sie auf   PROFIL AKTIVIEREN  cog white  .

2.4. SSH-Verbindung zum Container herstellen und diesen vorbereiten

Der Node-RED-Container verfügt über Alpine Linux, auf welches man über eine SSH-Verbindung zugreifen kann.

  1. Verbinden Sie sich mit einem Terminalprogramm (wie PuTTY) über eine SSH-Verbindung mit dem Container.

    • Adresse: 192.18.1.10 (oder wie oben angegeben)

    • Benutzername: root

    • Passwort: root
      cg de nr ssh 01

  2. Installieren Sie den Python-Compiler und weitere Tools, um in einem der nächsten Schritte das Modbus-Pakets in Node-RED zu installieren. Geben Sie dazu folgende Befehle in der Kommandozeile (oder Shell) ein:

container1:~# apk add python3
container1:~# apk add make
container1:~# apk add g++
container1:~# apk add gcc
container1:~# apk add linux-headers

Damit haben Sie den Container für die Installation des Modbus-Moduls in Node-RED vorbereitet.

2.5. Modbus-Paket in Node-RED installieren

  1. Öffnen Sie die Benutzeroberfläche von Node-RED unter der Adresse http://192.168.1.10:1880 (https wird nicht unterstützt!).
    cg de nr config 01

  2. Klicken Sie auf menu und wählen sie Palette verwalten.

  3. Suchen Sie auf der Registerkarte Installation nach dem Modul node-red-contrib-modbus und installieren sie dieses mit einem Klick auf Installieren.
    cg de nr config 02

  4. Wechseln Sie auf die Registerkarte Installierte Knoten und klicken sie auf   Schließen  .
    cg de nr config 03

Damit haben Sie das Modbus-Modul in Node-RED installiert und können mit der Entwicklung Ihrer Anwendung fortfahren.

Note Nach der Installation des Modbus-Moduls können Sie die gerade installieren Pakete wieder entfernen, um die Größe des Containers zu reduzieren. Verwenden Sie dazu die folgenden Befehle über die SSH-Verbindung (siehe SSH-Verbindung zum Container herstellen und diesen vorbereiten):
container1:~# apk del python3
container1:~# apk del make
container1:~# apk del g++
container1:~# apk del gcc
container1:~# apk del linux-headers

2.6. Flow in Node-RED erstellen

Es wird nun ein Flow erstellt, der Daten aus dem Modbus-Sensor ausliest und diese Daten an Thingsboard übermittelt. Mit Flow wird in Node-RED die Anwendung bezeichnet, die durch miteinander verbundene Eingabe- Ausgabe- und Verarbeitungs-Knoten definiert wird.

2.6.1. Modbus-Read-Knoten für den Temperatursensor erstellen

  1. Wählen Sie links ganz unten einen Modbus-Read-Knoten und ziehen Sie ihn in den Arbeitsbereich.

  2. Doppelklicken sie den Knoten, um seine Eigenschaften auf der Registerkarte Settings bearbeiten zu können (folgende Einstellungen gelten für den von uns verwendeten Sensor; entnehmen Sie die entsprechenden Werte der Dokumentation Ihres Sensors):

    • Name: TempSensor

    • FC: FC3: Read Holding Registers

    • Address: 00

    • Quantity: 1

    • Poll Rate: 10 second(s)
      cg de nr app 01

  3. Klicken Sie bei Server auf lead pencil, um einen neuen Modbus-Server hinzuzufügen und konfigurieren Sie diesen:

    • Name: Sensor

    • Type: Serial

    • Serial port: /devices/1_serial1 [2]

    • Serial type: RTU-BUFFERED

    • Baud rate: 9600

    • Queue logging: checkbox marked [3]
      cg de nr app 02

  4. Klicken sie auf   Hinzufügen  .

  5. Wechseln Sie zur Registerkarte Optionals und markieren sie die Optionen Show Activities und Show Errors.
    cg de nr app 03

  6. Klicken sie auf   Fertig  .

2.6.2. Funktions-Knoten für Temperaturkonvertierung erstellen

  1. Wählen Sie einen Funktions-Knoten function und ziehen Sie ihn in den Arbeitsbereich.

  2. Doppelklicken sie den Knoten, um seine Eigenschaften auf der Registerkarte Funktion bearbeiten zu können.

  3. Kopieren sie folgenden Code in das Nachrichtenfenster:

var tempValue = msg.payload[0]/10;
msg.payload = {"Temperature": tempValue};
return msg;
  1. Klicken sie auf   Fertig  .
    cg de nr app 04

2.6.3. Knoten zu einem Flow verbinden

  1. Verbinden Sie die beiden Knoten, indem Sie auf einen Verbindungspunkt des einen Knotens klicken und eine Linie zum anderen Knoten ziehen.
    cg de nr app 05

2.6.4. Modbus-Read-Knoten für den Feuchtesensor erstellen

  1. Fügen Sie einen weiteren Modbus-Read-Knoten hinzu und konfigurieren Sie ihn:

    • Name: HuniditySensor

    • FC: FC3: Read Holding Registers

    • Address: 01

    • Quantity: 1

    • Poll Rate: 10 second(s)

    • Server: wählen Sie den bereits angelegten Server Sensor
      cg de nr app 06

  2. Wechseln Sie zur Registerkarte Optionals und markieren sie die Optionen Show Activities und Show Errors.

  3. Klicken sie auf   Fertig  .

2.6.5. Funktions-Knoten für Temperaturkonvertierung erstellen

  1. Fügen Sie einen weiteren Funktions-Knoten function hinzu und konfigurieren Sie ihn:

var humidityValue = msg.payload[0]/10;
msg.payload = {"Humidity": humidityValue};
return msg;
  1. Klicken sie auf   Fertig  .

  2. Verbinden Sie die beiden Knoten, indem Sie auf einen Verbindungspunkt des einen Knotens klicken und eine Linie zum anderen Knoten ziehen.

2.6.6. Debug-Knoten zur Überprüfung der Werte erstellen

  1. Wählen Sie einen allgemeinen Knoten debug und ziehen Sie ihn in den Arbeitsbereich.

  2. Doppelklicken sie den Knoten, um seine Eigenschaften bearbeiten zu können.

  3. Wählen Sie als Ausgabe msg.payload, um die von den Funktions-Knoten erzeugte Nachricht in einem Debug-Fenster von Node-RED auszugeben.

  4. Klicken sie auf   Fertig  .
    cg de nr app 07

  5. Verbinden sie die Ausgaben der beiden Funktions-Knoten mit dem Eingang des Debug-Knotens.
    cg de nr app 08

2.6.7. Flow in Anwendung übernehmen und Funktion der Anwendung kontrollieren

  1. Klicken sie auf   Übernahme (deploy)   rechts oben in der Titelleiste, um den Flow zu übernehmen.

  2. Klicken sie in der rechten Seitenleiste auf bug, um die Registerkarte Debug zu öffnen.
    cg de nr app 09

Ein grüner Punkt unter den Modbus-Read-Knoten zeigt den Modbus-Verbindungsstatus an. Im Debug-Fenster können Sie die eingehenden Werte des Sensors für Temperatur und Luftfeuchtigkeit beobachten.

2.7. Thingsboard-Account erstellen und konfigurieren

Um ausgelesene Daten mit Hilfe von Thingsboard visualisieren zu können, ist ein Thingsboard-Account erforderlich. Wenn noch kein Thingsboard-Account vorhanden ist, muss dieser zuvor angelegt werden. Außerdem muss das Gerät noch in Thingsboard angelegt und ein Zugangs-Token erzeugt werden.

  1. Öffnen Sie Thingsboard, legen Sie wenn noch nicht geschehen einen Account an und melden Sie sich an.

  2. Wechseln Sie in das Menü devices Geräte und klicken Sie auf plus Gerät hinzufügenfile Neues Gerät hinzufügen.
    cg de nr tb 01

  3. Geben Sie einen geeigneten Name für das Gerät ein und klicken Sie auf Nächste: Zugangsdaten.
    cg de nr tb 02

  4. Aktivieren Sie Add credentials, wählen Sie Access token unter Art der Zugangsdaten und geben Sie unter Zugangs-Token eine Zeichenfolge ein.
    cg de nr tb 03

  5. Klicken sie auf   Hinzufügen   (der dritte Punkt, Kunde, muss nicht konfiguriert werden).

Damit haben Sie den Router in Thingsboard angelegt und ein Token für den Zugang erstellt.

2.8. Verbindung von Node-RED zu Thingsboard erstellen

Um die in Node-RED ausgelesenen Werte an Thingsboard zu übermitteln, muss der Node-RED-Flow noch um eine MQTT-Ausgabe ergänzt werden.

  1. Fügen Sie einen Netzwerk-Knoten mqtt out im Arbeitsbereich hinzu und doppelklicken Sie ihn, um seine Eigenschaften zu bearbeiten.

  2. Klicken Sie bei Server auf lead pencil, um die Server-Verbindung auf der Registerkarte Verbindung zu konfigurieren:

    • Name: ThingsboardConnection

    • Server: demo.thingsboard.io

    • Port: 1883

    • Connect automatically: checkbox marked

    • Protokoll: MQTT V3.1.1

    • Keep-Alive: 60

    • Bereinigte Sitzung (clean session) verwenden: checkbox marked
      cg de nr app 10

  3. Wechseln Sie zur Registerkarte Sicherheit, geben Sie den in Thingsboard festgelegten Zugangs-Token unter Benutzername ein und lassen Sie das Passwort leer.
    cg de nr app 11

  4. Klicken sie auf   Hinzufügen  .

  5. Geben Sie als Topic v1/devices/me/telemetry und einen beschreibenden Name ein.
    cg de nr app 12

  6. Klicken sie auf   Fertig  .

Verbinden sie die Ausgaben der beiden Funktions-Knoten mit dem Eingang des MQTT-Ausgabe-Knotens.

  1. Klicken sie auf   Übernahme (deploy)   rechts oben in der Titelleiste, um den Flow zu übernehmen.
    cg de nr app 13

Ein grüner Punkt unter dem MQTT-Ausgabe-Knoten zeigt den MQTT-Verbindungsstatus an.

3. Erfolgskontrolle

  1. Klicken Sie in Thingsboard in die Zeile Ihres Geräts und wechseln Sie in den Gerätedetails auf die Registerkarte Neueste Telemetrie.
    cg de nr tb 04

Sie sehen hier nun die zuletzt von Node-RED an Thingsboard übermittelten Werte. Diese können Sie jetzt in Thingsboard mit der Hilfe von Widgets visualisieren.

4. FAQ

  • Warum verliert der MQTT-Ausgabe-Knoten regelmäßig seine Verbindung?
    Wenn der MQTT-Ausgabe-Knoten übernommen wird, verbindet er sich für eine kurze Zeit, trennt die Verbindung und verbindet sich erneut. Versuchen Sie stattdessen Modbus - Flex - Getter oder Modbus - Flex - Write.

  • In welchem Verzeichnis befinden sich die installierten Node-RED-Module?
    Die Knoten werden unter dem Benutzerverzeichnis von Node-RED installiert. Standardmäßig ist das ~/.node-red/. Dieses Verzeichnis enthält Ihre Node-RED-Einstellungsdatei, Flow-Dateien und die Datei package.json, die alle installierten Module auflistet.

  • Wie kann ich meinen Flow mit allen entsprechenden Knoten speichern?
    Klicken Sie auf menu und wählen sie Export. Dann können Sie den gewünschten Flow im json-Format herunterladen.

  • Warum erhalte ich regelmäßige Timeout- oder CRC-Fehler beim Auslesen der Modbus-Werte?
    Wenn diese Fehler vermehrt auftreten, kann dies daran liegen, dass von einer anderen Quelle aus auch auf die serielle Schnittstelle zugegriffen wird. Sorgen Sie dafür, dass nur der Node-RED-Container auf die serielle Schnittstelle zugreift.


1. Standard-IP-Adresse: 192.168.1.1; Anmeldung je nach Konfiguration; Voreinstellung bei älteren Firmware-Versionen: Benutzername: insys, Kennwort: icom
2. Dieser Pfad gilt für einen ECR-Router; bei einem MRX mit MRcard SI in Slot 3 ist der Pfad beispielsweise /devices/3_serial2
3. Damit werden Kollisionen beim Lesen vermieden, wenn mehrere Modbus-Read-Knoten Daten vom Sensor anfordern.