#include #include // ====== 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 } }