#define BLYNK_TEMPLATE_NAME "DTH22"
#define BLYNK_AUTH_TOKEN "Ma93qaQhEK8qA4jzZytIF1buCRQQBo3d"
#define BLYNK_TEMPLATE_ID "TMPL2dnSdQVLM"


#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#include <DHT.h>

// Configuration WiFi (fictif pour Wokwi)
char ssid[] = "Wokwi-GUEST";
char pass[] = "";

// Configuration DHT22
#define DHTPIN 4         // Pin connecté au DHT22 (GPIO4)
#define DHTTYPE DHT22    // Type de capteur
DHT dht(DHTPIN, DHTTYPE);

// Timer pour envoyer les données
BlynkTimer timer;

void sendSensor() {
  float h = dht.readHumidity();       // Lire l'humidité
  float t = dht.readTemperature();    // Lire la température en Celsius

  // Vérifier si la lecture est valide
  if (isnan(h) || isnan(t)) {
    Serial.println("Échec de lecture du capteur DHT !");
    return;
  }

  // Envoyer les données à Blynk
  Blynk.virtualWrite(V5, h);  // Humidité sur Virtual Pin V5
  Blynk.virtualWrite(V6, t);  // Température sur Virtual Pin V6

  // Afficher les données dans le moniteur série
  Serial.print("Humidité : ");
  Serial.print(h);
  Serial.print(" %\t");
  Serial.print("Température : ");
  Serial.print(t);
  Serial.println(" °C");
}

void setup() {
  // Initialiser le moniteur série
  Serial.begin(115200);

  // Initialiser le capteur DHT
  dht.begin();

  // Connexion à Blynk
  Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);

  // Configurer le timer pour envoyer les données toutes les secondes
  timer.setInterval(1000L, sendSensor);
}

void loop() {
  Blynk.run();  // Gérer la connexion Blynk
  timer.run();  // Exécuter le timer
}