#include <DHTesp.h>
#include <MQUnifiedsensor.h>
#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 = "data/";
// Paramètres DHT11
#define DHTPIN 13 // Broche de données du capteur DHT11
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
// Paramètres capteur de gaz MQ135
#define GAS_PIN A0
MQ135 gasSensor = MQ135(GAS_PIN);
WiFiClient espClient;
PubSubClient client(espClient);
void setup() {
Serial.begin(115200);
// Connexion WiFi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
// Connexion au serveur MQTT
connectToMQTT();
dht.begin();
}
void loop() {
// Lecture des données du capteur DHT11
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
// Lecture des données du capteur de gaz MQ135
float gasDensity = gasSensor.getPPM();
// Envoi des données au serveur MQTT
sendMQTTData("temperature", temperature);
sendMQTTData("humidity", humidity);
sendMQTTData("gas_density", gasDensity);
delay(5000); // Attente de 5 secondes entre chaque envoi de données
}
void sendMQTTData(const char* sensor, float value) {
char topic[50];
sprintf(topic, "%s%s", mqtt_topic, sensor);
char payload[10];
dtostrf(value, 4, 2, payload);
if (!client.connected()) {
connectToMQTT();
}
client.publish(topic, payload);
}
void connectToMQTT() {
while (!client.connected()) {
Serial.println("Connecting to MQTT...");
if (client.connect("ESP8266Client")) {
Serial.println("Connected to MQTT");
} else {
Serial.println("Failed, retrying in 5 seconds...");
delay(5000);
}
}
}