Communication MQTT de ESP8266 à ESP8266
Dans ce tutoriel, nous couvrirons :
- Comment activer la communication bidirectionnelle entre deux ESP8266 en utilisant MQTT.
- Exemple de scénario : Utilisation d'un bouton ou interrupteur connecté à ESP8266 #1 pour contrôler une LED connectée à ESP8266 #2 via MQTT.
Préparation du matériel
2 | × | ESP8266 NodeMCU | |
2 | × | 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
Nous avons un tutoriel détaillé sur comment utiliser ESP8266 avec MQTT ici :
Communication entre deux ESP8266 via MQTT
Deux cartes ESP8266 peuvent communiquer entre elles via un serveur MQTT. Si vous préférez une communication directe entre deux ESP8266 sans dépendre d'un serveur MQTT, veuillez consulter le tutoriel sur la communication TCP Client/Serveur entre deux ESP8266.
Lorsque ESP8266 #1 et ESP8266 #2 échangent des données via un courtier MQTT :
- Les deux ESP8266 se connectent au courtier MQTT.
- Pour permettre à ESP8266 #2 d'envoyer des données à ESP8266 #1 :
- ESP8266 #1 s'abonne à un sujet, tel que : esp8266-1/data.
- ESP8266 #2 peut transmettre des données à ESP8266 #1 en les publiant sur le sujet auquel ESP8266 #1 est abonné.
- De même, pour permettre à ESP8266 #1 d'envoyer des données à ESP8266 #2 :
- ESP8266 #2 s'abonne à un sujet, comme : esp8266-2/data.
- ESP8266 #1 peut envoyer des données à ESP8266 #2 en les publiant sur le sujet auquel ESP8266 #2 est abonné.
En suivant cette approche, deux ESP8266 peuvent échanger des données de manière bidirectionnelle.
Exemple de Cas d’Utilisation
Réalisons l'application suivante : un bouton/interrupteur connecté à ESP8266 #1 contrôle une LED connectée à ESP8266 #2 via MQTT.
Comme mentionné ci-dessus, il existe certains protocoles d'application que nous pouvons utiliser. Dans cet exemple, pour simplifier, nous allons définir un protocole par nous-mêmes (un protocole auto-défini).
Comment ça marche
Définissons un protocole simple :
- Les ESP8266 #1 et ESP8266 #2 se connectent à un courtier MQTT (serveur MQTT).
- Pour ESP8266 #1 :
- ESP8266 #1 publie un message MQTT sur un sujet spécifique chaque fois que l'état d'un interrupteur change.
- Lorsque le bouton/interrupteur est activé, la charge utile du message MQTT est définie à 1.
- Lorsque le bouton/interrupteur est désactivé, la charge utile du message MQTT est définie à 0.
- Pour ESP8266 #2 :
- ESP8266 #2 s'abonne au même sujet.
- Si ESP8266 #2 reçoit un message MQTT avec une charge utile de 1, il active la LED.
- Si ESP8266 #2 reçoit un message MQTT avec une charge utile de 0, il désactive la LED.
- ESP8266 #1 - Schéma de câblage entre l'ESP8266 et le bouton
- Schéma de câblage entre ESP8266 et LED
Schéma de câblage
This image is created using Fritzing. Click to enlarge image
Voir plus dans l'agencement des broches de l'ESP8266 et comment alimenter l'ESP8266 et d'autres composants.
This image is created using Fritzing. Click to enlarge image
Communication entre deux ESP8266 via MQTT
Code ESP8266 #1
Code ESP8266 #2
Étapes rapides
Pour commencer avec l'ESP8266 sur Arduino IDE, suivez ces étapes :
- Consultez le tutoriel comment configurer l'environnement pour ESP8266 sur Arduino IDE si c'est votre première utilisation de l'ESP8266.
- Câblez les composants comme indiqué dans le schéma.
- Connectez la carte ESP8266 à votre ordinateur à l'aide d'un câble USB.
- Ouvrez Arduino IDE sur votre ordinateur.
- Choisissez la bonne carte ESP8266, comme par exemple NodeMCU 1.0 (module ESP-12E), et son port COM respectif.
- Connectez un bouton/commutateur à ESP8266 #1
- Connectez une LED à ESP8266 #2
- Ouvrez Arduino IDE (appelé Arduino IDE #1)
- Ouvrez une autre fenêtre Arduino IDE (appelée Arduino IDE #2) en cliquant sur l'icône Arduino IDE sur votre PC (important!(**))
- 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 recherchez la bibliothèque MQTT de Joel Gaehwiler.
- Cliquez sur le bouton Install pour installer la bibliothèque MQTT.
- Tapez ezButton dans la zone de recherche, puis trouvez la bibliothèque de boutons par ESP8266GetStarted.
- Cliquez sur le bouton Install pour installer la bibliothèque ezButton.
- Connectez ESP8266 #1 au PC via un câble USB et sélectionnez le port COM de ESP8266 #1 sur Arduino IDE #1
- Connectez ESP8266 #2 au PC via un câble USB et sélectionnez le port COM de ESP8266 #2 sur Arduino IDE #2
- Copiez le code de ESP8266 #1, collez-le dans Arduino IDE #1 et enregistrez-le (nommé ESP8266-1)
- Copiez le code de ESP8266 #2, collez-le dans Arduino IDE #2 et enregistrez-le (nommé ESP8266-2)
- Remplacez les informations WiFi (SSID et mot de passe) dans les deux codes par les vôtres.
- Remplacez l'adresse du broker MQTT dans les deux codes (nom de domaine ou adresse IP).
- Téléversez le code de ESP8266 #1 sur ESP8266 #1
- Téléversez le code de ESP8266 #2 sur ESP8266 #2
- Ouvrez le moniteur série sur Arduino IDE #1
- Ouvrez le moniteur série sur Arduino IDE #2
- Appuyez et maintenez le bouton sur ESP8266 #1 → observez l'état de la LED sur ESP8266 #2 (ON)
- Relâchez le bouton sur ESP8266 #1 → observez l'état de la LED sur ESP8266 #2 (OFF)
- Appuyez, maintenez et relâchez le bouton plusieurs fois.
- Observez les sorties sur les deux moniteurs série
- Moniteur série de ESP8266 #2