#define BLYNK_PRINT Serial

#define BLYNK_TEMPLATE_ID "TMPL6sHlJASpR"
#define BLYNK_TEMPLATE_NAME "Sensor Suhu_Kelembapan"
#define BLYNK_AUTH_TOKEN "9Fq_FLY5OmODdn8deKUrZPGjuBFsdCup"

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


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

DHTesp dht;
BlynkTimer timer;

#define LED1 2
#define LED2 4

const int DHT_PIN = 15;

int kondisi = 0;
int kondisi2 = 0;

void sendSensor()
{
 TempAndHumidity  data = dht.getTempAndHumidity();

//menampilkan temperature pada Serial monitor
Serial.print("% Temperature: ");
Serial.print(data.temperature);
Serial.println("C ");
Serial.print("% Kelembaban: ");
Serial.print(data.humidity);
Serial.println("% ");

Blynk.virtualWrite(V2, data.temperature); //mengirimkan data temperatur ke Virtual pin V3 di Blynk Cloud
Blynk.virtualWrite(V3, data.humidity); //mengirimkan data kelemaban ke Virtual pin V4 di Blynk Cloud
}

BLYNK_WRITE (V0)
{
  kondisi = param.asInt();
  if (kondisi == 1)
  {
    digitalWrite(LED1, HIGH);
    Serial.println("LED 1 ON");
    Blynk.virtualWrite(V0, HIGH);
  }
  else
  {
    digitalWrite(LED1, LOW);
    Serial.println("LED 1 OFF");
    Blynk.virtualWrite(V0, LOW);
  }
}

BLYNK_WRITE (V1)
{
  kondisi2 = param.asInt();
  if (kondisi2 == 1)
  {
    digitalWrite(LED2, HIGH);
    Serial.println("LED 2 ON");
    Blynk.virtualWrite(V1, HIGH);
  }
  else
  {
    digitalWrite(LED2, LOW);
    Serial.println("LED 2 OFF");
    Blynk.virtualWrite(V1, LOW);
  }
}

void setup() {
  // put your setup code here, to run once:
  dht.setup(DHT_PIN, DHTesp::DHT22);
  Serial.begin(9600);
  Serial.println("Hello, ESP32!");
  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
  Blynk.begin(auth, ssid, pass);
  timer.setInterval(1000, sendSensor);
}

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

NOCOMNCVCCGNDINLED1PWRRelay Module