// NAMA : Naufal Wafi Hasani
// NIM  : 20210130075

#define BLYNK_TEMPLATE_ID "TMPL6xt1Q4Lec"
#define BLYNK_TEMPLATE_NAME "ESP32 DHT22"
#define BLYNK_AUTH_TOKEN "wFu8IeJUTn8YDuuM7s0jCTG8gjkfIPBg"

#define BLYNK_PRINT Serial

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


#include <DHT.h>

char auth[] = BLYNK_AUTH_TOKEN;

char ssid[] = "Wokwi-GUEST";
char pass[] = "";

#define DHTPIN 5
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
BlynkTimer timer;

int lampu = 13;

void setup() {
  Serial.begin(115200);
  Blynk.begin(auth, ssid, pass);
  // You can also specify server:
  //Blynk.begin(auth, ssid, pass, "blynk.cloud", 80);
  //Blynk.begin(auth, ssid, pass, IPAddress(192,168,1,100), 8080);

  dht.begin();
  timer.setInterval(2000L, sendSensor);
  pinMode(lampu, OUTPUT);
}

void loop() {
  Blynk.run();
  timer.run();
}

void sendSensor() {
  float hum = dht.readHumidity();
  float temp = dht.readTemperature();
  if (isnan(hum) || isnan(temp)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }

  
  Blynk.virtualWrite(V1, hum);
  Blynk.virtualWrite(V0, temp);

  Serial.print("Temperature : ");
  Serial.print(temp);
  Serial.print(" °C");
  Serial.print("    Humidity : ");
  Serial.print(hum);
  Serial.println(" %");


  if (temp >= 55 || hum >= 85) {
    digitalWrite(lampu, HIGH);
      Blynk.virtualWrite(V2, HIGH);
  } else {
    digitalWrite(lampu, LOW);
      Blynk.virtualWrite(V2, LOW);
  }

}