const { initializeApp, cert } = require("firebase-admin/app"); const { getDatabase } = require("firebase-admin/database"); const { getFirestore, FieldValue } = require("firebase-admin/firestore"); const serviceAccount = require("./serviceAccountKey.json"); initializeApp({ credential: cert(serviceAccount), databaseURL: "https://tugas-akhir-9947b-default-rtdb.asia-southeast1.firebasedatabase.app" }); const rtdb = getDatabase(); const firestore = getFirestore(); console.log("Script penyalin aktif! Memantau Sensor & Riwayat Notifikasi..."); // ========================================== // 1. PENYALIN DATA SENSOR (Tetap Berjalan) // ========================================== const sensorRef = rtdb.ref("Kebun/Sensor"); sensorRef.on("value", (snapshot) => { const dataSensor = snapshot.val(); if (dataSensor) { dataSensor.waktu_masuk_firestore = FieldValue.serverTimestamp(); firestore.collection("sensor_data").add(dataSensor) .then((docRef) => console.log(`[SENSOR] Data masuk ID: ${docRef.id}`)) .catch((error) => console.error("[SENSOR ERROR]", error)); } }); // ========================================== // 2. MENGAMBIL DARI "Kebun/Riwayat" // ========================================== const riwayatRef = rtdb.ref("Kebun/Riwayat"); // Menggunakan 'child_added' agar HANYA data yang baru masuk ke riwayat yang diproses riwayatRef.on("child_added", (snapshot) => { const dataRiwayat = snapshot.val(); // Cek apakah data ini valid dan deteksinya adalah "burung" if (dataRiwayat && dataRiwayat.deteksi === "burung") { // Menyusun format notifikasi untuk aplikasi Android const dataNotifikasiBurung = { judul: "Peringatan Hama Burung!", pesan: `Burung terdeteksi pada jarak ${dataRiwayat.jarak} cm dengan tingkat suara ${Math.round(dataRiwayat.db)} dB.`, waktu_kejadian: dataRiwayat.waktu, // Waktu asli dari alat Anda jarak: dataRiwayat.jarak, suara_db: dataRiwayat.db, status_baca: false, // Untuk tanda "Belum Dibaca" di aplikasi waktu_masuk_firestore: FieldValue.serverTimestamp() // Waktu masuk ke server }; // Simpan ke dalam tabel "data_burung" di Firestore firestore.collection("data_burung").add(dataNotifikasiBurung) .then((docRef) => { console.log(`[NOTIFIKASI] Data Riwayat Burung berhasil disalin! ID: ${docRef.id}`); }) .catch((error) => console.error("[FIRESTORE ERROR]", error)); } });