Introduction à MQTT
MQTT est un protocole de communication qui a pris son envol dans la communauté IIoT. C’est un protocole léger et efficace qui fonctionne selon un modèle éditeur/courtier/abonné. Il crée un moyen simple pour les appareils de terrain de communiquer et de récupérer des données à partir d’un seul emplacement. Dans ce didacticiel, nous allons passer en revue MQTT et plonger dans un exemple de la façon dont vous pouvez publier des données à l’aide d’un groov EPIC PAC et récupérer les données à l’aide d’un client MQTT.
Comment fonctionne MQTT
Le modèle Open Systems Interconnection (OSI) est utilisé pour décrire la façon dont les machines et les applications communiquent entre elles. Le modèle a été développé avec l’idée qu’un fournisseur peut utiliser différents protocoles ou composants logiciels à chaque couche sans avoir à repenser l’ensemble de la structure. Le protocole MQTT entrera en jeu au niveau de la couche 7 du modèle; au-dessus de TCP/IP (Couche 4). La raison pour laquelle cela est important est que cela maintient une grande partie de l’infrastructure en place tout en redéfinissant la façon dont les paquets sont envoyés entre les appareils.

Topologie de périphérique de protocole MQTT
Comme mentionné dans l’introduction, MQTT aura trois grands buckets pour chaque nœud :
- Éditeur MQTT | Un éditeur regroupera les données et les enverra au serveur. Un éditeur peut être un capteur unique ou un contrôleur logique programmable (PLC) qui collecte des milliers de nœuds et envoie les données à un serveur.
- Serveur MQTT | Le serveur collectera les données auprès des éditeurs et les rendra disponibles (sur demande) à tous les nœuds abonnés. Le serveur ne traite généralement pas les données ; il le stocke sous forme brute.
- Abonné MQTT | Un abonné créera un lien vers le serveur et écoutera toute modification de données à un emplacement spécifique. L’abonné peut collecter tout ou partie des données selon la fonction qu’il assume. Un abonné peut être un écran (tablette, téléphone…), une unité de traitement (PC, Cloud…) ou un automate qui va agir sur les informations qu’il reçoit.
On a donc la topologie suivante dans le monde de MQTT :

Avantages de MQTT
Il apparaît immédiatement que ce type de modèle présente de multiples avantages par rapport au modèle de sondage traditionnel. MQTT est souvent vendu pour avoir les avantages suivants :
1. Transmission de données sur changement
Le protocole enverra des données lorsqu’un changement est détecté. En d’autres termes, les valeurs numériques doivent basculer tandis que les valeurs analogiques doivent changer au-delà d’un seuil / bande morte défini. Cela réduit la quantité de trafic sur le réseau et ne fournit que des mises à jour significatives à tous les abonnés.
2. Léger
Le protocole MQTT a été conçu dans un souci d’efficacité. Alors que HTTP (même couche OSI) a près de 8000 octets dans l’en-tête, MQTT en a 2. L’en-tête plus petit contribue une fois de plus à une transmission plus rapide et plus efficace des données sur le réseau.
3. Sécurité
MQTT prend en charge les cryptages TLS / SSL et sécurise ainsi les données IoT envoyées via le protocole.
4. Compatibilité réseau TCP/IP et non TCP/IP
Dans la plupart des cas, MQTT utilisera TCP/IP. Cependant, il est possible d’utiliser le protocole sur d’autres réseaux IoT populaires tels que Zigbee et UDP. MQTT fournit une norme spéciale appelée MQTT-SN pour ces types d’applications.
5. Livraison de messages fiable
Les appareils IoT sont conçus avec des connexions réseau instables à l’esprit. Par conséquent, la qualité de service (QoS) joue un rôle important dans le protocole MQTT. Les indicateurs QoS garantiront la livraison et la mise à jour des messages en fonction des conditions du réseau. Si le réseau se détériore, MQTT permettra un niveau de QoS plus élevé qui garantira des tentatives répétées de livraison des messages système.
Exemple MQTT utilisant Opto 22 groov EPIC PAC
Si vous souhaitez apprendre les bases de l’Opto 22 groov EPIC PAC et comment programmer les différentes E/S du contrôleur, vous pouvez lire ce tutoriel.
Maintenant, nous allons activer le courtier MQTT intégré, configurer les paramètres et transmettre les données à un courtier public fourni par HiveMQ. Suivez le guide étape par étape si vous souhaitez tirer le meilleur parti de la configuration et essayez-le par vous-même.
Étape 1 Configuration du producteur MQTT
Étape 1.1 – À partir de « groov Gérer », accédez à « MQTT »

Étape 1.2 – Sélectionnez « Configuration »

Étape 1.3 – Créez le paquet MQTT.
Nous utilisons Sparkplug pour cet exemple ; par conséquent, le premier champ doit être « MQTT avec charges utiles Sparkplug ». Vous pouvez choisir d’utiliser des charges utiles de chaîne ; vous devrez déchiffrer les données en utilisant un protocole différent plus tard.
Les deuxième, troisième et quatrième champs sont facultatifs. Vous les utiliserez plus tard pour récupérer les données.

Étape 2 Configuration du courtier/serveur MQTT
Il y a plusieurs packages logiciels de courtier MQTT disponibles en ligne. L’une de ces solutions est HiveMQ. En plus du logiciel de courtier MQTT, HiveMQ fournit un serveur public accessible dans le monde entier et pouvant être facilement utilisé à des fins de test.
Remarque : Nous ne recommandons certainement pas d’utiliser le courtier public MQTT pour les solutions de production. Cependant, c’est un excellent moyen peu coûteux et rapide de tester une application.
Courtier public MQTT HiveMQ

Étape 2.1 – Configurer une connexion au courtier MQTT
Sur la base des informations ci-dessus, nous «ajoutons un courtier MQTT» à partir de notre EPIC Opto 22 groov.

Il est important de noter que le « Client ID », le « Nom d’utilisateur » et le « Mot de passe » sont facultatifs. Cependant, ils doivent être utilisés pour un système de production afin de maximiser la sécurité. Dans notre exemple, nous publions sur un courtier public en ligne ; tout le monde peut accéder aux données que nous produisons.
Étape 3 Configuration des données d’E/S à envoyer
L’Opto 22 groov EPIC PAC fonctionne avec une large gamme de modules d’entrée et de sortie. Le « Demo Center » que nous avions examiné dans un tutoriel précédent est livré avec 4 cartes d’E/S. L’une de ces cartes est configurée comme une carte d’entrée analogique et peut lire les signaux de tension.
Pour les besoins de cet exemple, nous avons câblé un capteur de distance ifm O1D155 dans l’entrée 1 de la carte analogique.
La configuration de l’entrée est accessible directement depuis le « Groov Manage ».
Étape 3.1 – À partir de « groov Manage », accédez à « I/O »

Étape 3.2 – Sélectionnez la carte d’entrée analogique (IV-24)
Dans notre cas, la carte est dans le slot 3.
Remarque : Votre carte peut être différente et située dans un emplacement différent.

Étape 3.3 – Sélectionnez et configurez l’entrée pour MQTT
Comme mentionné ci-dessus, nous avons sélectionné un capteur de distance à utiliser dans cette démo. La même procédure peut être appliquée à un autre capteur de type analogique ou numérique.



En plus de la configuration ci-dessus, nous devons ouvrir « PAC Control Basic » que nous avons examiné dans un didacticiel précédent et ouvrir l’entrée aux fournisseurs externes.
Étape 3.4 – Configurer les E/S via PAC Control Basic
Ouvrez le logiciel et chargez le programme en cours d’exécution sur le PAC ou créez un nouveau programme.

Accédez à la configuration du canal IO via le menu et définissez le canal que vous souhaitez publier via MQTT sur « Accès public »

Étape 3.5 – Configurer le contrôleur via Groov Manage
La presque dernière étape de la configuration MQTT que nous devons terminer consiste à ajouter le contrôleur en tant que « périphérique » et source de données.
Ajoutez l’API selon la configuration ci-dessous. L’« ID de l’appareil » sera utilisé pour interroger les données.

Étape 3.6 – Activer le client MQTT sur le périphérique
Maintenant que nous avons finalisé la configuration, activez le client sur l’Opto 22 groov EPIC PAC et assurez-vous que le statut est défini sur « En cours d’exécution ».

Étape 4 Réception de données sur MQTT.fx
MQTT.fx est un client MQTT qui peut demander des données à un courtier MQTT. À ce stade, notre PAC devrait publier des données sur HiveMQ. Nous avons besoin de ce logiciel pour visualiser les données publiées.
L’outil peut être téléchargé ici : MQTT.fx Télécharger
Étape 4.1 – Configurer les paramètres du serveur
Lancez MQTT.fx et cliquez sur l’icône d’engrenage pour configurer le serveur.

Configurez le serveur avec les mêmes paramètres que ceux décrits ci-dessus.

Utilisez le bouton « Connecter » sur l’écran principal pour vous connecter au serveur que vous avez configuré.
Étape 4.2 – Connectez-vous au serveur et affichez les données
Nous devons maintenant construire la chaîne qui récupérerait les données du serveur. Regardons chaque élément de la chaîne.
- « spBv1.0 » | La version de Sparkplug que le protocole utilise.
- « SolisPLC » | Le « ID de groupe » que nous avons configuré pour le nœud Edge.
- « DONNEES » | L’emplacement de nos données.
- « GroovEPIC » | L’« ID de nœud Edge » que nous avons configuré pour le nœud Edge.
- « SolisPLCgroovEPIC » | Le « Device IF » que nous avons configuré pour notre appareil.
Voici la chaîne à laquelle nous souscrivons :

Notez qu’il existe d’autres chaînes que vous pouvez utiliser pour afficher des données supplémentaires sur le processeur. Vous pouvez utiliser le caractère générique (« # ») pour ouvrir votre connexion à toutes les sous-chaînes.
Par exemple, il est pratique de tester avec la chaîne « spBv1.0/SolisPLC/# » et de voir l’état de MQTT activé et désactivé.
Étape 5 Comprendre les données MQTT
Le GIF ci-dessous affiche les données entrant dans le logiciel MQTT.fx. Cet outil est utilisé pour récupérer la chaîne du courtier qui peut être consultée par tout autre consommateur selon les besoins.

La chaîne que nous voyons a le format suivant :
{« timestamp »:1615604651429, »métriques »:[{« name »: » », »alias »:301, »timestamp »:1615604651429, »dataType »: »Float », »properties »:{« Quality »:{« type »: »Int32″, »value »:600}}, »value »:0.86325073}], »seq »:230}
Les deux valeurs les plus importantes pour nous sont le « timestamp » et la « valeur ». Ceux-ci représentent à quel moment la lecture de l’entrée a été prise et quelle était la valeur à ce moment-là en volts.
Conclusion sur MQTT
MQTT gagne rapidement en popularité parmi les fabricants d’appareils IIoT. Il s’agit d’un protocole robuste et léger qui est utilisé pour centraliser les données, réduire la charge de trafic sur le réseau et optimiser la façon dont les données sont distribuées sur différents nœuds.
MQTT utilise un modèle éditeur/abonné. L’éditeur pousse les données vers le serveur tandis que l’abonné récupère les données dont il a besoin.
Dans ce tutoriel, nous avons implémenté un exemple MQTT simple en utilisant le matériel Opto 22 groov EPIC avec l’une des entrées liée à un capteur de mesure de distance. Nous avons publié les données du capteur sur un courtier HiveMQ public et les avons récupérées à l’aide de l’outil MQTT.fx. Nous avons appris à créer les données et à récupérer les informations dont nous avons besoin.