#define BLYNK_TEMPLATE_ID "TMPL6pvfnXnuO"
#define BLYNK_TEMPLATE_NAME "kelompok 1 proyek smart home"
#define BLYNK_AUTH_TOKEN "0wz8eq_jN3zxwSSqSCjElvBsoQABgmfo"
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <DHT.h>
// Kredensial WiFi
const char* ssid = "Wokwi-GUEST"; // Nama jaringan WiFi
const char* password = ""; // Password WiFi
// Sensor DHT22 (Suhu dan Kelembaban)
#define DHTPIN 15
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
// Sensor PIR (Gerakan)
#define PIRPIN 14
// Sensor LDR (Cahaya)
#define LDRPIN 34
// Relay untuk mengendalikan LED (Lampu)
#define RELAYPIN 13
#define LED_PIN 2 // LED terhubung ke relay
// Pin virtual Blynk
#define VPIN_TEMPERATURE V1
#define VPIN_HUMIDITY V2
#define VPIN_PIR V3
#define VPIN_LDR V4
#define VPIN_RELAY V5
// Variabel untuk Blynk
BlynkTimer timer;
// Fungsi untuk membaca data sensor dan mengirimkan ke Blynk
void sendSensorData() {
// Membaca suhu dan kelembaban dari DHT22
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
// Membaca status PIR (deteksi gerakan)
int pirValue = digitalRead(PIRPIN);
// Membaca intensitas cahaya dari LDR
int ldrValue = analogRead(LDRPIN);
// Kirim data ke Blynk
Blynk.virtualWrite(VPIN_TEMPERATURE, temperature); // Suhu ke Virtual Pin V1
Blynk.virtualWrite(VPIN_HUMIDITY, humidity); // Kelembaban ke Virtual Pin V2
Blynk.virtualWrite(VPIN_PIR, pirValue); // Gerakan ke Virtual Pin V3
Blynk.virtualWrite(VPIN_LDR, ldrValue); // Intensitas Cahaya ke Virtual Pin V4
// Cetak ke Serial Monitor (untuk debugging)
Serial.print("Suhu: ");
Serial.print(temperature);
Serial.print("°C | Kelembaban: ");
Serial.print(humidity);
Serial.print("% | Gerakan: ");
Serial.print(pirValue);
Serial.print(" | Cahaya: ");
Serial.println(ldrValue);
}
// Fungsi untuk mengontrol relay (lampu) dan LED melalui Blynk
BLYNK_WRITE(VPIN_RELAY) {
int relayState = param.asInt(); // Nilai dari tombol Blynk (0 atau 1)
Serial.print("Lampu rumah anda , nilai: ");
Serial.println(relayState); // Debugging output untuk melihat nilai yang diterima
// Aktifkan atau non-aktifkan relay dan LED
digitalWrite(RELAYPIN, relayState); // Mengontrol relay
digitalWrite(LED_PIN, relayState); // Mengontrol LED
}
void setup() {
// Inisialisasi Serial Monitor
Serial.begin(115200);
// Inisialisasi WiFi dan Blynk
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Menghubungkan ke WiFi...");
}
Serial.println("Terhubung ke WiFi");
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, password);
// Inisialisasi sensor dan pin
dht.begin();
pinMode(PIRPIN, INPUT);
pinMode(LDRPIN, INPUT);
pinMode(RELAYPIN, OUTPUT);
pinMode(LED_PIN, OUTPUT);
// Pastikan relay dan LED mati pada awalnya
digitalWrite(RELAYPIN, LOW);
digitalWrite(LED_PIN, LOW);
// Atur timer untuk membaca sensor setiap 5 detik
timer.setInterval(5000L, sendSensorData);
}
void loop() {
Blynk.run(); // Jalankan Blynk
timer.run(); // Jalankan timer untuk pembacaan sensor
}