[DOCKER] Ich habe Low Code IoT mit OKI AE2100 & Node-RED ausprobiert. Teil 2 Aufbau

Aufbau einer Low-Code-IoT-Plattform mit Docker

Einführung

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.

Ich werde so etwas tun

image.png

Erstellen Sie ein Docker-Image mit Node-RED in der Abbildung in ❷.

Erstellen Sie ein Docker-Image

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.

Erstellen Sie ein Docker-Image

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.

Führen Sie den Docker-Container aus

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.

Bestätigung der Node-RED-Ausführung

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

image.png

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. image.png

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.

image.png

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.

schließlich

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

Ich habe Low Code IoT mit OKI AE2100 & Node-RED ausprobiert. Teil 2 Aufbau
Ich habe versucht, JavaScript Part.1 Basic Processing Code System zu berühren
Ich habe versucht, eine PDF-Datei mit Java part2 zu verarbeiten
Ich habe versucht, node-jt400 (Umgebungskonstruktion)
Ich habe DI mit Ruby versucht
Ich habe versucht, den Quellcode zu analysieren
Ich habe UPSERT mit PostgreSQL ausprobiert.
Ich habe BIND mit Docker ausprobiert
Ich habe versucht, eine Anwendung für maschinelles Lernen mit Dash (+ Docker) Teil 1 ~ Umgebungskonstruktion und Funktionsprüfung ~ zu erstellen
Ich habe versucht, JOOQ mit Gradle zu verwenden
Ich habe versucht, mit Java zu interagieren
Ich habe versucht, UDP mit Java zu kommunizieren
Ich habe GraphQL mit Spring Boot ausprobiert
Ich habe Flyway mit Spring Boot ausprobiert
Ich habe versucht, Slim mit Scaffold anzupassen