#include <WiFi.h>
#include <PubSubClient.h>
const char* ssid = "Wokwi-GUEST";
const char* password = "";
const char* mqtt_server = "test.mosquitto.org";
WiFiClient espClient;
PubSubClient client(espClient);
#define LED_PIN 2 // Pin de la LED (ou autre action à réaliser en fonction du buzzer)
void setup() {
Serial.begin(115200);
// Connexion au Wi-Fi
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWiFi connecté !");
// Connexion au broker MQTT
client.setServer(MQTT_SERVER, MQTT_PORT);
client.setCallback(callback);
// Initialisation de la LED
pinMode(LED_PIN, OUTPUT);
}
void loop() {
// Reconnecte-toi au broker MQTT si la connexion est perdue
if (!client.connected()) {
reconnect();
}
client.loop();
}
// Fonction pour gérer les messages MQTT reçus
void callback(char* topic, byte* payload, unsigned int length) {
// Si le message est reçu sur le topic "buzzer/state"
if (String(topic) == MQTT_TOPIC) {
// Convertir le payload en chaîne et afficher
String message = "";
for (int i = 0; i < length; i++) {
message += (char)payload[i];
}
Serial.print("Message reçu : ");
Serial.println(message);
// Si le buzzer est activé (message = "1"), allumer la LED
if (message == "1") {
digitalWrite(LED_PIN, HIGH);
Serial.println("LED allumée");
} else {
digitalWrite(LED_PIN, LOW);
Serial.println("LED éteinte");
}
}
}
// Fonction de reconnexion au broker MQTT
void reconnect() {
while (!client.connected()) {
Serial.print("Connexion MQTT...");
if (client.connect("ESP32Client")) {
Serial.println("connecté !");
client.subscribe(MQTT_TOPIC); // S'abonner au topic "buzzer/state"
} else {
Serial.print("Échec, code d'erreur: ");
Serial.print(client.state());
delay(2000);
}
}
}