#define BLYNK_PRINT Serial // Mendefinisikan bahwa output Blynk akan dicetak ke serial monitor
#define BLYNK_TEMPLATE_ID "TMPL6k70WJyqK" // ID template yang digunakan untuk Blynk
#define BLYNK_TEMPLATE_NAME "DHT22" // Nama template Blynk
//#define LED 2
#include <WiFi.h> // Menyertakan pustaka WiFi untuk ESP32
#include <WiFiClient.h> // Pustaka untuk koneksi WiFi client
#include <BlynkSimpleEsp32.h> // Pustaka Blynk untuk ESP32
#include "DHTesp.h" // Pustaka untuk sensor DHT
const int DHT_PIN = 15; // Mendefinisikan pin GPIO ESP32 yang terhubung ke sensor DHT
DHTesp dhtSensor; // Membuat objek sensor DHT
char auth[] = "Rq1pkcBQVGfHcosfSd1nDgFKhPrvo3Dl"; // Token autentikasi Blynk
char ssid[] = "Wokwi-GUEST"; // Nama SSID WiFi
char pass[] = ""; // Kata sandi WiFi (kosong untuk jaringan terbuka)
BlynkTimer timer; // Membuat timer untuk menjalankan fungsi secara periodik
/*
BLYNK_WRITE(V0) // Fungsi untuk menerima data dari aplikasi Blynk
{
int pinValue = param.asInt(); // Mengonversi nilai yang diterima menjadi integer
digitalWrite(LED, pinValue); // Mengontrol LED berdasarkan nilai dari aplikasi
}
*/
void sendSensor()
{
TempAndHumidity data = dhtSensor.getTempAndHumidity(); // Membaca suhu dan kelembapan dari sensor DHT
Serial.println("Temp: " + String(data.temperature, 2) + "°C"); // Mencetak suhu dengan 2 angka di belakang koma
Serial.println("Humidity: " + String(data.humidity, 1) + "%"); // Mencetak kelembapan dengan 1 angka di belakang koma
Serial.println("---"); // Menambahkan pemisah
Blynk.virtualWrite(V0, data.temperature); // Mengirim data suhu ke Virtual Pin 0 di Blynk
Blynk.virtualWrite(V1, data.humidity); //Mengirim data kelembaban ke Virtual Pin 1 di Blynk
}
void setup()
{
Serial.begin(9600); // Memulai komunikasi serial dengan baud rate 9600
Blynk.begin(auth, ssid, pass); // Memulai koneksi Blynk dengan autentikasi dan WiFi
//pinMode(LED, OUTPUT); // Menyiapkan pin LED sebagai output (dikomentari karena tidak digunakan)
dhtSensor.setup(DHT_PIN, DHTesp::DHT22); // Mengatur pin dan jenis sensor DHT yang digunakan
timer.setInterval(2000L, sendSensor); // Menjalankan fungsi sendSensor setiap 2000 ms (2 detik)
}
void loop()
{
Blynk.run(); // Memastikan koneksi ke Blynk tetap aktif
timer.run(); // Menjalankan timer untuk fungsi yang dijadwalkan
}