281 lines
5.3 KiB
Markdown
281 lines
5.3 KiB
Markdown
# 🔥 Setup Firebase untuk Sistem Jadwal Baru
|
||
|
||
## 📋 Copy Struktur Ini ke Firebase
|
||
|
||
Buka Firebase Console → Realtime Database → Edit `/kontrol` node:
|
||
|
||
```json
|
||
{
|
||
"batas_atas": 32,
|
||
"batas_bawah": 11,
|
||
"durasi_sensor": 600,
|
||
"mode_sensor": "smart",
|
||
"otomatis": true,
|
||
"sensor": false,
|
||
"waktu": true,
|
||
|
||
"jadwal_1": {
|
||
"aktif": true,
|
||
"waktu": "08:00",
|
||
"durasi": 60,
|
||
"pot_aktif": [1, 2, 3],
|
||
"pompa_air": true,
|
||
"pompa_pupuk": false
|
||
},
|
||
|
||
"jadwal_2": {
|
||
"aktif": true,
|
||
"waktu": "09:00",
|
||
"durasi": 45,
|
||
"pot_aktif": [4, 5],
|
||
"pompa_air": true,
|
||
"pompa_pupuk": true
|
||
},
|
||
|
||
"jadwal_3": {
|
||
"aktif": true,
|
||
"waktu": "16:00",
|
||
"durasi": 30,
|
||
"pot_aktif": [1, 2, 3, 4, 5],
|
||
"pompa_air": true,
|
||
"pompa_pupuk": true
|
||
}
|
||
}
|
||
```
|
||
|
||
## 🎯 Contoh Sesuai Request Kamu
|
||
|
||
**Kebutuhan:**
|
||
- Jam 8 pagi: Pot 1, 2, 3 aktif
|
||
- Jam 9 pagi: Pot 4, 5 aktif
|
||
- Jam 4 sore: Pot 1, 2, 3, 4, 5 aktif
|
||
|
||
**Setup Firebase:**
|
||
|
||
```json
|
||
{
|
||
"waktu": true,
|
||
|
||
"jadwal_1": {
|
||
"aktif": true,
|
||
"waktu": "08:00",
|
||
"durasi": 60,
|
||
"pot_aktif": [1, 2, 3],
|
||
"pompa_air": true,
|
||
"pompa_pupuk": false
|
||
},
|
||
|
||
"jadwal_2": {
|
||
"aktif": true,
|
||
"waktu": "09:00",
|
||
"durasi": 60,
|
||
"pot_aktif": [4, 5],
|
||
"pompa_air": true,
|
||
"pompa_pupuk": true
|
||
},
|
||
|
||
"jadwal_3": {
|
||
"aktif": true,
|
||
"waktu": "16:00",
|
||
"durasi": 60,
|
||
"pot_aktif": [1, 2, 3, 4, 5],
|
||
"pompa_air": true,
|
||
"pompa_pupuk": true
|
||
}
|
||
}
|
||
```
|
||
|
||
## ➕ Cara Tambah Jadwal Baru di Firebase
|
||
|
||
### Via Firebase Console (Manual)
|
||
|
||
1. Buka Firebase Console
|
||
2. Go to Realtime Database
|
||
3. Navigate ke `/kontrol`
|
||
4. Click `+` untuk add child
|
||
5. Name: `jadwal_4`
|
||
6. Add children:
|
||
|
||
```
|
||
jadwal_4:
|
||
├─ aktif: true
|
||
├─ waktu: "12:00"
|
||
├─ durasi: 45
|
||
├─ pot_aktif: [2, 4]
|
||
├─ pompa_air: true
|
||
└─ pompa_pupuk: false
|
||
```
|
||
|
||
### Via Flutter App (Recommended)
|
||
|
||
1. Buka ApsGo App
|
||
2. Tap **Kontrol** tab
|
||
3. Tap **Waktu** button
|
||
4. Tap tombol **+ Tambah Jadwal**
|
||
5. Isi form sesuai kebutuhan
|
||
6. Tap **TAMBAH JADWAL**
|
||
|
||
**Keuntungan via App:**
|
||
- ✅ Lebih mudah & cepat
|
||
- ✅ Auto validasi
|
||
- ✅ Auto generate ID
|
||
- ✅ Visual pot selection
|
||
- ✅ Time picker
|
||
|
||
## 📱 Cara Test di App
|
||
|
||
### 1. Run Flutter App
|
||
|
||
```bash
|
||
cd f:\ApsGo\ApsGo
|
||
flutter run
|
||
```
|
||
|
||
### 2. Navigate ke Jadwal
|
||
|
||
1. Login ke app
|
||
2. Tap tab **Kontrol** di bottom navigation
|
||
3. Tap button **Waktu**
|
||
4. Akan muncul **Jadwal Management Page**
|
||
|
||
### 3. Test Features
|
||
|
||
- ✅ Lihat semua jadwal
|
||
- ✅ Toggle mode waktu on/off
|
||
- ✅ Tambah jadwal baru
|
||
- ✅ Edit jadwal
|
||
- ✅ Toggle jadwal aktif/nonaktif
|
||
- ✅ Duplikat jadwal
|
||
- ✅ Hapus jadwal
|
||
- ✅ Pull to refresh
|
||
|
||
## 🔄 Migration dari Format Lama
|
||
|
||
### Format Lama Kamu (di screenshot):
|
||
|
||
```json
|
||
{
|
||
"waktu": true,
|
||
"waktu_1": "10:02",
|
||
"durasi_1": 60,
|
||
"waktu_2": "16:00",
|
||
"durasi_2": 600
|
||
}
|
||
```
|
||
|
||
### Konversi ke Format Baru:
|
||
|
||
```json
|
||
{
|
||
"waktu": true,
|
||
|
||
"jadwal_1": {
|
||
"aktif": true,
|
||
"waktu": "10:02",
|
||
"durasi": 60,
|
||
"pot_aktif": [1, 2, 3, 4, 5],
|
||
"pompa_air": true,
|
||
"pompa_pupuk": true
|
||
},
|
||
|
||
"jadwal_2": {
|
||
"aktif": true,
|
||
"waktu": "16:00",
|
||
"durasi": 600,
|
||
"pot_aktif": [1, 2, 3, 4, 5],
|
||
"pompa_air": true,
|
||
"pompa_pupuk": true
|
||
}
|
||
}
|
||
```
|
||
|
||
**Note:** Format lama masih jalan di worker (backward compatible), jadi tidak perlu buru-buru migrate.
|
||
|
||
## ⚙️ Field Explanations
|
||
|
||
| Field | Type | Required | Default | Description |
|
||
|-------|------|----------|---------|-------------|
|
||
| `aktif` | boolean | No | `true` | Enable/disable jadwal |
|
||
| `waktu` | string | Yes | - | Format "HH:MM" (08:00, 16:00, dll) |
|
||
| `durasi` | number | No | `60` | Durasi dalam DETIK |
|
||
| `pot_aktif` | array | Yes | - | Array pot: [1, 2, 3, 4, 5] |
|
||
| `pompa_air` | boolean | No | `true` | Nyalakan pompa air |
|
||
| `pompa_pupuk` | boolean | No | `false` | Nyalakan pompa pupuk |
|
||
|
||
## ✅ Validation Rules
|
||
|
||
Firebase akan accept jadwal jika:
|
||
|
||
1. ✅ `waktu` format "HH:MM" dengan 2 digit
|
||
2. ✅ `durasi` > 0
|
||
3. ✅ `pot_aktif` tidak kosong
|
||
4. ✅ `pot_aktif` berisi angka 1-5
|
||
|
||
Worker akan skip jadwal jika:
|
||
- ❌ `aktif` = false
|
||
- ❌ `pot_aktif` kosong
|
||
- ❌ `waktu` format salah
|
||
|
||
## 🚀 Deploy Changes
|
||
|
||
### 1. Update Flutter App
|
||
|
||
```bash
|
||
cd f:\ApsGo\ApsGo
|
||
flutter pub get
|
||
flutter build apk --release
|
||
```
|
||
|
||
### 2. Update Railway Worker (Sudah Done!)
|
||
|
||
Worker sudah updated dan di-push ke GitHub.
|
||
|
||
### 3. Setup Firebase
|
||
|
||
Copy struktur JSON di atas ke Firebase Console.
|
||
|
||
### 4. Test Everything
|
||
|
||
1. Test add jadwal via app
|
||
2. Test edit jadwal
|
||
3. Test toggle aktif/nonaktif
|
||
4. Wait sampai waktu jadwal
|
||
5. Check logs Railway untuk verifikasi
|
||
|
||
## 📊 Expected Logs Railway
|
||
|
||
Setelah setup, di Railway logs kamu akan lihat:
|
||
|
||
```
|
||
⏱️ CHECK #15: 08:00:05 | Mode: ✅
|
||
📋 Total Jadwal: 3
|
||
✅ jadwal_1: 08:00 → Pot [1, 2, 3] 🔔 MATCH!
|
||
✅ jadwal_2: 09:00 → Pot [4, 5]
|
||
✅ jadwal_3: 16:00 → Pot [1, 2, 3, 4, 5]
|
||
|
||
🕐 JADWAL_1 TRIGGERED: 08:00
|
||
🎯 Pot aktif: [1, 2, 3]
|
||
⏱️ Durasi: 60s
|
||
💧 Pompa Air: ON
|
||
🌿 Pompa Pupuk: OFF
|
||
✅ Successfully added to queue
|
||
```
|
||
|
||
## 🎉 You're All Set!
|
||
|
||
Sistem penjadwalan baru siap digunakan! Fitur:
|
||
|
||
✅ Multiple jadwal (unlimited)
|
||
✅ Flexible pot selection
|
||
✅ Per-schedule configuration
|
||
✅ Easy add/edit/delete via app
|
||
✅ Real-time sync
|
||
✅ Auto validation
|
||
|
||
**Next Steps:**
|
||
1. Setup Firebase dengan struktur di atas
|
||
2. Run Flutter app
|
||
3. Test tambah/edit jadwal
|
||
4. Monitor Railway logs
|
||
5. Enjoy! 🚀🌱
|