#include <LiquidCrystal_I2C.h>
#include <FirebaseESP32.h>
#include <WiFi.h>
#include <WiFiClient.h>
LiquidCrystal_I2C lcd(0x27,22,21);
#define WIFI_SSID "Wokwi-GUEST"
#define WIFI_PASS ""
#define FIREBASE_HOST "https://project-ldr-11f71-default-rtdb.firebaseio.com"
#define FIREBASE_AUTH "NixHh35CJli1pBYKzbYSY2e8aSF3fPfwKoPQrk1F"
#define relaypin 12
#define Aopin 34
#define Dopin 14
FirebaseData firebaseData;
void setup(){
Serial.begin(115200);
pinMode(Dopin, INPUT);
pinMode(relaypin, OUTPUT);
lcd.init();
lcd.backlight();
WiFi.begin(WIFI_SSID, WIFI_PASS);
while(WiFi.status() != WL_CONNECTED){
delay(1000);
Serial.println("Menghubungkan ke wifi..." );
}
Serial.println("Wifi Terhubung...");
Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
}
void loop(){
int Aovalue = analogRead(Aopin);
int Dovalue = digitalRead(Dopin);
Aovalue = map(Aovalue, 4095, 0,1024,0);
float valtase = Aovalue / 1024.*5;
float R = 2000*valtase / (1-valtase/5);
float kecerahan = pow(50 * 1e3 * pow(10, 0.7) / R , (1 / 0.7));
kecerahan = round(kecerahan * 10) / 10.0;
Serial.print("kecerahan = ");
Serial.println(kecerahan);
lcd.setCursor(0,0);
lcd.print("kecerahan");
lcd.print(kecerahan);
Firebase.setFloat(firebaseData, "/kecerahan", kecerahan);
if(Firebase.getBool(firebaseData, "/relayState")){
bool relayState = firebaseData.boolData();
if(kecerahan < 100){
relayState = 1;
} else {
relayState = 0;
}
Firebase.setBool(firebaseData, "/relayState", relayState);
digitalWrite(relaypin, relayState);
if(relayState == 0 ){
Serial.println("Lampu Mati");
lcd.setCursor(0,1);
lcd.print("Lampu Mati");
}else{
Serial.println("Lampu Hidup");
lcd.setCursor(0,1);
lcd.print("Lampu Hidup");
}
Serial.println("State: " + String(relayState));
}else{
Serial.println("Gagal Menerima Data Firebase...");
}
if(kecerahan < 100 && Firebase.getBool(firebaseData, "/relayState") == 0){
//delay(1000);
if(kecerahan < 100){
digitalWrite(relaypin, 1);
Serial.println("Lampu Hidup karena kecerahan rendah");
}
}
delay(1000);
}