ESP32-naar-ESP32 MQTT Communicatie
In deze tutorial behandelen we de volgende onderwerpen:
- Bidirectionele communicatie tussen twee ESP32-modules via MQTT.
- Praktijkvoorbeeld: Een knop of schakelaar verbonden met ESP32 #1 bestuurt een LED aangesloten op ESP32 #2 via MQTT.

Benodigde Hardware
Of u kunt de volgende kits kopen:
| 1 | × | DIYables Sensorkit (30 sensoren/displays) | |
| 1 | × | DIYables Sensorkit (18 sensoren/displays) |
Over ESP32 en MQTT
We hebben een uitgebreide tutorial over het gebruik van ESP32 met MQTT:
Communicatie tussen twee ESP32 via MQTT
Twee ESP32-boards kunnen via een MQTT-server (broker) met elkaar communiceren. Wilt u ze rechtstreeks laten communiceren zonder gebruik van een MQTT-server, raadpleeg dan de tutorial over ESP32 naar ESP32 TCP Client/Server communicatie.
Als ESP32 #1 en ESP32 #2 data uitwisselen via een MQTT-broker:
- Beide ESP32’s verbinden met de MQTT-broker.
- Om ESP32 #2 in staat te stellen data naar ESP32 #1 te sturen:
- ESP32 #1 abonneert zich op een topic, bijvoorbeeld: esp32-1/data.
- ESP32 #2 kan data sturen naar ESP32 #1 door te publiceren op het topic waarop ESP32 #1 geabonneerd is.
- Op dezelfde manier, om ESP32 #1 data te laten sturen naar ESP32 #2:
- ESP32 #2 abonneert zich op een topic, zoals esp32-2/data.
- ESP32 #1 kan data sturen naar ESP32 #2 door te publiceren op het topic waarop ESP32 #2 geabonneerd is.
Op deze manier kunnen twee ESP32’s bidirectioneel data uitwisselen.
Praktijkvoorbeeld
We realiseren de volgende toepassing: Een knop of schakelaar aangesloten op ESP32 #1 bestuurt een LED die verbonden is met ESP32 #2 via MQTT.

Zoals hierboven vermeld, zijn er verschillende toepassingsprotocollen mogelijk. In dit voorbeeld maken we het simpel door zelf een protocol te definiëren (zelf-gedefinieerd protocol).
Werking
De volgende eenvoudige protocoldefinitie gebruiken we:
- Zowel ESP32 #1 als ESP32 #2 verbinden met een MQTT-broker (MQTT-server).
- Voor ESP32 #1:
- Het publiceert een MQTT-bericht naar een specifiek topic telkens wanneer de staat van de knop/schakelaar verandert.
- Wanneer de knop/schakelaar wordt ingedrukt, is de payload van het MQTT-bericht 1.
- Wanneer de knop/schakelaar wordt losgelaten, is de payload van het MQTT-bericht 0.
- Voor ESP32 #2:
- Het abonneert zich op hetzelfde topic.
- Ontvangt ESP32 #2 een MQTT-bericht met payload 1, dan gaat de LED aan.
- Ontvangt ESP32 #2 een MQTT-bericht met payload 0, dan gaat de LED uit.
- ESP32 #1 – Bedradingsschema tussen ESP32 en knop
- ESP32 #2 – Bedradingsschema tussen ESP32 en LED
Bedradingsschema

This image is created using Fritzing. Click to enlarge image

This image is created using Fritzing. Click to enlarge image
Communicatie tussen twee ESP32 via MQTT
ESP32 Code #1
ESP32 Code #2
Snelle Stappen
- Als u voor het eerst met ESP32 werkt, bekijk dan hoe de omgeving op te zetten voor ESP32 in Arduino IDE.
- Open twee Arduino IDE vensters op uw PC.
- Verbind een knop/schakelaar met ESP32 #1
- Verbind een LED met ESP32 #2
- Open de Library Manager door te klikken op het Library Manager icoon in de linkerzijbalk van Arduino IDE.
- Typ MQTT in het zoekvak en zoek de MQTT library van Joel Gaehwiler.
- Klik op de knop Install om de MQTT library te installeren.

- Typ ezButton in het zoekvak en vind de button library van ArduinoGetStarted
- Klik op de knop Install om de ezButton library te installeren.

- Selecteer het juiste ESP32-board (bijvoorbeeld ESP32 Dev Module).
- Verbind ESP32 #1 met de PC via USB-kabel en selecteer de COM-poort van ESP32 #1 in Arduino IDE #1
- Verbind ESP32 #2 met de PC via USB-kabel en selecteer de COM-poort van ESP32 #2 in Arduino IDE #2
- Kopieer de code voor ESP32 #1, plak deze in Arduino IDE #1 en sla het bestand op (bijvoorbeeld ESP32-1).
- Kopieer de code voor ESP32 #2, plak deze in Arduino IDE #2 en sla het bestand op (bijvoorbeeld ESP32-2).
- Vervang de WiFi-gegevens (SSID en wachtwoord) in beide codes door uw eigen gegevens.
- Vervang het MQTT broker-adres in beide codes (domeinnaam of IP-adres).
- Upload de code van ESP32 #1 naar ESP32 #1
- Upload de code van ESP32 #2 naar ESP32 #2
- Open de Serial Monitor in Arduino IDE #1
- Open de Serial Monitor in Arduino IDE #2
- Druk de knop in en houd deze vast op ESP32 #1 → zie de status van de LED op ESP32 #2 (AAN)
- Laat de knop los op ESP32 #1 → zie de status van de LED op ESP32 #2 (UIT)
- Druk, houd vast en laat de knop meerdere keren los.
- Bekijk de uitvoer op beide Serial Monitors:
- Serial Monitor van ESP32 #1
- Serial Monitor van ESP32 #2