Initial commit

This commit is contained in:
NMuafi 2025-08-15 16:08:22 +07:00
commit ca973da3a6
1 changed files with 73 additions and 0 deletions

73
LampuTerbaru.ino Normal file
View File

@ -0,0 +1,73 @@
#include <WiFi.h>
#include <FirebaseESP32.h>
// ====== GANTI SESUAI KEBUTUHAN ======
#define WIFI_SSID "Gratis"
#define WIFI_PASSWORD "PINGINusaha"
#define FIREBASE_HOST "https://lampu-otomatis-e01b2-default-rtdb.firebaseio.com/"
#define FIREBASE_AUTH "CYqTEGa6kWutv3e0yhfBBsllrGVV0ewNNKyS46S0" // API Key
// ====== PIN KONFIGURASI ======
const int pirPin = 13; // Input dari sensor PIR
const int relayPin = 23; // Output ke relay
FirebaseData firebaseData;
FirebaseConfig firebaseConfig;
FirebaseAuth firebaseAuth;
void setup() {
Serial.begin(115200);
// Inisialisasi pin
pinMode(pirPin, INPUT);
pinMode(relayPin, OUTPUT);
digitalWrite(relayPin, HIGH); // Matikan relay saat awal
// Koneksi ke WiFi
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
Serial.print("Menghubungkan ke WiFi");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nTersambung ke WiFi");
firebaseConfig.database_url = FIREBASE_HOST;
firebaseConfig.signer.tokens.legacy_token = FIREBASE_AUTH;
//konfig ntp
// Koneksi ke Firebase
Firebase.begin(&firebaseConfig, &firebaseAuth);
Firebase.reconnectWiFi(true);
}
void loop() {
int pirState = digitalRead(pirPin); // Baca status PIR
if (pirState == HIGH) {
Serial.println("Gerakan terdeteksi!");
digitalWrite(relayPin, LOW); // Aktifkan relay
// Kirim status ke Firebase
if (Firebase.setString(firebaseData, "/Lampu/status", "ON")) {
Serial.println("Firebase: status ON");
} else {
Serial.print("Firebase Error: ");
Serial.println(firebaseData.errorReason());
}
delay(15000);
} else {
Serial.println("Tidak ada gerakan.");
digitalWrite(relayPin, HIGH);
// Kirim status ke Firebase
if (Firebase.setString(firebaseData, "/Lampu/status", "OFF")) {
Serial.println("Firebase: status OFF");
} else {
Serial.print("Firebase Error: ");
Serial.println(firebaseData.errorReason());
}
delay(1000); // Delay ringan agar tidak terlalu sering update
}
}