#include <WiFi.h>
#include <HTTPClient.h>
#include <WiFiClientSecure.h>
const char* WIFI_SSID = "Wokwi-GUEST";
const char* WIFI_PASS = "";
// Ganti sesuai punyamu
String FIREBASE_HOST = "https://iot2-7757d-default-rtdb.firebaseio.com/";
String FIREBASE_AUTH = "AIzaSyDxLPB5hkbH3v9HmcphcahnsE23Ykf9yno";
// Pin
const int LDR_PIN = 34; // pin analog LDR
const int LED_PIN = 2; // LED bawaan ESP32, bisa ganti ke relay/LED lain
unsigned long lastSend = 0;
const unsigned long intervalFirebase = 2000; // kirim tiap 2 detik
WiFiClientSecure client;
// ===========================
// Fungsi konek WiFi
// ===========================
void connectWiFi() {
WiFi.begin(WIFI_SSID, WIFI_PASS);
Serial.print("Menghubungkan ke WiFi");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println();
Serial.println("WiFi terkoneksi");
Serial.print("IP: ");
Serial.println(WiFi.localIP());
}
// ===========================
// Tulis integer ke Firebase
// ===========================
bool firebaseSetInt(String path, int value) {
HTTPClient http;
String url = FIREBASE_HOST + "/" + path + ".json?auth=" + FIREBASE_AUTH;
http.begin(client, url);
http.addHeader("Content-Type", "application/json");
int httpCode = http.PUT(String(value));
String payload = http.getString();
Serial.print("PUT ");
Serial.print(path);
Serial.print(" => HTTP ");
Serial.println(httpCode);
if (httpCode > 0) {
Serial.println("Response: " + payload);
} else {
Serial.println("Gagal kirim data ke Firebase");
}
http.end();
return (httpCode == 200);
}
// ===========================
// Ambil integer dari Firebase
// ===========================
int firebaseGetInt(String path) {
HTTPClient http;
String url = FIREBASE_HOST + "/" + path + ".json?auth=" + FIREBASE_AUTH;
http.begin(client, url);
int httpCode = http.GET();
String payload = http.getString();
Serial.print("GET ");
Serial.print(path);
Serial.print(" => HTTP ");
Serial.println(httpCode);
int result = -1;
if (httpCode == 200) {
payload.trim();
Serial.println("Response: " + payload);
if (payload != "null" && payload.length() > 0) {
result = payload.toInt();
}
} else {
Serial.println("Gagal baca data dari Firebase");
}
http.end();
return result;
}
// ===========================
// Setup
// ===========================
void setup() {
Serial.begin(115200);
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, LOW);
// Untuk testing HTTPS
client.setInsecure();
connectWiFi();
}
// ===========================
// Loop
// ===========================
void loop() {
if (WiFi.status() != WL_CONNECTED) {
connectWiFi();
}
if (millis() - lastSend >= intervalFirebase) {
lastSend = millis();
// Baca LDR
int ldrValue = analogRead(LDR_PIN);
Serial.print("LDR = ");
Serial.println(ldrValue);
// Kirim nilai LDR ke Firebase
firebaseSetInt("LDR", ldrValue);
// Ambil status LED dari Firebase
int ledStatus = firebaseGetInt("LED_status");
if (ledStatus == 1) {
digitalWrite(LED_PIN, HIGH);
Serial.println("LED ON");
} else if (ledStatus == 0) {
digitalWrite(LED_PIN, LOW);
Serial.println("LED OFF");
} else {
Serial.println("LED_status belum valid");
}
Serial.println("----------------------");
}
}