#define BLYNK_PRINT Serial

#define BLYNK_TEMPLATE_ID "TMPL6rlYAIv9T"
#define BLYNK_TEMPLATE_NAME "Request HTTP DHT"
#define BLYNK_AUTH_TOKEN "Kdd2Q_X6AawofCX47WBsWaVrblToGiGa"

#define LED_PIN 2
#define DHTPIN 15
#define DHTTYPE DHT22

#define WIFI_SSID "Wokwi-GUEST"
#define WIFI_PASS ""

#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#include <DHT.h>

char auth[] = "HBjGWF8rMU-DonG44ws6t5k3i_M-fDGk";

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  // Mulai Serial Monitor
  Serial.begin(9600);
  
  // Mulai koneksi WiFi ke Blynk
  Blynk.begin(BLYNK_AUTH_TOKEN, WIFI_SSID, WIFI_PASS);

  // Inisialisasi sensor DHT
  dht.begin();

  // Set pin LED_PIN sebagai OUTPUT
  pinMode(LED_PIN, OUTPUT);
}

void loop() {
  // Jalankan Blynk
  Blynk.run();

  // Baca suhu dan kelembaban dari sensor DHT
  float temperature = dht.readTemperature();
  float humidity = dht.readHumidity();

  // Periksa apakah data yang dibaca valid (bukan NaN)
  if (!isnan(temperature)) {
    // Kirim suhu ke widget V0 di Blynk
    Blynk.virtualWrite(V0, temperature);
  }

  if (!isnan(humidity)) {
    // Kirim kelembaban ke widget V1 di Blynk
    Blynk.virtualWrite(V1, humidity);
  }

  // Tunda selama 1 detik
  delay(1000);
}

BLYNK_WRITE(V2) {
  int switchStatus = param.asInt();
  digitalWrite(LED_PIN, switchStatus);
}