// Wajib disertakan untuk komunikasi dengan
// web server (Blynk)
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
const int lampu1 = 5;
const int lampu2 = 4;
const int stopkontak1 = 2;
const int stopkontak2 = 15;
const int saklar1 = 26;
const int saklar2 = 27;
const int saklar3 = 14;
const int saklar4 = 12;
const int indikator = 25;
int data;
int data1;
int data2;
int data3;
int a = 0;
int b = 0;
int c = 0;
int d = 0;
#define pinPIR 23
#define lampu 18
// Alamat Blynk, diambil dari web server
#define BLYNK_TEMPLATE_ID "TMPLIZLgfmnH"
#define BLYNK_TEMPLATE_NAME "Smart Home"
#define BLYNK_AUTH_TOKEN "Jv2O--21p1m52-vwExq2DzbtJ7RKIKhk"
// Komunikasi wifi yang disediakan wokwi
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
BlynkTimer timer;
void sendData(){
// Saklar 1
if (digitalRead(saklar1) == LOW){
a++;
if (a == 2){
a = 0;
}
if (a == 0){
Blynk.virtualWrite(V8, 0);
Blynk.virtualWrite(V12, 0);
digitalWrite(lampu1, LOW);
}
if (a == 1){
Blynk.virtualWrite(V8, 1);
Blynk.virtualWrite(V12, 1);
digitalWrite(lampu1, HIGH);
}
}
// Saklar 2
if (digitalRead(saklar2) == LOW){
b++;
if (b == 2){
b = 0;
}
if (b == 0){
Blynk.virtualWrite(V9, 0);
Blynk.virtualWrite(V13, 0);
digitalWrite(lampu2, LOW);
}
if (b == 1){
Blynk.virtualWrite(V9, 1);
Blynk.virtualWrite(V13, 1);
digitalWrite(lampu2, HIGH);
}
}
// Stop Kontak 1
if (digitalRead(saklar3) == LOW){
c++;
if (c == 2){
c = 0;
}
if (c == 0){
digitalWrite(stopkontak1, LOW);
}
if (c == 1){
digitalWrite(stopkontak1, HIGH);
}
}
// Stop Kontak 2
if (digitalRead(saklar4) == LOW){
d++;
if (d == 2){
d = 0;
}
if (d == 0){
digitalWrite(stopkontak2, LOW);
}
if (d == 1){
digitalWrite(stopkontak2, HIGH);
}
}
}
void baca_sensor_gerak(){
if (a==1){
int nilaiPir = digitalRead((pinPIR));
if(nilaiPir == 1){
digitalWrite(lampu, HIGH);
delay(1000);
}
else{
digitalWrite(lampu, LOW);
}
}
if (a == 0){
digitalWrite(lampu, LOW);
}
}
BLYNK_WRITE(V8){
data = (param.asInt());
if (data == 1) {
Blynk.virtualWrite(V12, 1);
digitalWrite(lampu1, HIGH);
a = 1;
}
else{
Blynk.virtualWrite(V12, 0);
digitalWrite(lampu1, LOW);
a = 0;
}
}
BLYNK_WRITE(V9){
data1 = (param.asInt());
if (data1 == 1) {
Blynk.virtualWrite(V13, 1);
digitalWrite(lampu2, HIGH);
b = 1;
}
else{
Blynk.virtualWrite(V13, 0);
digitalWrite(lampu2, LOW);
b = 0;
}
}
void setup() {
Blynk.begin(auth, ssid, pass);
timer.setInterval(500L, sendData);
pinMode(pinPIR, INPUT);
pinMode(lampu, OUTPUT);
pinMode(lampu1, OUTPUT);
pinMode(lampu2, OUTPUT);
pinMode(indikator, OUTPUT);
pinMode(stopkontak1, OUTPUT);
pinMode(stopkontak2, OUTPUT);
pinMode (saklar1, INPUT_PULLUP);
pinMode (saklar2, INPUT_PULLUP);
pinMode (saklar3, INPUT_PULLUP);
pinMode (saklar4, INPUT_PULLUP);
Blynk.virtualWrite(V8, 0);
Blynk.virtualWrite(V9, 0);
Blynk.virtualWrite(V12, 0);
Blynk.virtualWrite(V13, 0);
}
void loop() {
digitalWrite(indikator, HIGH);
baca_sensor_gerak();
Blynk.run();
timer.run();
}