[DOCKER] J'ai essayé l'IoT low code avec OKI AE2100 et Node-RED. Partie 2 Construction

Créer une plateforme IoT low-code avec Docker

introduction

Ceci est la partie 2 de l'article sur la mise en place de Node-RED sur la passerelle AE2100 d'OKI appelée «AI Edge Computer» pour en faire une plate-forme IoT low-code, ** Docker pour la construction de plates-formes IoT low-code **. Je vais.

Partie 1 Préparation pour le simulateur RS-485 avec Python Partie 2 Création d'une plateforme IoT low-code avec Docker ** (cet article) ** Partie 3 Pratique IoT Low Code avec Node-RED 1 Création d'un tableau de bord Partie 4 Node-RED Low Code IoT Practice 2 MQTT Pub / Sub

Dans l'article précédent, j'ai écrit un simulateur RS-485 en Python qui fonctionne sur un PC Windows 10. Cette fois, nous allons enfin lancer Node-RED sur l'AE2100. La plupart du contenu est le travail de Docker.

Créez un Dockerfile et appuyez plusieurs fois sur la commande Docker pour lancer Node-RED sur l'AE2100.

Je vais faire quelque chose comme ça

image.png

Créez une image Docker avec Node-RED installé dans ❷ sur la figure.

Créer une image Docker

Connectez-vous à l'AE2100 avec SSH et travaillez sur Bash.

Dockerfile

Un Dockerfile qui crée une image d'un conteneur Docker qui s'exécute sur l'AE2100. C'est tout ce dont vous avez besoin.

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

En ce qui concerne le contenu de ce fichier, spécifiez d'abord l'image de base avec l'instruction FROM comme image minimale 1.1.3-minimale de nodered / node-red dans Docker Hub. Ensuite, en tant que root dans cette image Alpine Linux, ** apk ajoute ** les quatre packages suivants nécessaires pour construire le pilote de communication série Node-RED.

Enfin, ** npm install ** effectuera les deux bibliothèques Node-RED suivantes nécessaires à ce travail.

** node-red-node-serialport ** est une bibliothèque pour utiliser RS-485 avec Node-RED sur AE2100 cette fois. Comme son nom l'indique, cette bibliothèque est une bibliothèque qui ajoute des fonctions de communication série telles que RS-232C / RS-485 / RS-422 à Node-RED. Normalement, c'est une librairie souvent utilisée pour la communication RS-232C, mais elle pourrait être utilisée avec RS-485 sans aucun problème (je n'ai pas essayé le multi-drop).

** node-red-dashboard ** est une bibliothèque pour créer des tableaux de bord simples avec Node-RED. Il est très populaire et est mis à jour fréquemment. Les versions au moment de la rédaction étaient respectivement 3.23.3 et 0.11.0.

Vous pouvez installer ces deux bibliothèques après le démarrage de Node-RED, mais comme cela est nécessaire cette fois, il sera inclus dans l'image.

Créer une image Docker

Construisons maintenant l'image sur l'AE2100. Exécutez ce qui suit dans le répertoire où se trouve le Dockerfile ci-dessus.

AE2100-Shell


# docker build --tag node-red_v1:appf .
  :
Successfully built 3691865b0133
Successfully tagged node-red_v1:appf

Lorsque la construction du module C ++ de node-red-node-serialport démarre, un grand nombre de journaux en rouge sont générés, mais cela devrait être correct si «Successfully build ...» s'affiche. Vous avez maintenant une image avec le nom de tag "node-red_v1: appf". Divers ajouts ont été apportés à l'image minimale officielle de 194 Mo, ce qui porte l'image totale à 441 Mo. .. .. Mais pour l'AE2100 avec une eMMC de 32 Go, il reste encore beaucoup de place.

Exécuter le conteneur Docker

C'est le lancement du container! Rendre le port 1880 pour accéder à Node-RED et le port 1883 pour MQTT disponibles dans le conteneur tels quels. Le fichier de périphérique pour RS-485 sur l'AE2100 est / dev / ttyRS485. Cela sera également utilisé dans le conteneur tel quel. Ensuite, montez en volume le répertoire /home/root/.node-red de l'hôte AE2100 sur / data du conteneur afin que les fichiers de configuration et les flux Node-RED soient stockés dans le système de fichiers du côté hôte AE2100. Les flux et bibliothèques Node-RED sont fréquemment mis à jour.

# 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

Vous êtes-vous levé sans aucune erreur? Souhaitez-vous vérifier avec la commande Docker?

# 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

Il semble fonctionner avec le nom "node-red-1" spécifié par l'option "--name" au moment de l'exécution.

Confirmation de l'exécution de Node-RED

Maintenant, connectons-nous à ce Node-RED avec un navigateur Web sur votre PC. L'URL ressemble à ceci:

http://Adresse IP de l'AE2100:1880

image.png

Vous devriez voir l'éditeur de flux familier.

En regardant la palette réseau, trois nœuds «** serial in », « serial out » et « serial request **» ont été ajoutés en bas. La bibliothèque node-red-node-serialport installée par l'instruction RUN décrite dans le Dockerfile. image.png

Même dans l'image Minimal, il y a des nœuds MQTT et WebSocket, qui sont vraiment Node-RED. Est-ce naturel parce qu'il s'agit d'une plateforme de développement IoT low-code?

Le bas de la palette ** dashboard ** est également les nœuds de la bibliothèque ** node-red-dashboard ** installée dans le Dockerfile.

image.png

Comme je l'ai expliqué un peu plus tôt, cela rend très facile la création d'un petit tableau de bord, il peut également être utilisé pour le support de débogage, et c'est une bibliothèque externe indispensable.

enfin

Ceci complète la plate-forme de développement IoT low-code AE2100! Une fois Node-RED lancé, je ne peux pas l'expliquer davantage à ceux qui ont de l'expérience avec Node-RED, mais comme c'est un gros problème, j'ai décidé d'écrire un simple article pratique de type IoT pour les débutants de Node-RED. .. Tout d'abord, créez une application qui capture les données du capteur à partir du simulateur RS-485 et l'affiche sur un simple tableau de bord sur un navigateur Web.

Recommended Posts

J'ai essayé l'IoT low code avec OKI AE2100 et Node-RED. Partie 2 Construction
J'ai essayé de toucher JavaScript Part.1 Système de code de traitement de base
J'ai essayé OCR de traiter un fichier PDF avec Java part2
J'ai essayé node-jt400 (Construction de l'environnement)
J'ai essayé DI avec Ruby
J'ai essayé l'analyse du code source
J'ai essayé UPSERT avec PostgreSQL.
J'ai essayé BIND avec Docker
J'ai essayé de créer une application d'apprentissage automatique avec Dash (+ Docker) part1 ~ Construction de l'environnement et vérification du fonctionnement ~
J'ai essayé d'utiliser JOOQ avec Gradle
J'ai essayé d'interagir avec Java
J'ai essayé la communication UDP avec Java
J'ai essayé GraphQL avec Spring Boot
J'ai essayé Flyway avec Spring Boot
J'ai essayé de personnaliser Slim avec Scaffold