// ===== BLYNK CONFIG =====
#define BLYNK_TEMPLATE_ID "TMPL6qstp5drb"
#define BLYNK_TEMPLATE_NAME "Suhu"
#define BLYNK_AUTH_TOKEN "Cxh3lVmHpXZ_4KwFocAolWYuzAGpeERm"
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#include <DHT.h>
// ===== WIFI (WOKWI) =====
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
// ===== PIN =====
#define LED1 16 // Biru (dingin)
#define LED2 17 // Kuning (hangat)
#define LED3 18 // Merah (panas)
#define DHTPIN 25
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
BlynkTimer timer;
// ===== FUNGSI UTAMA =====
void sendDHT() {
float suhu = dht.readTemperature();
if (isnan(suhu)) {
Serial.println("Gagal membaca suhu!");
return;
}
Serial.print("Suhu: ");
Serial.println(suhu);
// Kirim ke Blynk
Blynk.virtualWrite(V0, suhu);
// ===== LOGIKA SUHU =====
if (suhu <= 25) {
// DINGIN
digitalWrite(LED1, HIGH);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
Blynk.virtualWrite(V1, 1);
Blynk.virtualWrite(V2, 0);
Blynk.virtualWrite(V3, 0);
}
else if (suhu < 30) {
// HANGAT
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, LOW);
Blynk.virtualWrite(V1, 0);
Blynk.virtualWrite(V2, 1);
Blynk.virtualWrite(V3, 0);
}
else {
// PANAS
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED3, HIGH);
Blynk.virtualWrite(V1, 0);
Blynk.virtualWrite(V2, 0);
Blynk.virtualWrite(V3, 1);
}
}
void setup() {
Serial.begin(115200);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
dht.begin();
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
// Update tiap 2 detik
timer.setInterval(2000L, sendDHT);
}
void loop() {
Blynk.run();
timer.run();
}