153 lines
3.8 KiB
Markdown
153 lines
3.8 KiB
Markdown
# TelurKu Firebase Database Configuration
|
|
|
|
## Database Structure (Firebase Realtime Database)
|
|
|
|
```json
|
|
{
|
|
"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)
|
|
|
|
```json
|
|
{
|
|
"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`:
|
|
```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
|