#define BLYNK_TEMPLATE_ID "TMPL6kXtFZs2w"
#define BLYNK_TEMPLATE_NAME "Temp Humidity Lighting"
#define BLYNK_AUTH_TOKEN "-U-2R92F8SrJfXDckwjmWNp3DiEPs6wn"
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#include <DHTesp.h> // Library DHT
// Blynk credentials
char auth[] = BLYNK_AUTH_TOKEN; // Auth Token
char ssid[] = "Wokwi-GUEST"; // Hotspot
char pass[] = ""; // Password
// LED pin declarations
byte LED_R = 26;
byte LED_Y = 27;
byte LED_G = 14;
byte LED_B = 12;
// PIR sensor pin
#define PIR_PIN 33
int pirState = 0; // Stores motion status (0: No motion, 1: Motion detected)
int value0, value1, value2, value3, value6;
DHTesp dht;
BlynkTimer timer;
// Function to send PIR status to the Blynk app
void sendPIRStatus() {
pirState = digitalRead(PIR_PIN);
if (pirState == HIGH) {
Serial.println("Motion detected!");
Blynk.virtualWrite(V4, 1); // Send '1' to Virtual Pin V4 in the Blynk app
} else {
Serial.println("No motion.");
Blynk.virtualWrite(V4, 0); // Send '0' to Virtual Pin V4 in the Blynk app
}
}
// Function for sending DHT sensor data (if needed)
void sendSensor() {
// Add logic here if you're using DHT data
}
// LED control functions
BLYNK_WRITE(V0) {
value0 = param.asInt();
digitalWrite(LED_R, value0);
Blynk.virtualWrite(V7, value0);
cekAllLed();
}
BLYNK_WRITE(V1) {
value1 = param.asInt();
digitalWrite(LED_Y, value1);
Blynk.virtualWrite(V8, value1);
cekAllLed();
}
BLYNK_WRITE(V2) {
value2 = param.asInt();
digitalWrite(LED_G, value2);
Blynk.virtualWrite(V9, value2);
cekAllLed();
}
BLYNK_WRITE(V3) {
value3 = param.asInt();
digitalWrite(LED_B, value3);
Blynk.virtualWrite(V10, value3);
cekAllLed();
}
BLYNK_WRITE(V6) {
value6 = param.asInt();
digitalWrite(LED_R, value6);
Blynk.virtualWrite(V7, value6);
Blynk.virtualWrite(V0, value6);
digitalWrite(LED_Y, value6);
Blynk.virtualWrite(V8, value6);
Blynk.virtualWrite(V1, value6);
digitalWrite(LED_G, value6);
Blynk.virtualWrite(V9, value6);
Blynk.virtualWrite(V2, value6);
digitalWrite(LED_B, value6);
Blynk.virtualWrite(V10, value6);
Blynk.virtualWrite(V3, value6);
}
void cekAllLed() {
if (value0 == 1 && value1 == 1 && value2 == 1 && value3 == 1) {
Blynk.virtualWrite(V6, 1);
} else {
Blynk.virtualWrite(V6, 0);
}
}
void setup() {
// Debug console
Serial.begin(115200);
// Pin initialization
pinMode(LED_R, OUTPUT);
pinMode(LED_Y, OUTPUT);
pinMode(LED_G, OUTPUT);
pinMode(LED_B, OUTPUT);
pinMode(PIR_PIN, INPUT); // PIR pin as input
// Initialize Blynk
Blynk.begin(auth, ssid, pass);
// Timer for PIR sensor
timer.setInterval(500L, sendPIRStatus); // Check PIR sensor every 500ms
timer.setInterval(3000L, sendSensor); // Timer for other sensors (if needed)
}
void loop() {
Blynk.run(); // Run Blynk
timer.run(); // Run timers
}