#include <WiFi.h>
#include <PubSubClient.h>
// Paramètres de Wi-Fi
const char* ssid = "ton_SSID";
const char* password = "ton_MDP";
// Paramètres du serveur MQTT
const char* mqttServer = "ton_broker_mqtt"; // Adresse du serveur MQTT
const int mqttPort = 1883; // Port MQTT
const char* mqttUser = "ton_utilisateur"; // Nom d'utilisateur si nécessaire
const char* mqttPassword = "ton_mdp"; // Mot de passe si nécessaire
const char* mqttTopic = "home/led/brightness"; // Le topic à souscrire
// Pins pour la LED RGB
#define RED_PIN 25
#define GREEN_PIN 26
#define BLUE_PIN 27
WiFiClient espClient;
PubSubClient client(espClient);
void setup() {
// Initialisation série pour débogage
Serial.begin(115200);
// Connexion au Wi-Fi
setupWiFi();
// Initialisation MQTT
client.setServer(mqttServer, mqttPort);
client.setCallback(mqttCallback);
// Configuration des pins RGB
pinMode(RED_PIN, OUTPUT);
pinMode(GREEN_PIN, OUTPUT);
pinMode(BLUE_PIN, OUTPUT);
// Connexion initiale au MQTT
reconnect();
}
void loop() {
// Maintenir la connexion MQTT
if (!client.connected()) {
reconnect();
}
client.loop();
}
void setupWiFi() {
delay(10);
// Connexion Wi-Fi
Serial.println();
Serial.print("Connexion au Wi-Fi...");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}
Serial.println("Connecté au Wi-Fi !");
}
void mqttCallback(char* topic, byte* payload, unsigned int length) {
// Décoder la valeur reçue du slider
int brightness = 0;
for (int i = 0; i < length; i++) {
brightness = brightness * 10 + (payload[i] - '0'); // Convertir en entier
}
// Appliquer la luminosité à la LED RGB
analogWrite(RED_PIN, brightness);
analogWrite(GREEN_PIN, brightness);
analogWrite(BLUE_PIN, brightness);
// Afficher la valeur reçue dans le moniteur série
Serial.print("Valeur de luminosité reçue: ");
Serial.println(brightness);
}
void reconnect() {
// Boucle pour tenter une connexion MQTT
while (!client.connected()) {
Serial.print("Tentative de connexion MQTT...");
if (client.connect("ESP32Client", mqttUser, mqttPassword)) {
Serial.println("Connecté au MQTT !");
client.subscribe(mqttTopic);
} else {
Serial.print("Échec, code d'erreur : ");
Serial.print(client.state());
delay(2000);
}
}
}