ESP8266 - MQTT
Dans ce tutoriel, nous allons explorer comment utiliser l'ESP8266 pour envoyer et recevoir des données avec un courtier MQTT en utilisant le protocole MQTT. Plus précisément, nous aborderons les points suivants :
- Établir une connexion entre ESP8266 et un courtier MQTT.
- Programmer l'ESP8266 pour transmettre des données à un courtier MQTT en les publiant sur un sujet MQTT.
- Programmer l'ESP8266 pour recevoir des données en s'abonnant à un sujet MQTT.
Nous examinerons deux scénarios distincts :
- Utilisation d'ESP8266 avec un courtier MQTT en ligne.
- Utilisation d'ESP8266 avec un courtier MQTT installé sur votre ordinateur personnel.
Préparation du matériel
1 | × | ESP8266 NodeMCU | |
1 | × | Micro USB Cable | |
1 | × | (Optional) ESP8266 Screw Terminal Adapter |
Or you can buy the following sensor kits:
1 | × | DIYables Sensor Kit (30 sensors/displays) | |
1 | × | DIYables Sensor Kit (18 sensors/displays) |
À propos de ESP8266 et MQTT
Si vous n'êtes pas encore familiarisé avec le protocole MQTT, vous pouvez trouver des informations à ce sujet en ligne. Ce tutoriel se concentre sur l'utilisation de l'ESP8266 pour l'envoi et la réception de données via MQTT.
Voici quelques façons d'utiliser ESP8266 avec MQTT :
- Vous pouvez connecter ESP8266 à un courtier MQTT en ligne tel que Mosquitto ou AWS IoT.
- Alternativement, vous pouvez relier ESP8266 à un courtier MQTT installé sur votre ordinateur, comme Mosquitto ou HiveMQ.
- Si vous avez un Raspberry Pi, ESP8266 peut se connecter à un courtier MQTT qui y fonctionne, par exemple, Mosquitto.
- De plus, ESP8266 peut être connecté à un courtier MQTT basé sur le cloud, tel que Mosquitto ou HiveMQ sur AWS EC2.
Dans ce tutoriel, nous commencerons par tester si l'ESP8266 peut se connecter à un courtier Mosquitto en ligne. Nous démontrerons la capacité de l'ESP8266 à envoyer et recevoir des données via ce courtier sur Internet.
Ensuite, nous vous guiderons dans la configuration du courtier Mosquitto sur votre ordinateur. L'ESP8266 se connectera ensuite à ce courtier local, vous permettant de continuer à envoyer et recevoir des données.
Une fois ce tutoriel terminé, vous pourrez approfondir vos connaissances en explorant ces tutoriels supplémentaires :
Ces ressources fourniront un complément d'information sur les sujets associés.
Connectez ESP8266 à un courtier MQTT en ligne
Dans cette partie, nous apprendrons comment connecter l'ESP8266 à test.mosquitto.org, un courtier MQTT en ligne créé par Mosquitto. Veuillez noter que ce courtier doit être utilisé uniquement à des fins de test.
Code ESP8266
Le code ESP8266 ci-dessous fait :
- Se connecter au courtier MQTT
- S'abonner à un sujet
- Publier des messages périodiquement sur le même sujet auquel il est abonné
Étapes rapides
Pour commencer avec ESP8266 sur Arduino IDE, suivez ces étapes :
- Consultez le tutoriel comment configurer l'environnement pour ESP8266 sur Arduino IDE si c'est la première fois que vous utilisez ESP8266.
- Connectez la carte ESP8266 à votre ordinateur à l'aide d'un câble USB.
- Ouvrez l'Arduino IDE sur votre ordinateur.
- Choisissez la bonne carte ESP8266, par exemple NodeMCU 1.0 (Module ESP-12E), et son port COM respectif.
- Ouvrez le Gestionnaire de bibliothèques en cliquant sur l'icône Gestionnaire de bibliothèques dans la barre de navigation gauche de l'Arduino IDE.
- Tapez MQTT dans la boîte de recherche, puis cherchez la bibliothèque MQTT de Joel Gaehwiler.
- Cliquez sur le bouton Install pour installer la bibliothèque MQTT.
- Tapez ArduinoJson dans la zone de recherche, puis recherchez la bibliothèque ArduinoJson de Benoit Blanchon.
- Cliquez sur le bouton Install pour installer la bibliothèque ArduinoJson.
- Copiez le code ci-dessus et ouvrez-le avec l'IDE Arduino
- Remplacez les informations WiFi (SSID et mot de passe) dans le code par les vôtres.
- Dans le code, vous verrez le mot 'VOTRE-NOM' trois fois. Remplacez ce mot par votre nom ou des caractères aléatoires (uniquement des caractères alphabétiques, sans espaces). Cela est nécessaire car si vous ne faites pas le changement, il pourrait y avoir plusieurs personnes exécutant ce code en même temps, ce qui pourrait entraîner des conflits car les identifiants et les sujets des clients MQTT sont les mêmes pour tout le monde.
- Cliquez sur le bouton Upload dans l'IDE Arduino pour téléverser le code sur ESP8266
- Ouvrez le moniteur série
- Voir le résultat sur le moniteur série.
Comme vous pouvez le voir, l'ESP8266 publie des messages sur le courtier MQTT, puis reçoit le même message en retour. Cela est dû au fait que le code ci-dessus s'abonne au même sujet sur lequel il publie des données. Si vous ne voulez pas que l'ESP8266 reçoive le message qu'il publie, il suffit de rendre le sujet de SOUSCRIPTION différent du sujet de PUBLICATION.
Connectez l'ESP8266 au courtier MQTT installé sur votre PC.
Installer le courtier MQTT Mosquitto
- Téléchargez le Broker MQTT Mosquitto
- Installez-le sur le disque D: au lieu du disque C:. Évitez d'installer le broker Mosquitto sur le disque C: pour prévenir d'éventuels problèmes.
Exécutez le courtier MQTT Mosquitto
Vérifions maintenant si le courtier MQTT fonctionne correctement en suivant ces étapes :
- Accédez au répertoire où Mosquitto a été installé. Par exemple : D:\mqtt\mosquitto>
- Créez un nouveau fichier nommé test.conf, copiez le contenu ci-dessous et enregistrez-le dans ce répertoire :
- Exécutez une invite de commande en tant qu'administrateur sur votre PC. Appelons-la Fenêtre Broker. Ne la fermez pas avant la fin du tutoriel.
- Exécutez les commandes ci-dessous une par une :
- Vous verrez :
- Ouvrez une autre invite de commande en tant qu'administrateur sur votre PC.
- Trouvez l'adresse IP de votre PC en exécutant la commande ci-dessous :
- Notez l'adresse IP pour une utilisation ultérieure. Dans l'exemple ci-dessus : 192.168.0.26
Tester si le Broker Mosquitto fonctionne
- Ouvrez une autre invite de commande en tant qu'administrateur sur votre PC. Appelons-la Fenêtre d'abonné
- Abonnez-vous à un sujet en exécutant les commandes ci-dessous une par une (remplacez par votre adresse IP) :
- Ouvrez une autre invite de commande en tant qu'administrateur sur votre PC. Appelons-la Fenêtre de l'éditeur
- Publiez un message sur le même sujet en exécutant les commandes ci-dessous une par une (remplacez par votre adresse IP):
- Vous verrez :
Vous verrez que le message est transmis à la Fenêtre de l'Abonné comme suit :
Maintenant, vous avez réussi à installer le courtier MQTT Mosquitto sur votre PC. Veuillez NE PAS fermer trois fenêtres : Fenêtre du Courtier, Fenêtre de l'Abonné et Fenêtre de l'Éditeur. Nous les utiliserons ensuite.
Code ESP8266
Le code ESP8266 ci-dessous fait :
- Se connecter au courtier MQTT
- S'abonner à un sujet
- Publier périodiquement des messages à un autre sujet
Étapes rapides
- Copiez le code ci-dessus et ouvrez-le avec l'IDE Arduino.
- Remplacez les informations WiFi (SSID et mot de passe) dans le code par les vôtres.
- Remplacez l'adresse du courtier MQTT dans le code (nom de domaine ou adresse IP).
- Cliquez sur le bouton Upload sur l'IDE Arduino pour charger le code sur ESP8266.
Envoyer un message de l'ESP8266 au PC via MQTT
Les codes ESP8266 publient des données sur le sujet MQTT esp8266-001/send, la Fenêtre d'Abonné sur PC s'abonne à ce sujet pour recevoir les données.
- Ouvrez le moniteur série, vous verrez l'ESP8266 publier périodiquement un message sur un sujet.
- Vérifiez la fenêtre d'abonné, vous verrez qu'elle reçoit le message publié par l'ESP8266 comme ci-dessous :
Envoyer un message du PC à l'ESP8266 via MQTT
ESP8266 s'abonne au sujet esp8266-001/receive, Fenêtre d'Éditeur sur PC publie un message à ce sujet pour l'envoyer à l'ESP8266.
- Publiez un message sur le sujet auquel l'ESP8266 est abonné en exécutant la commande suivante dans la fenêtre de publication :
- Vous verrez que ce message est reçu par ESP8266 sur le moniteur série comme ci-dessous :