#define BLYNK_TEMPLATE_ID "TMPLwIVvKLU4"
#define BLYNK_TEMPLATE_NAME "Smart Home"
#define BLYNK_AUTH_TOKEN "xY8LGcznHN0HeWdxosra1qT43FzDdS3r"
#define BLYNK_PRINT Serial
const int sensorPIR = 2;
const int ledSensorPIR = 4;
const int ledLampu =  12;
int a = 0; //Untuk menyalakan sistem
#include <BlynkSimpleEsp32.h>
#include <PIR.h> //Llibrary untuk PIR
#include <WiFi.h>
#include <WiFiClient.h>
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
void setup() {
  pinMode(sensorPIR, INPUT);
  pinMode(ledSensorPIR, OUTPUT);
  pinMode(ledLampu, OUTPUT);
  Blynk.begin(auth, ssid, pass);
}
void loop() {
  infraRedSensor();
  Blynk.run();
  delay(100);
}
BLYNK_WRITE(V1){
  int sistem = (param.asInt());
  if (sistem == 1){
    digitalWrite(ledSensorPIR, HIGH);
    a = 1;
  }  else {
    a = 0;
    digitalWrite(ledSensorPIR, LOW);
  }
}
BLYNK_WRITE(V3) {
  int lampu = param.asInt();
  Blynk.virtualWrite(V3, lampu);
  if (lampu == 1 ){
    digitalWrite(ledLampu, HIGH);
    Blynk.virtualWrite(V4, "Lampu Menyala");
  } else {
    digitalWrite(ledLampu, LOW);
    Blynk.virtualWrite(V4, "Lampu Padam");
  }
}
void infraRedSensor() {
  int pirValue = digitalRead(sensorPIR);
  if (a == 1){
    Blynk.virtualWrite(V2, "Sensor Aktif");
    if (pirValue == HIGH) {
      Blynk.virtualWrite(V0, "Ada orang");
    } 
    if (pirValue == LOW){
      Blynk.virtualWrite(V0, "Tidak ada orang");
    }
    delay(100);
  }
  if (a == 0) {
    digitalWrite(pirValue, LOW);
    digitalWrite(ledSensorPIR, LOW);
    digitalWrite(ledLampu, LOW);
    Blynk.virtualWrite(V2, "Sensor Tidak Aktif");
  }
}