ESP32 und MQTT: Erste Verbindung und Datenübertragung
10.12.2024 - Engine: Gemini

ESP32
Der ESP32 ist ein Mikrocontroller mit geringem Stromverbrauch und integrierter Wi-Fi- und Bluetooth-Funktionalität. Er wird häufig in IoT-Anwendungen (Internet der Dinge) eingesetzt.
Eigenschaften:
- Dual-Core-CPU
- Integriertes Wi-Fi und Bluetooth
- Niedriger Stromverbrauch
- Kompakte Größe
MQTT
MQTT (Message Queuing Telemetry Transport) ist ein leichtgewichtiges Protokoll für die Nachrichtenübermittlung, das in IoT-Anwendungen verwendet wird. Es ermöglicht es Geräten, Nachrichten über einen zentralen Broker auszutauschen.
Merkmale:
- Publish-Subscribe-Architektur
- Geringes Bandbreiten- und Speicheranforderungen
- Quality of Service (QoS) Ebenen
Erste Verbindung und Datenübertragung mit ESP32 und MQTT
Materialien:
- ESP32-Modul
- MQTT-Broker
- Wi-Fi-Zugang
Schritte:
1. ESP32 mit Wi-Fi verbinden:
- Verbinden Sie den ESP32 mit einem Wi-Fi-Netzwerk.
- Verwenden Sie die
WiFi
-Bibliothek für die ESP32-Firmware.
2. MQTT-Client erstellen:
- Erstellen Sie einen MQTT-Client mit der
PubSubClient
-Bibliothek. - Weisen Sie dem Client die IP-Adresse des Brokers, den Port und die Anmeldeinformationen zu.
3. MQTT-Broker verbinden:
- Verbinden Sie den Client mit dem MQTT-Broker.
4. Daten senden:
- Veröffentlichen Sie Daten über ein bestimmtes Topic.
- Verwenden Sie die Funktion
publish()
mit dem Topic-Namen und den zu sendenden Daten als Argumenten.
5. Daten empfangen:
- Abonnieren Sie ein Topic auf dem Broker.
- Verwenden Sie die Funktion
subscribe()
mit dem Topic-Namen als Argument. - Registrieren Sie eine Callback-Funktion, die bei eingehenden Nachrichten aufgerufen wird.
Beispielcode:
#include <WiFi.h>
#include <PubSubClient.h>
const char* ssid = "WiFi-Netzwerkname";
const char* password = "WiFi-Passwort";
const char* broker = "MQTT-Broker-IP-Adresse";
const uint16_t port = 1883;
const char* topic = "meintotopic";
WiFiClient espClient;
PubSubClient client(espClient);
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
Serial.println("Mit Wi-Fi verbunden");
client.setServer(broker, port);
client.connect("client_id");
Serial.println("Mit MQTT-Broker verbunden");
}
void loop() {
if (!client.connected()) {
client.connect("client_id");
}
client.publish(topic, "Hallo, IoT!");
Serial.println("Daten gesendet");
client.loop();
}