/**************************************************
Beispiel:
ESP32 publiziert Nachrichten auf dem Public-Broker
von shiftr.io
Visualisierung:
https://www.shiftr.io/try
***************************************************/
//-----------------------------------------------------------
#include <WiFi.h>
#include <MQTT.h>
//-----------------------------------------------------------
// WiFi:
const char WIFI_SSID[] = "Wokwi-GUEST";
const char WIFI_PASSWORD[] = "";
// Objekte:
WiFiClient wifinetwork;
MQTTClient mqttclient;
// Variablen:
uint32_t zeitStempel = 0;
//-----------------------------------------------------------
void setup() {
//---
// UART starten (115200 Baud)
Serial.begin(115200);
//---
// WiFi verbinden
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
Serial.print("Verbinde mit ");
Serial.print(WIFI_SSID);
// Warten bis mit WiFi verbunden...
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(250);
}
Serial.println(" Verbunden!");
//---
// MQTT: Client starten
mqttclient.begin(wifinetwork);
// MQTT: Init Broker-Name
mqttclient.setHost("public.cloud.shiftr.io");
Serial.print("Verbinde mit MQTT-Broker ");
// MQTT: Mit Broker verbinden...
// - Client-ID: BBW_ESP32_MUSTER
// - User-Name: public (für public-Broker von shiftr.io)
// - User-Passwort: public (für public-Broker von shiftr.io)
while (mqttclient.connect("BBW_ESP32_MUSTER", "public", "public") == false) {
Serial.print(".");
delay(250);
}
Serial.println(" Verbunden!");
}
//-----------------------------------------------------------
void loop() {
//---
// MQTT: CPU-Zeit für Client (senden und empfangen)
mqttclient.loop();
//---
// T=1000ms (1 Hz)
if ((millis() - zeitStempel) > 1000) {
zeitStempel = millis();
// MQTT: Nachricht publizieren
// - Topic: /BBW/MUSTER/TEXT
// - Payload: Hallo Welt
mqttclient.publish("/BBW/MUSTER/TEXT", "Hallo Welt");
Serial.println("Nachricht wurde publiziert :-)");
}
// delay() nur nötig für bessere Simulatorleistung!!!
// Beim realen ESP32 diesen delay() entfernen!!!
delay(10);
}