MQTT-Kommunikation zwischen ESP8266-Geräten
In diesem Tutorial werden wir Folgendes behandeln:
- So aktivieren Sie die bidirektionale Kommunikation zwischen zwei ESP8266-Geräten mit MQTT.
- Beispielszenario: Die Verwendung eines Knopfes oder Schalters, der mit ESP8266 #1 verbunden ist, um eine LED, die mit ESP8266 #2 verbunden ist, über MQTT zu steuern.

Erforderliche Hardware
2 | × | ESP8266 NodeMCU | |
2 | × | Micro-USB-Kabel | |
1 | × | (Empfohlen) Schraubklemmen-Erweiterungsboard für ESP8266 | |
1 | × | (Empfohlen) Stromverteiler für ESP8266 Typ-C |
Oder Sie können die folgenden Kits kaufen:
1 | × | DIYables Sensor-Kit (30 Sensoren/Displays) | |
1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
Über ESP8266 und MQTT
Wir haben hier eine detaillierte Anleitung, wie man den ESP8266 mit MQTT verwendet:
Kommunikation zwischen zwei ESP8266-Geräten über MQTT
Zwei ESP8266-Boards können miteinander über einen MQTT-Server kommunizieren. Wenn Sie eine direkte Kommunikation zwischen zwei ESP8266 bevorzugen, ohne auf einen MQTT-Server angewiesen zu sein, schauen Sie sich bitte das Tutorial zur ESP8266 zu ESP8266 TCP-Client/Server-Kommunikation an.
Wenn ESP8266 #1 und ESP8266 #2 Daten über einen MQTT-Broker austauschen:
- Beiden ESP8266 verbinden sich mit dem MQTT-Broker.
- Um ESP8266 #2 zu ermöglichen, Daten an ESP8266 #1 zu senden:
- ESP8266 #1 abonniert ein Thema, z. B.: esp8266-1/data.
- ESP8266 #2 kann Daten an ESP8266 #1 senden, indem es sie auf das Thema veröffentlicht, das ESP8266 #1 abonniert hat.
- Ähnlich, um ESP8266 #1 zu ermöglichen, Daten an ESP8266 #2 zu senden:
- ESP8266 #2 abonniert ein Thema, z. B.: esp8266-2/data.
- ESP8266 #1 kann Daten an ESP8266 #2 senden, indem es sie auf das Thema veröffentlicht, das ESP8266 #2 abonniert hat.
Indem Sie diesem Ansatz folgen, können zwei ESP8266 bidirektional Daten austauschen.
Beispiel-Anwendungsfall
Lassen Sie uns die folgende Anwendung realisieren: Ein Knopf/Schalter, der mit ESP8266 #1 verbunden ist, steuert eine LED, die über MQTT mit ESP8266 #2 verbunden ist.

Wie oben erwähnt gibt es einige Anwendungsprotokolle, die wir verwenden können. In diesem Beispiel, um es einfach zu halten, werden wir ein Protokoll selbst definieren (ein selbst definiertes Protokoll).
Wie es funktioniert
Lassen Sie uns ein einfaches Protokoll definieren:
- Sowohl ESP8266 #1 als auch ESP8266 #2 verbinden sich mit einem MQTT-Broker (MQTT-Server).
- Für ESP8266 #1:
- ESP8266 #1 veröffentlicht eine MQTT-Nachricht zu einem bestimmten Thema, wann immer sich der Zustand eines Schalters ändert.
- Wenn der Knopf/Schalter eingeschaltet ist, wird die Payload der MQTT-Nachricht auf 1 gesetzt.
- Wenn der Knopf/Schalter ausgeschaltet ist, wird die Payload der MQTT-Nachricht auf 0 gesetzt.
- Für ESP8266 #2:
- ESP8266 #2 abonniert dasselbe Thema.
- Wenn ESP8266 #2 eine MQTT-Nachricht mit einer Payload von 1 erhält, aktiviert es die LED.
- Wenn ESP8266 #2 eine MQTT-Nachricht mit einer Payload von 0 erhält, deaktiviert es die LED.
- ESP8266 #1 - Schaltplan zwischen ESP8266 und Taster
- ESP8266 #2 - Verdrahtungsdiagramm zwischen ESP8266 und LED
Verdrahtungsdiagramm

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
Weitere Informationen finden Sie unter ESP8266-Pinbelegung und wie man ESP8266 und andere Komponenten mit Strom versorgt.

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
Kommunikation zwischen zwei ESP8266 über MQTT
ESP8266-Code Nr. 1
ESP8266-Code Nr. 2
Schnelle Schritte
Um mit dem ESP8266 in der Arduino-IDE zu beginnen, befolgen Sie die folgenden Schritte:
- Schauen Sie sich das Tutorial zur Einrichtung der ESP8266-Umgebung in der Arduino IDE an, falls dies Ihre erste Verwendung des ESP8266 ist.
- Verbinden Sie die Bauteile wie in der Abbildung gezeigt.
- Verbinden Sie das ESP8266-Board mit Ihrem Computer über ein USB-Kabel.
- Öffnen Sie die Arduino IDE auf Ihrem Computer.
- Wählen Sie das richtige ESP8266-Board aus, z. B. NodeMCU 1.0 (ESP-12E-Modul), sowie den jeweiligen COM-Port.
- Schließen Sie einen Knopf/Schalter an ESP8266 #1 an.
- Schließen Sie eine LED an ESP8266 #2 an.
- Öffnen Sie die Arduino IDE (auch Arduino IDE #1 genannt).
- Öffnen Sie ein weiteres Arduino IDE-Fenster (genannt Arduino IDE #2) durch Klicken auf das Arduino IDE-Symbol auf Ihrem PC (wichtig!()).
- Öffnen Sie den Library 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 Install-Schaltfläche, um die ezButton-Bibliothek zu installieren.

- Schließe ESP8266 #1 über ein USB-Kabel an den PC an und wähle in der Arduino IDE #1 den COM-Port von ESP8266 #1
- Schließe ESP8266 #2 über ein USB-Kabel an den PC an und wähle in der Arduino IDE #2 den COM-Port von ESP8266 #2
- Kopiere den ESP8266 #1-Code, füge ihn in die Arduino IDE #1 ein und speichere ihn (benannt ESP8266-1)
- Kopiere den ESP8266 #2-Code, füge ihn in die Arduino IDE #2 ein und speichere ihn (benannt ESP8266-2)
- Ersetze die WiFi-Informationen (SSID und Passwort) in beiden Codes durch deine eigenen.
- Ersetze die MQTT-Broker-Adresse in beiden Codes (Domainname oder IP-Adresse).
- Lade den ESP8266 #1-Code auf ESP8266 #1 hoch
- Lade den ESP8266 #2-Code auf ESP8266 #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 ESP8266 #1 → sieh den Zustand der LED am ESP8266 #2 (AN)
- Lass den Knopf an ESP8266 #1 los → sieh den Zustand der LED am ESP8266 #2 (AUS)
- Drücke, halte gedrückt und lasse den Knopf mehrmals los.
- Sieh die Ausgaben auf beiden seriellen Monitoren
- Serieller Monitor von ESP8266 #1
- Serieller Monitor des ESP8266 #2