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).
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.
-
Öffnen Sie die Bedienoberfläche des Routers in einem Browser: insys.icom [1]
-
Klicken Sie im Menü Assistenten → Schnellstart-Assistent auf STARTEN .
-
Ändern sie optional die Zeit- und Synchronisierungseinstellungen und klicken Sie auf WEITER .
-
Geben Sie die für die Authentifizierung gewünschten Zugangsdaten ein und klicken Sie auf WEITER .
-
Konfigurieren Sie die jeweilige Internet-Verbindung ein und klicken Sie auf WEITER .
-
Konfigurieren Sie optional Ihre VPN-Verbindung (für dieses Beispiel nicht notwendig) und klicken Sie auf WEITER .
-
Ändern Sie optional die Einstellungen der LAN-Verbindung (für dieses Beispiel nicht notwendig) und klicken Sie auf WEITER .
-
Laden Sie optional eine Konfiguration für das icom Router Management auf den Router (für dieses Beispiel nicht notwendig).
-
Klicken Sie auf WIZARD AUSFÜHREN .
-
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ü Status → Dashboard können Sie im Abschnitt WAN-Kette verfolgen, wie die WAN-Kette für die Internet-Verbindung aufgebaut wird.
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.
Falls auf Ihrem Router eine icom Data Suite installiert ist, deaktivieren Sie deren Container im Menü Container → Container durch Deaktivieren der Checkbox Aktiv und klicken Sie auf SPEICHERN . |
-
Öffnen Sie die INSYS Container-Seite und laden sie den Node-RED-Container herunter.
-
Öffnen Sie die Bedienoberfläche des Routers in einem Browser: insys.icom [1]
-
Klicken Sie im Menü Container → Container auf und laden Sie den Container auf den Router.
-
Klicken Sie auf SPEICHERN .
-
Klicken Sie auf 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
-
-
Klicken Sie auf SPEICHERN .
-
Klicken sie auf PROFIL AKTIVIEREN .
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.
-
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
-
-
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
-
Öffnen Sie die Benutzeroberfläche von Node-RED unter der Adresse http://192.168.1.10:1880 (https wird nicht unterstützt!).
-
Klicken Sie auf und wählen sie Palette verwalten.
-
Suchen Sie auf der Registerkarte Installation nach dem Modul node-red-contrib-modbus und installieren sie dieses mit einem Klick auf Installieren.
-
Wechseln Sie auf die Registerkarte Installierte Knoten und klicken sie auf Schließen .
Damit haben Sie das Modbus-Modul in Node-RED installiert und können mit der Entwicklung Ihrer Anwendung fortfahren.
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
-
Wählen Sie links ganz unten einen Modbus-Read-Knoten und ziehen Sie ihn in den Arbeitsbereich.
-
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)
-
-
Klicken Sie bei Server auf , um einen neuen Modbus-Server hinzuzufügen und konfigurieren Sie diesen:
-
Klicken sie auf Hinzufügen .
-
Wechseln Sie zur Registerkarte Optionals und markieren sie die Optionen Show Activities und Show Errors.
-
Klicken sie auf Fertig .
2.6.2. Funktions-Knoten für Temperaturkonvertierung erstellen
-
Wählen Sie einen Funktions-Knoten function und ziehen Sie ihn in den Arbeitsbereich.
-
Doppelklicken sie den Knoten, um seine Eigenschaften auf der Registerkarte Funktion bearbeiten zu können.
-
Kopieren sie folgenden Code in das Nachrichtenfenster:
var tempValue = msg.payload[0]/10; msg.payload = {"Temperature": tempValue}; return msg;
-
Klicken sie auf Fertig .
2.6.3. Knoten zu einem Flow verbinden
-
Verbinden Sie die beiden Knoten, indem Sie auf einen Verbindungspunkt des einen Knotens klicken und eine Linie zum anderen Knoten ziehen.
2.6.4. Modbus-Read-Knoten für den Feuchtesensor erstellen
-
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
-
-
Wechseln Sie zur Registerkarte Optionals und markieren sie die Optionen Show Activities und Show Errors.
-
Klicken sie auf Fertig .
2.6.5. Funktions-Knoten für Temperaturkonvertierung erstellen
-
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;
-
Klicken sie auf Fertig .
-
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
-
Wählen Sie einen allgemeinen Knoten debug und ziehen Sie ihn in den Arbeitsbereich.
-
Doppelklicken sie den Knoten, um seine Eigenschaften bearbeiten zu können.
-
Wählen Sie als Ausgabe msg.payload, um die von den Funktions-Knoten erzeugte Nachricht in einem Debug-Fenster von Node-RED auszugeben.
-
Klicken sie auf Fertig .
-
Verbinden sie die Ausgaben der beiden Funktions-Knoten mit dem Eingang des Debug-Knotens.
2.6.7. Flow in Anwendung übernehmen und Funktion der Anwendung kontrollieren
-
Klicken sie auf Übernahme (deploy) rechts oben in der Titelleiste, um den Flow zu übernehmen.
-
Klicken sie in der rechten Seitenleiste auf , um die Registerkarte Debug zu öffnen.
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.
-
Öffnen Sie Thingsboard, legen Sie wenn noch nicht geschehen einen Account an und melden Sie sich an.
-
Wechseln Sie in das Menü Geräte und klicken Sie auf Gerät hinzufügen → Neues Gerät hinzufügen.
-
Geben Sie einen geeigneten Name für das Gerät ein und klicken Sie auf Nächste: Zugangsdaten.
-
Aktivieren Sie Add credentials, wählen Sie Access token unter Art der Zugangsdaten und geben Sie unter Zugangs-Token eine Zeichenfolge ein.
-
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.
-
Fügen Sie einen Netzwerk-Knoten mqtt out im Arbeitsbereich hinzu und doppelklicken Sie ihn, um seine Eigenschaften zu bearbeiten.
-
Klicken Sie bei Server auf , um die Server-Verbindung auf der Registerkarte Verbindung zu konfigurieren:
-
Name: ThingsboardConnection
-
Server: demo.thingsboard.io
-
Port: 1883
-
Connect automatically:
-
Protokoll: MQTT V3.1.1
-
Keep-Alive: 60
-
Bereinigte Sitzung (clean session) verwenden:
-
-
Wechseln Sie zur Registerkarte Sicherheit, geben Sie den in Thingsboard festgelegten Zugangs-Token unter Benutzername ein und lassen Sie das Passwort leer.
-
Klicken sie auf Hinzufügen .
-
Geben Sie als Topic v1/devices/me/telemetry und einen beschreibenden Name ein.
-
Klicken sie auf Fertig .
Verbinden sie die Ausgaben der beiden Funktions-Knoten mit dem Eingang des MQTT-Ausgabe-Knotens.
-
Klicken sie auf Übernahme (deploy) rechts oben in der Titelleiste, um den Flow zu übernehmen.
Ein grüner Punkt unter dem MQTT-Ausgabe-Knoten zeigt den MQTT-Verbindungsstatus an.
3. Erfolgskontrolle
-
Klicken Sie in Thingsboard in die Zeile Ihres Geräts und wechseln Sie in den Gerätedetails auf die Registerkarte Neueste Telemetrie.
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 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.