#include <WiFi.h>
#include <WiFiClient.h>
#include <DHT.h>
#define DHTPIN 15
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
const char* ssid = "Wokwi-GUEST";
const char* password = "";
const char* host = "density-unexpired-respect.ngrok-free.dev";
const int port = 80;
const char* path = "/upload";
void setup() {
Serial.begin(115200);
dht.begin();
Serial.print("Connexion WiFi");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\n WiFi connecté !");
}
void loop() {
if (WiFi.status() != WL_CONNECTED) {
Serial.println(" WiFi perdu, reconnexion...");
WiFi.reconnect();
delay(3000);
return;
}
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
if (isnan(temperature) || isnan(humidity)) {
Serial.println("Erreur DHT !");
delay(2000);
return;
}
Serial.printf("🌡️ Temp: %.1f°C | 💧 Humidité: %.1f%%\n", temperature, humidity);
WiFiClient client;
if (!client.connect(host, port)) {
Serial.println("Impossible de se connecter !");
delay(5000);
return;
}
String jsonData = "{\"temperature\":" + String(temperature, 1) +
",\"humidity\":" + String(humidity, 1) + "}";
client.println("POST " + String(path) + " HTTP/1.1");
client.println("Host: " + String(host));
client.println("Content-Type: application/json");
client.println("ngrok-skip-browser-warning: true");
client.println("User-Agent: ESP32-IoT/1.0");
client.println("Content-Length: " + String(jsonData.length()));
client.println("Connection: close");
client.println();
client.print(jsonData);
Serial.println(" Envoyé : " + jsonData);
String response = "";
unsigned long t = millis();
while (client.connected() && millis() - t < 5000) {
if (client.available()) {
response += client.readStringUntil('\n');
t = millis();
}
}
client.stop();
Serial.println(" Réponse : " + response.substring(0, 200));
if (response.indexOf("LED_OFF") >= 0)
Serial.println(" LED éteinte sur le dashboard !");
else if (response.indexOf("\"OK\"") >= 0)
Serial.println(" Données acceptées !");
delay(10000);
}