Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Technologie industrielle

Déployer Node-RED sur PLCnext avec Docker : Guide étape par étape

Un conteneur Docker peut être utilisé pour exécuter un serveur Node-RED sur un dispositif PLCnext. Bien que l'autre méthode décrite ici soit un peu plus rapide, l'utilisation de conteneurs OCI présente des avantages. Par exemple, quand on utilise répétitivement les mêmes packages pour une application, il peut être utile de construire une image standard et de la télécharger depuis Docker Hub. Docker permet aussi de démarrer et arrêter le serveur Node-RED quand on le souhaite.

Ce blog explique cela. D'abord, je vous guiderai à travers le processus d'installation de Docker et nous vérifierons l'installation. Nous construirons une image personnalisée avec des packages préinstallés à notre goût via un Dockerfile et créerons un conteneur depuis notre image fraîchement créée. Enfin, nous nous assurerons que notre conteneur démarre au boot du contrôleur et pousserons notre image sur Docker Hub.

Installation du moteur Balena

J'ai un peu menti quand j'ai dit que des conteneurs Docker peuvent être utilisés pour exécuter un runtime Node-RED sur un dispositif PLCnext. Comme vous le verrez, nous utilisons le moteur Balena comme moteur pour exécuter des conteneurs, plus précisément des conteneurs OCI (Open Container Initiative). La nomenclature nous mènerait trop loin pour un Makersblog, mais dans la section "Lectures complémentaires" à la fin, j'ai ajouté des liens pour les intéressés.

La procédure d'installation est plutôt simple et se trouve ici pour référence complète, mais pour des raisons pratiques, les commandes sont aussi données dans la section suivante.
Assurez-vous d'être connecté en utilisateur root. Pour créer un nouveau mot de passe root, tapez la commande suivante dans le shell et tapez votre mot de passe admin suivi de deux fois le nouveau mot de passe root.

sudo passwd root

Connectez-vous en utilisateur root en tapant su suivi de votre nouveau mot de passe.

Clonez le dépôt git et allez dans le nouveau dossier

git clone https://github.com/PLCnext/Docker_GettingStarted.git
cd Docker_GettingStarted

Rendez le script d'installation exécutable et exécutez-le.

chmod +x setup.sh
./setup.sh

Accès Internet depuis vos conteneurs

Parfois pendant l'installation, les tables nft sont mal configurées. Heureusement, c'est une correction facile. Le guide de référence complet se trouve ici mais une courte description est donnée ci-dessous.

Dans votre shell, tapez

ifconfig

La configuration de vos interfaces réseau apparaît. L'une d'elles s'appelle Balena, notez l'adresse Inet de cette interface. Cela devrait être quelque chose comme : 172.17.0.1

Entrez la commande suivante dans votre shell et comparez l'adresse Inet reçue à l'étape précédente avec la deuxième ligne du script. Les deux adresses doivent être identiques, si c'est le cas, passez à la section suivante. Sinon, lancez la commande suivante dans votre shell et modifiez l'adresse sur la deuxième ligne pour qu'elle corresponde à celle reçue par ifconfig.

nano /etc/nftables/balena.nft

Arrêtez et redémarrez le démon balena-engine pour recharger les tables nft.

/etc/init.d/balena stop
/etc/init.d/balena start

Mon premier conteneur

Pour télécharger votre premier conteneur, utilisez la commande suivante (les drapeaux seront expliqués plus tard). Maintenant, nous allons télécharger un conteneur Node-RED sans packages personnalisés. Si vous n'avez pas besoin de packages personnalisés, vous pouvez vous arrêter ici et naviguer vers le port 1880 du contrôleur.

balena-engine run -d -p 1880:1880 --name nodered --restart always nodered/node-red

Docker Hub

L'image arm32v7/debian utilisée dans la section précédente a été téléchargée depuis Docker Hub. Docker Hub est essentiellement un endroit où les images de conteneurs sont rassemblées et peuvent être facilement téléchargées. Je recommande l'organisation arm32v7, qui crée des images compatibles avec l'architecture de l'AXC F 2152. L'organisation node-red a créé une image compatible avec l'AXC F 2152, nous l'utiliserons dans la section suivante. Mais d'abord, je tiens à mentionner que si vous utilisez beaucoup de conteneurs, vous devriez créer un compte sur Docker Hub et utiliser ses dépôts. Vous obtenez presque un nombre illimité de dépôts publics et un dépôt privé avec un compte gratuit. J'ai résisté à utiliser Docker Hub un moment, mais cela m'a coûté beaucoup de temps. Dans la dernière section, j'aplanirai un peu la courbe d'apprentissage en montrant comment se connecter, re-tagger une image et pousser une image sur Docker Hub.

Dockerfile

Un Dockerfile est en quelque sorte la recette d'une image Docker. Dans ce blog, nous utiliserons un Dockerfile pour créer notre propre image Node-RED avec les packages dont nous avons besoin installés. La première ligne d'un Dockerfile est presque toujours la commande FROM. Avec cette commande, nous définissons une image de base à partir de laquelle nous construirons notre propre image. Après l'instruction FROM, nous commençons à construire notre image. Il y a beaucoup de commandes possibles dans un Dockerfile mais ici nous n'utiliserons que RUN. Une référence Dockerfile est fournie dans les lectures complémentaires. L'instruction RUN exécutera la commande qui suit à l'intérieur du conteneur que nous sommes en train de construire. Donc pour installer un nouveau package, par exemple le package SNMP, nous écrivons : RUN npm install node-red-node-snmp

Après la théorie, construisons un Dockerfile. J'espère que vous êtes toujours en session SSH (assurez-vous d'être de retour sur l'AXC F 2152 et pas dans le conteneur debian d'il y a deux sections !). Vous pouvez créer le Dockerfile avec nano et copier-coller le contenu dans le nouveau fichier. Sauvegardez (ctrl+s) et quittez (ctrl+x).

nano Dockerfile
FROM nodered/node-red:latest-minimal
RUN npm install node-red-node-snmp

Maintenant, il est temps de construire notre nouvelle image !

balena-engine build . --tag myimage

Quand vous recevez le message que l'image a été taguée avec succès, vous avez construit votre première image ! Pour voir l'image que vous venez de construire, utilisez la commande : balena-engine images

Exécution de notre nouvelle image

Enfin, nous sommes prêts à exécuter notre image et créer un conteneur à partir d'elle ! Lancez la commande suivante dans le shell pour exécuter le conteneur en mode interactif. Interactif signifie que nous pouvons voir dans le terminal ce qui se passe à l'intérieur du conteneur. L'opposé est detached, marqué avec le drapeau -d.

balena-engine run -it -p 1880:1880 --name nodered myimage

Pour sortir du conteneur et le laisser tourner, utilisez ctrl+p ctrl+q. Quand vous naviguez vers l'adresse IP du contrôleur suivie du port 1880, l'environnement Node-RED s'affiche et nous voyons le package SNMP installé !

Démarrage de l'image au boot et primer sur les drapeaux docker run

Il est peu pratique de démarrer le conteneur manuellement à chaque redémarrage de l'AXC F 2152. Heureusement, nous pouvons dire à Docker de le faire pour nous, et c'est facile ! Utilisez simplement la commande ci-dessous. C'est aussi le moment de mieux comprendre les drapeaux docker run. Pour commencer, un drapeau est quelque chose qu'on donne après la commande et qui commence par soit - soit --. Jusqu'ici nous avons vu -it pour exécuter un conteneur en interactif et -d pour detached (en arrière-plan).

Notre commande sera :

balena-engine run -it -p 1880:1880 --name nodered --restart always myimage

Pousser vers Docker Hub

Quand vous voulez utiliser votre image sur différents contrôleurs, c'est une bonne idée de la téléverser sur Docker Hub. En supposant que vous ayez déjà un compte et créé un dépôt Docker, nous continuons. D'abord, connectez-vous à votre compte avec balena-engine login suivi de votre nom d'utilisateur et mot de passe. Maintenant, il est possible de télécharger des images depuis des dépôts privés et de pousser votre image sur Docker Hub.

Pour pousser votre image sur Docker Hub, il est important d'avoir le bon nom. Si j'ai créé un dépôt myrep et mon compte est myaccount, le nom de l'image doit être myaccount/myrep. Si vous ne l'avez pas nommé ainsi lors de la construction, vous devez re-taguer l'image avec balena-engine tag oldimagetag newimagetag. Dans notre cas :

balena-engine tag myimage myaccount/myrep

Sans précision, il aura le tag latest. Il est possible d'ajouter un label en ajoutant : et un nom de label. Exemple :

balena-engine tag myimage myaccount/myrep:alabel

Il ne reste plus qu'à pousser notre image sur Docker Hub :

balena-engine push myaccount/myrep

Lectures complémentaires et références

Technologie industrielle

  1. Guide pratique de l'impression 3D céramique : techniques, matériaux et conseils de conception
  2. Comprendre les colorants basiques : usages, sécurité et applications industrielles
  3. Teintures et pigments industriels : guide complet des applications et types
  4. Démarrage avec TJBot : Construire, Configurer et Contrôler par la Voix Votre Propre Robot IA
  5. Guide Pas à Pas pour Déployer une Passerelle LoRa RAK 831 sur Raspberry Pi 3
  6. Construire une passerelle LoRa avec le module RAK831 sur Raspberry Pi 3 – Guide pas à pas
  7. Réussite durable : leçons de persévérance d'Abraham Lincoln et du leadership maintenance
  8. IA dans l'assurance : Guide pratique de démarrage pour une implémentation réelle
  9. Tutoriel Arduino Débutant 01 : Démarrez votre Premier Projet