#include <WiFi.h>
#include <PubSubClient.h>
// Définir les broches des LED RGB
#define RED_PIN 12
#define GREEN_PIN 13
#define BLUE_PIN 14
#define LDR_PIN 34
// Réseaux WiFi et Broker MQTT
const char* ssid = "YourWiFiSSID";
const char* password = "YourWiFiPassword";
const char* mqtt_server = "IP_of_your_Raspberry_Pi"; // Adresse du broker MQTT
WiFiClient espClient;
PubSubClient client(espClient);
void setup() {
// Initialisation des broches et du WiFi
Serial.begin(115200);
pinMode(RED_PIN, OUTPUT);
pinMode(GREEN_PIN, OUTPUT);
pinMode(BLUE_PIN, OUTPUT);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("WiFi connected");
client.setServer(mqtt_server, 1883);
client.setCallback(mqttCallback);
}
void mqttCallback(char* topic, byte* payload, unsigned int length) {
// Traiter les messages reçus pour la commande de la LED
if (String(topic) == "esp32/control") {
// Décoder la commande (ex. Allumer la LED, ajuster la luminosité)
if (payload[0] == '1') {
// Allumer la LED en rouge
digitalWrite(RED_PIN, HIGH);
digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, LOW);
}
// Ajouter des conditions pour éteindre ou ajuster la luminosité
}
}
void loop() {
// Vérifier la connexion MQTT et publier les données du capteur LDR
if (!client.connected()) {
reconnect();
}
client.loop();
int ldrValue = analogRead(LDR_PIN);
char ldrMessage[50];
snprintf(ldrMessage, sizeof(ldrMessage), "Luminance: %d", ldrValue);
client.publish("esp32/luminance", ldrMessage);
delay(1000); // Envoyer les données toutes les 1 seconde
}
void reconnect() {
while (!client.connected()) {
if (client.connect("ESP32Client")) {
client.subscribe("esp32/control");
} else {
delay(5000);
}
}
}
LED RGB