#include <WiFi.h>
#include <PubSubClient.h>
// Paramètres WiFi
const char* ssid = "Wokwi-GUEST";
const char* password = "";
// Paramètres MQTT
const char* mqtt_server = "broker.hivemq.com";
const char* mqtt_topic = "esp32/led/state"; // Topic MQTT pour la LED
const int ledPin = 32; // LED sur GPIO 32
bool ledState = false;
WiFiClient espClient;
PubSubClient client(espClient);
void setup() {
Serial.begin(115200);
pinMode(ledPin, OUTPUT);
// Connexion WiFi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
// Connexion MQTT
client.setServer(mqtt_server, 1883);
connectToMQTT();
}
void loop() {
if (!client.connected()) {
connectToMQTT();
}
client.loop();
// Changement d’état de la LED toutes les 100 ms
static unsigned long lastMsg = 0;
if (millis() - lastMsg > 100) {
lastMsg = millis();
ledState = !ledState;
digitalWrite(ledPin, ledState ? HIGH : LOW);
const char* message = ledState ? "on" : "off";
client.publish(mqtt_topic, message);
Serial.print("LED ");
Serial.println(message);
}
}
void connectToMQTT() {
while (!client.connected()) {
Serial.println("Connecting to MQTT...");
if (client.connect("ESP32Client")) {
Serial.println("Connected to MQTT broker");
} else {
Serial.print("Failed, rc=");
Serial.print(client.state());
Serial.println(" trying again in 2 seconds...");
delay(2000);
}
}
}