Dies ist Teil 2 des Artikels über das Einfügen von Node-RED in das AE2100-Gateway-Produkt von OKI mit dem Namen "AI Edge Computer", um es zu einer IoT-Plattform mit niedrigem Code zu machen. ** Docker für den Aufbau von IoT-Plattformen mit niedrigem Code **. Ich werde.
Teil 1 Vorbereitung für den RS-485-Simulator mit Python Teil 2 Erstellen einer Low-Code-IoT-Plattform mit Docker ** (dieser Artikel) ** Teil 3 Low Code IoT-Praxis mit Node-RED 1 Erstellen eines Dashboards Teil 4 IoT-Praxis mit niedrigem Code und Node-RED 2 MQTT Pub / Sub
Im vorherigen Artikel habe ich einen RS-485-Simulator in Python geschrieben, der auf einem Windows 10-PC ausgeführt wird. Dieses Mal werden wir endlich Node-RED auf dem AE2100 starten. Der größte Teil des Inhalts stammt von Docker.
Erstellen Sie eine Docker-Datei und drücken Sie mehrmals den Docker-Befehl, um Node-RED auf dem AE2100 zu starten.
Erstellen Sie ein Docker-Image mit Node-RED in der Abbildung in ❷.
Melden Sie sich mit SSH beim AE2100 an und arbeiten Sie an Bash.
Dockerfile
Eine Docker-Datei, die ein Image eines Docker-Containers erstellt, der auf dem AE2100 ausgeführt wird. Das ist alles was Sie brauchen.
Dockerfile
FROM nodered/node-red:1.1.3-minimal
USER root
RUN apk add python3 make g++ linux-headers
RUN npm install node-red-node-serialport node-red-dashboard
Geben Sie in Bezug auf den Inhalt dieser Datei zunächst das Basis-Image mit der FROM-Anweisung als Minimum-Image 1.1.3-Minimum von Nodered / Node-Red in Docker Hub an. Fügen Sie dann als root in diesem Alpine Linux-basierten Image ** apk ** die folgenden vier Pakete hinzu, die zum Erstellen des seriellen Node-RED-Kommunikationstreibers erforderlich sind.
Schließlich führt ** npm install ** die folgenden zwei Node-RED-Bibliotheken aus, die für diese Arbeit benötigt werden.
** node-red-node-serialport ** ist eine Bibliothek für die diesmalige Verwendung von RS-485 mit Node-RED auf AE2100. Wie der Name schon sagt, handelt es sich bei dieser Bibliothek um eine Bibliothek, die Node-RED serielle Kommunikationsfunktionen wie RS-232C / RS-485 / RS-422 hinzufügt. Normalerweise ist es eine Bibliothek, die häufig für die RS-232C-Kommunikation verwendet wird, aber sie kann problemlos mit RS-485 verwendet werden (ich habe Multi-Drop nicht ausprobiert).
** Node-Red-Dashboard ** ist eine Bibliothek zum Erstellen einfacher Dashboards mit Node-RED. Es ist sehr beliebt und wird regelmäßig aktualisiert. Die Versionen zum Zeitpunkt des Schreibens waren 3.23.3 bzw. 0.11.0.
Sie können diese beiden Bibliotheken nach dem Start von Node-RED installieren. Da dies diesmal erforderlich ist, wird es in das Image aufgenommen.
Lassen Sie uns nun das Image auf dem AE2100 erstellen. Führen Sie die folgenden Schritte in dem Verzeichnis aus, in dem sich die obige Docker-Datei befindet.
AE2100-Shell
# docker build --tag node-red_v1:appf .
:
Successfully built 3691865b0133
Successfully tagged node-red_v1:appf
Wenn der Build des C ++ - Moduls von node-red-node-serialport startet, werden viele rote Protokolle ausgegeben, aber es sollte in Ordnung sein, wenn "Erfolgreich erstellt ..." angezeigt wird. Sie haben jetzt ein Bild mit dem Tag-Namen "node-red_v1: appf". Das offizielle Minimalbild von 194 MB wurde um verschiedene Elemente erweitert, wodurch sich das Gesamtbild auf 441 MB beläuft. .. .. Für den AE2100 mit 32 GB eMMC ist jedoch noch viel Platz vorhanden.
Es ist der Start des Containers! Stellen Sie Port 1880 für den Zugriff auf Node-RED und Port 1883 für MQTT so wie sie sind im Container verfügbar. Die Gerätedatei für RS-485 auf dem AE2100 lautet / dev / ttyRS485. Dies wird auch im Container so wie er ist verwendet. Stellen Sie dann das Verzeichnis /home/root/.node-red des AE2100-Hosts in / data des Containers bereit, damit die Node-RED-Konfigurationsdateien und -Flows im Dateisystem auf der AE2100-Hostseite gespeichert werden. Node-RED-Flows und -Bibliotheken werden häufig aktualisiert.
# docker run -it -p 1880:1880 -p 1883:1883 --device=/dev/ttyRS485:/dev/ttyRS485 -v /home/root/.node-red:/data --name node-red-1 node-red_v1:appf
> [email protected] start /usr/src/node-red
> node $NODE_OPTIONS node_modules/node-red/red.js $FLOWS "--userDir" "/data"
8 Sep 23:27:27 - [info]
Welcome to Node-RED
===================
8 Sep 23:27:27 - [info] Node-RED version: v1.1.3
8 Sep 23:27:27 - [info] Node.js version: v10.22.0
8 Sep 23:27:27 - [info] Linux 4.14.67-intel-pk-standard x64 LE
8 Sep 23:27:27 - [info] Loading palette nodes
8 Sep 23:27:29 - [info] Dashboard version 2.23.3 started at /ui
8 Sep 23:27:29 - [info] Settings file : /data/settings.js
8 Sep 23:27:29 - [info] Context store : 'default' [module=memory]
8 Sep 23:27:29 - [info] User directory : /data
8 Sep 23:27:29 - [warn] Projects disabled : editorTheme.projects.enabled=false
8 Sep 23:27:29 - [info] Flows file : /data/flows.json
8 Sep 23:27:29 - [info] Creating new flow file
8 Sep 23:27:29 - [warn]
---------------------------------------------------------------------
Your flow credentials file is encrypted using a system-generated key.
If the system-generated key is lost for any reason, your credentials
file will not be recoverable, you will have to delete it and re-enter
your credentials.
You should set your own key using the 'credentialSecret' option in
your settings file. Node-RED will then re-encrypt your credentials
file using your chosen key the next time you deploy a change.
---------------------------------------------------------------------
8 Sep 23:27:29 - [info] Server now running at http://127.0.0.1:1880/
8 Sep 23:27:29 - [info] Starting flows
8 Sep 23:27:29 - [info] Started flows
Bist du fehlerfrei aufgestanden? Möchten Sie mit dem Docker-Befehl überprüfen?
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
122cd69c5b65 node-red_v1:appf "npm start --cache /…" 15 seconds ago Up 14 seconds (health: starting) 0.0.0.0:1880->1880/tcp, 0.0.0.0:1883->1883/tcp node-red-1
Es scheint mit dem Namen "node-red-1" zu funktionieren, der zur Laufzeit durch die Option "--name" angegeben wird.
Stellen Sie nun mit einem Webbrowser auf Ihrem PC eine Verbindung zu diesem Node-RED her. Die URL sieht folgendermaßen aus:
http://IP-Adresse von AE2100:1880
Sie sollten den bekannten Flow-Editor sehen.
In der Netzwerkpalette wurden unten drei Knoten "** serial in ", " serial out " und " serial request **" hinzugefügt. Die Node-Red-Node-Serialport-Bibliothek, die durch den in der Docker-Datei beschriebenen RUN-Befehl installiert wurde.
Sogar im Minimal-Image gibt es MQTT- und WebSocket-Knoten, was wirklich Node-RED ist. Ist es natürlich, weil es sich um eine Low-Code-IoT-Entwicklungsplattform handelt?
Am unteren Rand der Palette ** Dashboard ** befinden sich auch die Knoten der Bibliothek ** Node-Red-Dashboard **, die in der Docker-Datei installiert sind.
Wie ich bereits etwas früher erklärt habe, ist es sehr einfach, ein kleines Dashboard zu erstellen. Es kann auch zum Debuggen von Unterstützung verwendet werden und ist eine unverzichtbare externe Bibliothek.
Dies vervollständigt die Low-Code-IoT-Entwicklungsplattform AE2100! Sobald Node-RED gestartet ist, kann ich es denjenigen, die Erfahrung mit Node-RED haben, nicht weiter erklären, aber da es eine große Sache ist, habe ich beschlossen, einen einfachen IoT-ähnlichen praktischen Artikel für Node-RED-Anfänger zu schreiben. .. Erstellen Sie zunächst eine Anwendung, die Sensordaten vom RS-485-Simulator erfasst und in einem einfachen Dashboard in einem Webbrowser anzeigt.
Recommended Posts