ESP32-zu-ESP32 MQTT-Kommunikation
In diesem Tutorial werden wir die folgenden Themen behandeln:
- Bidirektionale Kommunikation zwischen zwei ESP32s über MQTT.
- Praktisches Anwendungsbeispiel: Die Verwendung eines Knopfes oder Schalters, der an ESP32 #1 angeschlossen ist, um eine LED zu steuern, die an ESP32 #2 angeschlossen ist, über MQTT.

Erforderliche Hardware
Oder Sie können die folgenden Kits kaufen:
1 | × | DIYables ESP32 Starter-Kit (ESP32 enthalten) | |
1 | × | DIYables Sensor-Kit (30 Sensoren/Displays) | |
1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
Über ESP32 und MQTT
Hier finden Sie ein detailliertes Tutorial, wie man ESP32 mit MQTT verwendet:
Kommunikation zwischen zwei ESP32 über MQTT
Zwei ESP32-Boards können über einen MQTT-Server miteinander kommunizieren. Wenn Sie möchten, dass sie direkt ohne einen MQTT-Server kommunizieren, lesen Sie bitte das Tutorial zur ESP32-zu-ESP32 TCP-Client/Server-Kommunikation.
Wenn ESP32 #1 und ESP32 #2 Daten über einen MQTT-Broker austauschen:
- Beide ESP32s verbinden sich mit dem MQTT-Broker.
- Um ESP32 #2 das Senden von Daten an ESP32 #1 zu ermöglichen:
- ESP32 #1 abonniert ein Thema, zum Beispiel: esp32-1/data.
- ESP32 #2 kann Daten an ESP32 #1 senden, indem es die Daten auf das Thema veröffentlicht, das ESP32 #1 abonniert hat.
- Ähnlich, damit ESP32 #1 Daten an ESP32 #2 senden kann:
- ESP32 #2 abonniert ein Thema, zum Beispiel: esp32-2/data.
- ESP32 #1 kann Daten an ESP32 #2 senden, indem es die Daten auf das Thema veröffentlicht, das ESP32 #2 abonniert hat.
Mit dieser Methode können zwei ESP32s Daten bidirektional austauschen.
Beispiel-Anwendungsfall
Lassen Sie uns die folgende Anwendung realisieren: Ein Knopf/Schalter, der mit dem ESP32 #1 verbunden ist, steuert eine LED, die mit dem ESP32 #2 über MQTT verbunden ist.

Wie oben erwähnt gibt es einige Anwendungsprotokolle, die wir verwenden können. In diesem Beispiel, um es einfach zu halten, definieren wir selbst ein Protokoll (ein selbst definiertes Protokoll).
Wie es funktioniert
Lassen Sie uns ein einfaches Protokoll definieren:
- Beide ESP32 #1 und ESP32 #2 verbinden sich mit einem MQTT-Broker (MQTT-Server).
- Für ESP32 #1:
- Es veröffentlicht eine MQTT-Nachricht an ein bestimmtes Thema, wann immer sich der Zustand eines Schalters ändert.
- Wenn der Knopf/Schalter eingeschaltet wird, wird die Nutzlast der MQTT-Nachricht auf 1 gesetzt.
- Wenn der Knopf/Schalter ausgeschaltet wird, wird die Nutzlast der MQTT-Nachricht auf 0 gesetzt.
- Für ESP32 #2:
- Es abonniert dasselbe Thema.
- Empfängt ESP32 #2 eine MQTT-Nachricht mit einer Nutzlast von 1, schaltet es eine LED ein.
- Empfängt ESP32 #2 eine MQTT-Nachricht mit einer Nutzlast von 0, schaltet es die LED aus.
- ESP32 #1 - Verdrahtungsdiagramm zwischen ESP32 und Taster
- ESP32 #2 - Schaltplan zwischen ESP32 und LED
Verdrahtungsschema

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
Wenn Sie nicht wissen, wie Sie ESP32 und andere Komponenten mit Strom versorgen, finden Sie Anleitungen im folgenden Tutorial: Wie man ESP32 mit Strom versorgt.

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
Kommunikation zwischen zwei ESP32 über MQTT
ESP32-Code Nr. 1
ESP32-Code Nr. 2
Schnelle Schritte
- Wenn dies das erste Mal ist, dass Sie ESP32 verwenden, sehen Sie sich an, wie man die Umgebung für ESP32 in der Arduino IDE einrichtet.
- Öffnen Sie zwei Arduino-IDE-Fenster auf Ihrem PC.
- Verbinden Sie einen Knopf/Schalter mit ESP32 #1
- Verbinden Sie eine LED an ESP32 #2
- Öffnen Sie den Bibliotheks-Manager, indem Sie auf das Library Manager-Symbol in der linken Navigationsleiste der Arduino IDE klicken.
- Geben Sie MQTT in das Suchfeld ein, suchen Sie dann nach der MQTT-Bibliothek von Joel Gaehwiler.
- Klicken Sie auf die Schaltfläche Install, um die MQTT-Bibliothek zu installieren.

- Geben Sie ezButton in das Suchfeld ein, suchen Sie anschließend die Button-Bibliothek von ArduinoGetStarted
- Klicken Sie auf die Schaltfläche Install, um die ezButton-Bibliothek zu installieren

- Wähle das richtige ESP32-Board aus (z. B. ESP32 Dev Module).
- Verbinde ESP32 #1 mit dem PC über ein USB-Kabel und wähle den COM-Port von ESP32 #1 in der Arduino IDE #1.
- Verbinde ESP32 #2 mit dem PC über ein USB-Kabel und wähle den COM-Port von ESP32 #2 in der Arduino IDE #2.
- Kopiere den ESP32 #1-Code, füge ihn in die Arduino IDE #1 ein und speichere ihn (benannt ESP32-1).
- Kopiere den ESP32 #2-Code, füge ihn in die Arduino IDE #2 ein und speichere ihn (benannt ESP32-2).
- Ersetze die WiFi-Informationen (SSID und Passwort) in beiden Codes durch deine eigenen.
- Ersetze die MQTT-Brokeradresse in beiden Codes (Domänenname oder IP-Adresse).
- Lade den ESP32 #1-Code auf ESP32 #1 hoch.
- Lade den ESP32 #2-Code auf ESP32 #2 hoch.
- Öffne den Seriellen Monitor in der Arduino IDE #1.
- Öffne den Seriellen Monitor in der Arduino IDE #2.
- Drücke und halte den Knopf an ESP32 #1 → sieh dir den LED-Zustand bei ESP32 #2 an (AN).
- Lass den Knopf an ESP32 #1 los → sieh dir den LED-Zustand bei ESP32 #2 an (AUS).
- Drücke, halte gedrückt und lasse den Knopf mehrmals los.
- Sieh die Ausgaben in beiden Seriellen Monitoren.
- Serieller Monitor von ESP32 #1
- Serienmonitor von ESP32 #2