TKK_E32231105/DATABASE_CONFIG.md

3.8 KiB

TelurKu Firebase Database Configuration

Database Structure (Firebase Realtime Database)

{
  "aktuator": {
    "motor": true
  },
  "data": {
    "infra1": 1,
    "infra2": 20,
    "rtc": 1707883200
  },
  "kontrol": {
    "waktu_1": "09:00",
    "waktu_2": "15:00",
    "durasi_1": "30 menit",
    "durasi_2": "30 menit",
    "keterangan_1": "Panen Pagi",
    "keterangan_2": "Panen Sore"
  },
  "riwayat": {
    "telur_hari_ini": 0,
    "total_telur": 0,
    "last_reset_date": "2026-02-14"
  },
  "kandang": {
    "kandang_1": {
      "nama": "Kandang 1",
      "jumlah_ayam": 50,
      "dibuat": "2026-02-14"
    },
    "kandang_2": {
      "nama": "Kandang 2",
      "jumlah_ayam": 75,
      "dibuat": "2026-02-14"
    }
  },
  "panen": {
    "panen_1": {
      "kandang_id": "kandang_1",
      "kandang_nama": "Kandang 1",
      "jumlah_telur": 45,
      "tanggal": "2026-02-14",
      "jam": "09:00",
      "catatan": "Kondisi baik"
    }
  }
}

Field Descriptions

aktuator

  • motor (boolean): Status motor/actuator

data

  • infra1 (number): Sensor inframerah 1
  • infra2 (number): Sensor inframerah 2
  • rtc (number): Real-time clock timestamp

kontrol

  • waktu_1 (string): Jadwal panen pertama (HH:MM format)
  • waktu_2 (string): Jadwal panen kedua (HH:MM format)
  • durasi_1 (string): Durasi panen pertama
  • durasi_2 (string): Durasi panen kedua
  • keterangan_1 (string): Deskripsi jadwal pertama
  • keterangan_2 (string): Deskripsi jadwal kedua

riwayat

  • telur_hari_ini (number): Total telur yang dihasilkan hari ini (auto-reset ke 0 setiap tengah malam)
  • total_telur (number): Total kumulatif seluruh telur
  • last_reset_date (string): Tanggal terakhir reset telur_hari_ini (YYYY-MM-DD format)

kandang

Menyimpan data kandang-kandang yang tersedia dengan struktur:

  • nama (string): Nama kandang
  • jumlah_ayam (number): Jumlah ayam di kandang
  • dibuat (string): Tanggal pembuatan kandang

panen

Menyimpan history panen dengan struktur per record:

  • kandang_id (string): ID kandang
  • kandang_nama (string): Nama kandang
  • jumlah_telur (number): Jumlah telur yang dipanen
  • tanggal (string): Tanggal panen (YYYY-MM-DD format)
  • jam (string): Jam panen (HH:MM format)
  • catatan (string): Catatan/keterangan panen

Auto-Reset Feature

Sistem telur_hari_ini akan otomatis mereset ke 0 setiap tengah malam (00:00) dengan:

  1. Aplikasi mengecek last_reset_date saat startup
  2. Jika tanggal berbeda dengan hari ini, akan mereset telur_hari_ini ke 0
  3. Update last_reset_date ke tanggal hari ini

Firebase Realtime Database Rules (Security)

{
  "rules": {
    ".read": "auth != null",
    ".write": "auth != null",
    "aktuator": {
      ".write": "auth != null"
    },
    "data": {
      ".write": "auth != null"
    },
    "kontrol": {
      ".write": "auth != null"
    },
    "riwayat": {
      ".write": "auth != null"
    },
    "kandang": {
      ".write": "auth != null"
    },
    "panen": {
      ".write": "auth != null"
    }
  }
}

Setup Instructions

  1. Pastikan Firebase Realtime Database sudah diaktifkan di Firebase Console

  2. Copy struktur JSON di atas ke database

  3. Provider TelurProvider akan otomatis:

    • Membuat struktur awal jika belum ada
    • Mengecek dan mereset telur_hari_ini setiap hari
    • Sync data realtime dengan UI
  4. Gunakan TelurProvider di main.dart:

MultiProvider(
  providers: [
    // ... other providers
    ChangeNotifierProvider(create: (_) => TelurProvider()),
  ],
  child: MyApp(),
)

Methods Available in TelurProvider

  • addTelurHariIni(int jumlah) - Tambah telur hari ini
  • setTotalTelur(int total) - Set total telur kumulatif
  • resetTelurHariIni() - Manual reset telur hari ini
  • manualReset() - Reset semua data riwayat