#include <WiFi.h>
#include <PubSubClient.h>
#include <DHT.h>
#define DHTPIN 4 // Pin du capteur DHT (adapté pour ESP32)
#define DHTTYPE DHT22 // Type de capteur DHT utilisé
// Configuration WiFi
const char* ssid = "Wokwi-GUEST"; // Nom du réseau WiFi (Wokwi utilise "Wokwi-GUEST")
const char* password = ""; // Pas de mot de passe pour Wokwi-GUEST
// Configuration MQTT
const char* mqtt_server = "broker.hivemq.com"; // Adresse du broker MQTT
DHT dht(DHTPIN, DHTTYPE);
WiFiClient espClient;
PubSubClient client(espClient);
void setup() {
Serial.begin(115200);
dht.begin();
// Connexion au WiFi
Serial.print("Connexion au WiFi...");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}
Serial.println("\nConnecté au WiFi!");
// Configuration du broker MQTT
client.setServer(mqtt_server, 1883);
reconnect();
}
void reconnect() {
// Fonction pour reconnecter au broker MQTT en cas de déconnexion
while (!client.connected()) {
Serial.print("Connexion au broker MQTT...");
if (client.connect("ESP32Client")) { // Identifiant du client MQTT
Serial.println("Connecté!");
} else {
Serial.print("Échec, rc=");
Serial.print(client.state());
delay(2000);
}
}
}
void loop() {
if (!client.connected()) {
reconnect();
}
client.loop();
// Lire la température
float temperature = dht.readTemperature();
if (!isnan(temperature)) {
char temp_str[8];
dtostrf(temperature, 6, 2, temp_str);
client.publish("OUSSAMA/temp", temp_str); // Publier la température sur MQTT
Serial.print("Température publiée : ");
Serial.println(temp_str);
} else {
Serial.println("Erreur de lecture de la température !");
}
// Lire l'humidité
float humidity = dht.readHumidity();
if (!isnan(humidity)) {
char hum_str[8];
dtostrf(humidity, 6, 2, hum_str);
client.publish("OUSSAMA/hum", hum_str); // Publier l'humidité sur MQTT
Serial.print("Humidité publiée : ");
Serial.println(hum_str);
} else {
Serial.println("Erreur de lecture de l'humidité !");
}
delay(5000); // Attendre 5 secondes avant la prochaine lecture
}