#define BLYNK_TEMPLATE_ID "TMPL6Ar4aBc1P"
#define BLYNK_TEMPLATE_NAME "Monitoring Control"
#define BLYNK_AUTH_TOKEN "PL794Tqb4hywhZZhEiPE4MV3hfLHrZxa"
#define BLYNK_PRINT Serial // Mengaktifkan output serial untuk debugging Blynk
#include <WiFi.h> // Menyertakan library WiFi untuk koneksi ESP32 ke Wi-Fi
#include <WiFiClient.h> // Menyertakan library WiFiClient untuk membuat koneksi Wi-Fi client
#include <BlynkSimpleEsp32.h> // Menyertakan library Blynk untuk ESP32
#include <DHT.h> // Menyertakan library DHT untuk sensor suhu dan kelembapan
char auth[] = BLYNK_AUTH_TOKEN; // Menyimpan token autentikasi Blynk ke dalam variabel `auth`
char ssid[] = "Wokwi-GUEST"; // Menyimpan nama SSID Wi-Fi ke dalam variabel `ssid`
char pass[] = ""; // Menyimpan password Wi-Fi (kosong untuk Wokwi-GUEST)
#define DHTPIN 10 // Mendefinisikan pin digital yang terhubung ke sensor DHT
#define DHTTYPE DHT22 // Mendefinisikan tipe sensor DHT (DHT22)
DHT dht(DHTPIN, DHTTYPE); // Membuat objek `dht` dari kelas DHT dengan pin dan tipe sensor yang sudah didefinisikan
BlynkTimer timer; // Membuat objek `timer` dari kelas BlynkTimer untuk penjadwalan tugas
void setup(){
Serial.begin(115200); // Memulai komunikasi serial dengan baud rate 115200
Blynk.begin(auth, ssid, pass); // Menghubungkan ESP32 ke server Blynk menggunakan token autentikasi dan Wi-Fi
dht.begin(); // Memulai sensor DHT
timer.setInterval(2500L, sendSensor); // Menjadwalkan fungsi `sendSensor` untuk dijalankan setiap 2500 milidetik (2,5 detik)
pinMode(45, OUTPUT); // Mengatur pin 45 sebagai output
}
void loop(){
Blynk.run(); // Memastikan Blynk tetap berjalan untuk menangani komunikasi dengan server
timer.run(); // Menjalankan fungsi-fungsi yang sudah dijadwalkan dengan timer
}
void sendSensor(){
float h = dht.readHumidity(); // Membaca nilai kelembapan dari sensor DHT
float t = dht.readTemperature(); // Membaca nilai suhu dari sensor DHT
Blynk.virtualWrite(V0, t); // Mengirimkan nilai suhu ke Blynk, terhubung dengan Virtual Pin V0
Blynk.virtualWrite(V1, h); // Mengirimkan nilai kelembapan ke Blynk, terhubung dengan Virtual Pin V1
Serial.print("Suhu : "); // Mencetak teks "Suhu :" ke Serial Monitor
Serial.print(t); // Mencetak nilai suhu ke Serial Monitor
Serial.println("°C "); // Mencetak simbol derajat Celsius dan pindah ke baris baru
Serial.print("Kelembapan : "); // Mencetak teks "Kelembapan :" ke Serial Monitor
Serial.print(h); // Mencetak nilai kelembapan ke Serial Monitor
Serial.println(" % "); // Mencetak simbol persen dan pindah ke baris baru
}
// Fungsi ini menangani input dari aplikasi Blynk melalui Virtual Pin V2
BLYNK_WRITE(V2){
int pinValue = param.asInt(); // Membaca nilai dari V2 (0 atau 1)
if (pinValue == 1){
digitalWrite(45, HIGH); // Menghidupkan pin 45
} else {
digitalWrite(45, LOW); // Mematikan pin 45
}
}