// --- SENDER (Client A) ---
#include <WiFi.h>
#include <PubSubClient.h>
const char* ssid = "Wokwi-GUEST";
const char* password = "";
const char* mqtt_server = "test.mosquitto.org"; // Öffentlicher Test-Broker
WiFiClient espClient;
PubSubClient client(espClient);
const int BUTTON_PIN = 15;
bool lastButtonState = HIGH;
void setup() {
Serial.begin(115200);
pinMode(BUTTON_PIN, INPUT_PULLUP);
// 1. WiFi Verbindung
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWiFi verbunden!");
// 2. MQTT Verbindung
client.setServer(mqtt_server, 1883);
}
void reconnect() {
while (!client.connected()) {
Serial.print("Verbinde mit MQTT...");
// Einzigartige ID erzeugen
if (client.connect("ESP32_Sender_Unique_ID_123")) {
Serial.println("verbunden!");
} else {
delay(5000);
}
}
}
void loop() {
if (!client.connected()) {
reconnect();
}
client.loop();
// Button Logik
int reading = digitalRead(BUTTON_PIN);
if (reading == LOW && lastButtonState == HIGH) {
Serial.println("Click! Sende Signal...");
// WICHTIG: Das "Topic" muss eindeutig sein, damit wir uns finden
client.publish("mein/eigenes/projekt/led", "TOGGLE");
delay(200); // Debounce
}
lastButtonState = reading;
}