IoT Worlds
MQTT
Appareil intelligentBlog

La signification MQTT pour connecter des appareils IoT avec des applications Web

Avec tous les protocoles de messagerie disponibles, il peut être difficile d’en choisir un seul. Et avec autant d’options, il est trop facile de se retrouver dans une situation où vous en essayez une qui ne fonctionne pas pour vous ou votre équipe. Mqtt est un protocole léger qui ne nécessite que des clients et des courtiers, il est donc parfait pour les situations où vous ne voulez pas de soucis. Cet article explorera de quoi ce protocole est capable et comment il réalise ces choses!

Qu’est-ce que MQTT ?

Mqtt est un protocole de messagerie léger qui ne nécessite que des clients et des courtiers. C’est parfait pour les situations où vous ne voulez pas de tracas ou d’histoires, car cela nécessite si peu de votre part.

Qu’est-ce qu’un protocole de messagerie?

Un protocole de messagerie est un ensemble de règles utilisées pour permettre aux applications sur différentes machines de communiquer. Mqtt a été spécialement conçu pour l’Internet des objets (IoT). Avec un si large éventail d’autres protocoles disponibles, il peut sembler étrange d’en créer un autre à cette fin. Mais, étant donné que tant d’appareils et de services reposent sur ce domaine, nous en verrons probablement de plus en plus au fil du temps!

Qu’y a-t-il de si génial avec MQTT?

Mqtt est vraiment unique, car il vous donne tellement avec presque rien. Vous n’avez pas besoin d’un serveur dédié ou d’un redirecteur comme le font de nombreux autres protocoles, ce qui signifie pas de problèmes d’infrastructure non plus. Tout ce dont vous avez besoin est un courtier déjà existant et tout matériel avec une connexion Internet. Grâce à la qualité de son travail et à sa légèreté, ce protocole connaît un succès grandissant. Parce qu’il est open source et gratuit, vous pouvez facilement commencer sans avoir à payer de frais ou de frais d’abonnement. Et avec la prise en charge des courtiers intégrée à la bibliothèque MQTT pour Arduino, nous sommes ravis de voir quels excellents produits nous seront proposés.

Quelles sont les fonctionnalités de MQTT ?

Mqtt est l’un des meilleurs exemples de protocole de messagerie simple et léger que vous trouverez. Son principal argument de vente est sa facilité d’utilisation – tout appareil doté d’une connexion Internet peut profiter de ce que ce protocole a à offrir. Mais il y a plus qu’une simple facilité d’utilisation à ce protocole. Explorons ce que vous pouvez en attendre d’autre!

Exemples d’utilisation de MQTT

une. Appareils IoT dans une usine contrôlant des pompes et des vannes

b. Une station météo avec un capteur rapportant à une base de données sur le cloud

c. Un système d’alarme qui signale l’ouverture ou la fermeture des portes

ré. Certaines lumières dans un bureau s’allument lorsqu’un mouvement est détecté

1. Qu’est-ce que MQTT et quelles sont ses fonctionnalités?

MQTT signifie Message Queuing Telemetry Transport, ce qui peut sembler compliqué, mais signifie simplement que c’est un moyen pour les appareils IoT de communiquer entre eux via Internet. Il s’exécute sur TCP/IP comme HTTP, SMTP, etc., mais contrairement à HTTP qui sert à communiquer sur Internet, MQTT est utilisé avec des appareils connectés les uns aux autres avec un réseau, généralement un réseau IP. Il est le plus souvent utilisé dans l’IoT avec des appareils embarqués de faible puissance qui se connectent à des éléments tels que des cartes Raspberry Pi ou Arduino.

2. Comment ça marche ?

Cela fonctionne un peu comme un e-mail. Un appareil IoT publie un message dans un sujet. C’est comme envoyer un e-mail à quelqu’un, mais au lieu d’une personne, c’est un nom de sujet. Le message peut contenir jusqu’à 2 Ko de données et est envoyé sous forme de paquet.

Un deuxième abonné MQTT écoute les paquets avec son propre ID unique ou son ID client. Il fait ensuite quelque chose avec le message. C’est comme lorsque quelqu’un reçoit un e-mail, il en fait quelque chose ; lisez-le, envoyez-le ailleurs, etc.

MQTT a un niveau de qualité de service (QoS), ce qui signifie qu’il peut y avoir différents niveaux de priorité pour les messages. Le niveau de QoS est défini par le client et chaque paquet envoyé a ce niveau de priorité.

3. Avantages de MQTT

Il est léger, fonctionne sur TCP/IP, moins de surcharge que HTTP

Les messages sont stockés dans une file d’attente jusqu’à ce qu’ils puissent être envoyés à leur appareil de destination

Il a un support de reconnexion intégré

Chaque client peut avoir sa propre configuration de sécurité pour l’authentification et le cryptage

QoS permet aux différents types de messages d’avoir différents niveaux de priorité

4. Applications de MQTT

Quelques exemples de son utilisation dans le monde réel sont avec l’Alliance M2M, un projet qui vise à connecter des «objets» avec une plate-forme sécurisée pour le transfert de données entre les appareils. Un autre cas d’utilisation concerne le projet CEPH. Il s’agit d’un système de stockage en nuage qui peut stocker et partager des fichiers simultanément avec plusieurs utilisateurs. Il utilise MQTT pour sécuriser l’accès distribué en cryptant les données, ce qui permet de les transférer entre les appareils IoT à l’aide de diverses passerelles sans avoir à se soucier de la sécurité des données.

5. Premiers pas avec MQTT

La première chose dont on a besoin est un client MQTT ; c’est l’application qui envoie et reçoit des messages. La fondation Raspberry Pi propose un guide pour démarrer avec MQTT sur votre appareil Pi. Il existe également d’autres guides disponibles, tels que celui de Hackster, qui vous donne le code à exécuter sur le langage de programmation Python.

Les meilleurs cours en ligne MQTT

  1. Maîtriser le MQTT
  2. Protocole maître MQTT
  3. Développer l’application Android client MQTT
  4. Masterclass MQTT
  5. Maîtriser le protocole MQTT: un guide de niveau débutant à avancé
  6. IoT: MQTT avec Adafruit, App Inventor et ESP8266
  7. MQTT Nodemcu (ESP8266) avec Nodered, Wifi et Bluetooth

TLS vs SSL pour créer un courtier MQTT

Avantages de l’utilisation de TLS:

-Sécurité : TLS fournit une connexion sécurisée entre le client et le courtier. Cela aide à protéger contre les attaques de l’homme du milieu et l’écoute clandestine.

-Authentification:TLS fournit une authentification du courtier et du client, ce qui permet de garantir que seuls les clients autorisés peuvent se connecter au courtier.

-Cryptage:TLS fournit un cryptage des données entre le client et le courtier, aidant à protéger les informations contre les personnes non autorisées.

Inconvénients de l’utilisation de TLS:

-Performances:TLS peut ajouter une surcharge aux communications, ce qui peut réduire les performances.

-Certificats: pour utiliser TLS, vous avez besoin de certificats pour le client et le courtier. Ces certificats peuvent être difficiles à obtenir et peuvent être coûteux à utiliser, ce qui peut augmenter le coût d’utilisation de TLS.

Avantages de l’utilisation de SSL:

-Sécurité : SSL fournit une connexion sécurisée entre le client et le courtier, tout comme TLS. Il aide également à protéger contre les attaques de l’homme du milieu et l’écoute clandestine.

-Certificats: étant donné que SSL est construit au-dessus de TLS, vous pouvez utiliser les mêmes certificats pour chiffrer le trafic.

Inconvénients de l’utilisation de SSL:

-Performance: le chiffrement entre le client et le courtier ajoutera une surcharge aux communications, ce qui réduit les performances.

-Utilisation de la mémoire: le protocole SSL utilisera plus de mémoire que les autres protocoles car il maintient une session de cryptage/décryptage avec le courtier.

-Problèmes de version: SSL est un protocole plus ancien et il ne prend pas en charge certaines des fonctionnalités fournies par TLS (par exemple, les nouveaux chiffrements).

Comme vous pouvez le voir, TLS et SSL assurent tous deux la sécurité, l’authentification et le cryptage pour la communication entre les clients et les courtiers ; cependant, ils le font de manière légèrement différente. Il n’y a pas de gagnant clair lorsqu’il s’agit de décider si vous devez utiliser TLS ou SSL pour votre courtier MQTT, car la décision dépendra de ce dont vous avez besoin de votre infrastructure et du temps/d’argent dont vous disposez à dépenser.

En conclusion je dirais qu’il y a une bonne réponse selon les besoins du projet. Dans ce cas, il est préférable d’utiliser TLS, car il offre plus d’avantages que SSL.

Les 5 principales raisons d’utiliser le protocole MQTT dans vos projets IoT

MQTT est un protocole de messagerie de machine à machine (M2M), conçu pour les appareils aux ressources limitées, qui connecte les appareils au cloud.

1. Il est léger et facile à utiliser : MQTT est un protocole de messagerie de publication/abonnement conçu pour être léger et facile à utiliser.

2. Il a un faible encombrement: MQTT utilise environ 1/10e de la bande passante de HTTP, ce qui le rend idéal pour les applications IoT avec des ressources réseau limitées.

3. Il prend en charge la qualité de service: MQTT prend en charge la qualité de service (QoS), qui garantit la livraison des messages avec la latence ou la qualité souhaitée.

4. Il peut fonctionner sur n’importe quel réseau : MQTT est un protocole multiplateforme qui peut fonctionner sur les réseaux cellulaires WiFi, Bluetooth Low Energy (BLE) ou 2G/3G.

5. Il dispose de plusieurs bibliothèques clientes disponibles dans de nombreux langages de programmation : Il existe des bibliothèques clientes pour C, C++, JavaScript, Arduino IDE, Python et Java.

Comment configurer un courtier MQTT à l’aide d’un conteneur Docker sur votre PC ou un serveur VPS?

MQTT est un protocole de messagerie de machine à machine (M2M)/«IoT», conçu comme un transport de messagerie de publication/abonnement extrêmement léger. Il est utile pour les connexions avec des emplacements distants où une faible empreinte de code est requise et/ou la bande passante du réseau est primordiale.

Dans cet article, nous allons vous montrer comment configurer un courtier MQTT à l’aide d’un conteneur Docker sur votre PC ou un serveur VPS.

Docker est un moteur de conteneurisation qui vous aide à déployer facilement vos applications avec toutes ses dépendances. Il fournit un environnement cohérent sur chaque hôte Docker, vous permet de gagner du temps et d’améliorer la portabilité de votre code entre les différentes distributions Linux. Par exemple, si une application dépend d’un grand nombre de bibliothèques système ou de certaines versions de bibliothèques rares, et donc difficilement portable, vous pouvez simplement l’encapsuler et la déployer en tant que conteneur Docker.

1) Installation de Docker pour Windows/Mac

Docker est disponible pour les utilisateurs de Microsoft Windows et Mac OS X. Vous pouvez télécharger la version appropriée ici: https://docs.docker.com/docker-for-windows/install/.

2) Installation de Docker-compose sur votre hôte

Afin de déployer facilement notre broker MQTT fait maison, nous utiliserons l’outil docker-compose. Il vous permet de définir et d’exécuter des applications Docker multi-conteneurs à l’aide d’un simple fichier YAML. Vous pouvez en savoir plus sur docker-compose ici: https://docs.docker.com/compose/.

Vous pouvez télécharger l’outil docker-compose à partir d’ici: https://github.com/docker/compose/releases/. Une fois cela fait, vous devriez pouvoir exécuter la commande ‘docker-compose’ dans votre terminal et vérifier sa version ou utiliser l’une de ses sous-commandes.

Terminologie Docker de base pour cet article:

1) «Conteneur Docker» est le processus qui s’exécute en arrière-plan lorsque vous exécutez une image à l’aide de la commande docker run. Une instance en cours d’exécution d’une image est appelée un «conteneur», en ce qui concerne sa création lors de la construction de docker.

2) «Image Docker» est un modèle en lecture seule avec des instructions pour créer un conteneur Docker. Il est composé d’une série de couches de système de fichiers représentant différents états de l’image finale que nous voulons créer

3) La commande copy at docker build crée une image en lisant sa description à partir d’un fichier Docker dans le répertoire de travail actuel, puis en exécutant la commande appropriée dans un nouveau calque au-dessus de l’image actuelle.

4) Les «volumes» sont des dossiers qui vous permettent de mapper des dossiers locaux sur votre machine hôte vers des répertoires à l’intérieur de vos conteneurs Docker. Ceci est utile si, par exemple, vous souhaitez stocker des données sur votre conteneur ou vos fichiers de configuration. Vous pouvez créer un volume en spécifiant le chemin du dossier à partir de votre système hôte à l’aide de docker run.

Le fichier YAML est un fichier de configuration qui contient des informations pour la connexion à une base de données externe, un serveur MQTT, etc., ainsi que des informations sur la manière et les conteneurs à créer. Nous allons créer un fichier YAML pour configurer notre courtier dans la section suivante.

3) Création du fichier YAML pour configurer votre Broker MQTT

Les fichiers YAML sont généralement composés de plusieurs paires clé-valeur, qui sont connectées par des deux-points (« : »). Vous pouvez en savoir plus sur YAML ici: https://en.wikipedia.org/wiki/YAML#Syntax.

Dans notre cas, nous allons créer un fichier YAML pour configurer le broker MQTT comme suit:

version : « 3 »

Dans cette section du YAML, nous définissons le nom du conteneur comme «homer-mqtt» et spécifions l’image qui doit être utilisée pour le créer. Dans ce cas, nous choisirons l’image « davidtgoldblatt/homer-mqtt » de Docker Hub à partir d’ici: https://hub.docker.com/_/homer-mqtt/.

Dans notre fichier YAML, nous déclarons également quelques volumes comme suit:

tomes :

– /var/run/docker.sock:/var/run/docker.sock

Ces volumes nous permettront d’avoir un stockage persistant pour le conteneur Docker, permettant à nos paramètres de persister lors des redémarrages et des plantages du serveur. Vous pouvez en savoir plus sur les volumes ici: https://docs.docker.com/engine/userguide/dockervolumes/.

Afin de spécifier les détails de notre base de données, nous ajoutons une section «db_addresses» avec les entrées suivantes:

adresses_base:

– « hôte=172.17.0.2 port=3306 utilisateur=homer dbname=homer »

Dans l’exemple ci-dessus, nous spécifions un hôte et un port pour notre instance de base de données. Notez que lorsque vous spécifiez un utilisateur, vous devez ajouter un symbole « @ » avant le nom d’utilisateur. C’est parce que le nom d’utilisateur se compose à la fois de lettres et de chiffres dans les systèmes Unix. Si vous omettez cela, Docker se plaint avec des erreurs comme celle-ci:

vous devez échapper des caractères spéciaux comme @ ou *

Afin de spécifier nos identifiants de base de données, nous ajoutons une section «database_password» comme suit:

database_password: « homerun1 »

Dans l’exemple ci-dessus, vous devez utiliser le mot de passe de votre choix. Si vous souhaitez configurer un mot de passe de base de données pour la première fois, vous pouvez consulter notre guide sur la création d’un nouvel utilisateur root sans mot de passe ici: https://homer-mqtt.readthedocs.io/en/latest/configure_database_and_create_new_root_user .html

Afin de spécifier les détails de notre serveur MQTT, nous ajoutons une section «mqtt_server» avec les entrées suivantes:

mqtt_server:

– nom : mqtt hôte : 172.17.0.1 port : 8883 nom d’utilisateur :  » homerun  » mot de passe :  » homerun1 « 

Dans l’exemple ci-dessus, nous exécutons le courtier sur le port 8883 et utilisons le nom d’utilisateur « homerun » et le mot de passe « homerun1 », que nous avons créés dans notre base de données.

4) Exécutez votre courtier MQTT avec Docker

Dans cette étape, nous allons créer un conteneur Docker à partir de notre fichier YAML et l’exécuter.

Pour ce faire, allez dans le répertoire où vous avez le fichier YAML et exécutez « docker-compose up » comme suit :

$ docker-composer

Cette commande va créer un nouveau conteneur Docker basé sur la description de votre fichier YAML et le démarrer.

Si vous souhaitez démarrer cela en arrière-plan, utilisez plutôt « docker-compose up -d ». Si vous souhaitez imprimer les journaux de votre conteneur docker, exécutez « docker-compose logs mqttclient » comme suit:

$ docker-compose journaux mqttclient

Vous pouvez également voir le conteneur docker en temps réel en utilisant « docker-compose ps » comme suit:

$ docker-composer ps

5) Exécuter votre client MQTT avec Docker

Dans cette étape, nous allons créer un conteneur Docker à partir de notre fichier YAML et l’exécuter.

Pour ce faire, allez dans le répertoire où vous avez le fichier YAML et exécutez « docker-compose up » comme suit :

$ docker-composer

Cette commande va créer un nouveau conteneur Docker basé sur la description de votre fichier YAML et le démarrer.

Si vous souhaitez démarrer cela en arrière-plan, utilisez plutôt « docker-compose up -d ». Vous pouvez également voir le conteneur docker en temps réel en utilisant « docker-compose ps » comme suit:

$ docker-composer ps

6) Utilisation de votre client MQTT avec Docker

Maintenant que notre fichier YAML est configuré, nous pouvons maintenant commencer à utiliser notre client MQTT avec Docker.

Pour ce faire, allez dans le répertoire où vous avez votre fichier YAML et exécutez « docker exec » comme suit :

$ docker exec -it mqttclient /bin/bash

Vous devriez maintenant voir un répertoire appelé « /home/homerun » (qui est le répertoire personnel de notre conteneur docker) et vous devriez être à l’intérieur de ce répertoire.

Vous pouvez maintenant voir vos bases de données en tapant « mysql -uroot -proot » comme suit :

$ mysql -uroot -proot

Vous devriez voir toutes vos bases de données à l’écran. Vous pouvez voir comment créer un nouvel utilisateur root sans mot de passe pour l’instance MySQL ici: https://homer-mqtt.readthedocs.io/en/latest/configure_database_and_create_new_root_user.html

Pour exécuter la commande client MQTT dans Docker, vous devez saisir «sbin/mqtt» comme suit:

$ sbin/mqtt -c /home/homerun/config.yaml

Dans l’exemple ci-dessus, nous spécifions un fichier de configuration avec l’indicateur -c, qui lit nos paramètres MQTT à partir du fichier de configuration que nous avons créé dans ce didacticiel.

Afin de vérifier si votre client MQTT est opérationnel, vous pouvez utiliser « docker-compose ps » comme suit:

$ docker-composer ps

Dans l’exemple ci-dessus, notre client MQTT a été démarré avec succès. Vous devriez maintenant voir toutes vos bases de données à l’écran.

Pour exécuter la commande client MQTT dans Docker, vous devez saisir «sbin/mqtt» comme suit:

$ sbin/mqtt -c /home/homerun/config.yaml

Dans l’exemple ci-dessus, nous spécifions un fichier de configuration avec l’indicateur -c, qui lit nos paramètres MQTT à partir du fichier de configuration que nous avons créé dans ce didacticiel.

Afin de vérifier si votre client MQTT est opérationnel, vous pouvez utiliser « docker-compose ps » comme suit:

$ docker-composer ps

Dans l’exemple ci-dessus, notre client MQTT a été démarré avec succès. Vous devriez maintenant voir toutes vos bases de données à l’écran et vous pouvez essayer de publier des messages pour tester si tout fonctionne correctement:

$ docker exec -it mqttclient /bin/bash

$ sbin/mqtt publish -t ‘test’ -h 172.17.0.1 -m ‘hello world !’

$ docker exec -it mqttclient /bin/bash

$ sbin/mqtt subscription -t ‘test’ -h 172.17.0.1 -u mqttuser

7) Nettoyer votre client MQTT avec Docker

Afin d’arrêter votre conteneur Docker, vous devez exécuter « docker-compose down » comme suit:

$ docker-composer vers le bas

8) Nettoyer votre client MQTT avec Docker Volumes

Afin d’arrêter la création de votre base de données mysql et de votre utilisateur mqtt, vous pouvez utiliser l’indicateur -v.

$ docker-compose down -v

Vous pouvez également nettoyer votre environnement en supprimant le répertoire qui contient votre fichier YAML.

La base de données MySQL et l’utilisateur mqtt ont été créés avec succès! Ils seront supprimés automatiquement lorsque vous supprimerez le conteneur Docker. Vous pouvez maintenant sortir de ce shell en tapant « exit ».

Dans ce tutoriel, nous avons vu comment configurer votre client MQTT via un conteneur Docker.

Conclusion

MQTT est un protocole de connectivité de machine à machine (M2M) ou «Internet des objets». Il a été conçu comme un transport de messagerie de publication/abonnement extrêmement léger. MQTT est utile pour connecter des capteurs à faible consommation, des dispositifs portables et d’autres petits objets connectés à Internet au cloud. Étant donné que MQTT utilise un modèle de publication/abonnement, il est parfait pour les appareils qui ont besoin d’envoyer des données peu fréquemment ou pour lesquels la bande passante du réseau est primordiale.

Intéressé par le développement de votre solution MQTT ? Nous contacter!

Related Articles

WP Radio
WP Radio
OFFLINE LIVE