6.9 KiB
📱 Panduan Sistem Penjad walan Baru - Flutter App
✨ Fitur Baru
Sistem penjadwalan ApsGo telah diupgrade dengan fitur:
✅ Multiple Jadwal - Tidak lagi terbatas 2 jadwal saja
✅ Flexible Pot Selection - Setiap jadwal bisa pilih pot mana yang aktif
✅ Per-Schedule Config - Tiap jadwal punya durasi & pompa sendiri
✅ Enable/Disable - Matikan jadwal tanpa hapus data
✅ Real-time Sync - Langsung sync dengan Firebase & Railway Worker
📁 File Baru yang Dibuat
Models
lib/models/jadwal_model.dart- Data model untuk jadwal
Services
lib/services/jadwal_service.dart- CRUD operations untuk jadwal Firebase
Screens
lib/screens/jadwal_management_page.dart- List & manage all jadwallib/screens/jadwal_form_page.dart- Add/edit jadwal form
Config
firebase-structure-complete.json- Struktur Firebase lengkap
🗄️ Struktur Firebase Baru
{
"kontrol": {
"waktu": true,
"sensor": false,
"otomatis": 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
}
}
}
🚀 Cara Setup
1. Copy Struktur Firebase
- Buka Firebase Console → Realtime Database
- Edit
/kontrolnode - Tambahkan jadwal sesuai contoh di atas
- Atau import dari
firebase-structure-complete.json
2. Update Dependency (Jika Perlu)
Pastikan pubspec.yaml sudah punya:
dependencies:
firebase_database: ^latest_version
shared_preferences: ^latest_version
3. Update Navigation
File lib/screens/kontrol_page.dart sudah diupdate untuk navigasi ke JadwalManagementPage.
📱 Cara Menggunakan di App
Akses Jadwal Management
- Buka app ApsGo
- Tap tab Kontrol
- Tap button Waktu
- Akan muncul Jadwal Management Page
Tambah Jadwal Baru
- Di Jadwal Management Page, tap tombol + Tambah Jadwal
- Isi form:
- Waktu: Pilih jam berapa jadwal akan jalan
- Durasi: Berapa menit penyiraman (auto convert ke detik)
- Pilih Pot: Centang pot mana yang akan disiram
- Pompa Air: Toggle on/off
- Pompa Pupuk: Toggle on/off
- Status Jadwal: Aktif or nonaktif
- Tap TAMBAH JADWAL
Edit Jadwal
- Di list jadwal, tap button Edit
- Ubah settingan yang diinginkan
- Tap SIMPAN PERUBAHAN
Aktifkan/Nonaktifkan Jadwal
Gunakan Switch di kanan atas setiap jadwal card untuk toggle on/off cepat.
Duplikat Jadwal
- Tap button Duplikat di jadwal yang ingin dicopy
- Jadwal baru otomatis dibuat dengan ID baru (status: nonaktif)
- Edit jadwal baru sesuai kebutuhan
Hapus Jadwal
- Tap icon 🗑️ (trash) di jadwal yang ingin dihapus
- Konfirmasi penghapusan
🎨 UI Features
Jadwal Management Page
- Mode Waktu Toggle: Enable/disable semua jadwal sekaligus
- Jadwal Cards: Menampilkan semua jadwal dengan info lengkap
- Color Coding: Hijau = aktif, Abu-abu = nonaktif
- Real-time Updates: Pull to refresh untuk sync terbaru
Jadwal Form Page
- Time Picker: Native Android/iOS time picker
- Duration Input: Input menit, auto convert ke detik
- Pot Selection: Visual checkboxes untuk 5 pot
- Quick Actions: "Pilih Semua" & "Bersihkan"
- Validation: Auto validasi sebelum save
⚠️ Catatan Penting
Kompatibilitas dengan Worker
Worker Railway sudah updated untuk support format baru. Kedua sistem (lama & baru) masih compatible:
Format Lama (masih jalan):
{
"waktu_1": "08:00",
"durasi_1": 60
}
Format Baru (recommended):
{
"jadwal_1": {
"aktif": true,
"waktu": "08:00",
"durasi": 60,
"pot_aktif": [1, 2, 3],
"pompa_air": true,
"pompa_pupuk": false
}
}
Migration Path
Tidak perlu migrate semua sekaligus. Sistem bisa pakai campuran format lama & baru.
Recommended migration:
- Biarkan format lama tetap jalan
- Tambah jadwal baru dengan format baru
- Test jadwal baru beberapa hari
- Hapus format lama setelah yakin
🔧 Troubleshooting
Jadwal tidak muncul di app
Check:
- Firebase connected? (Check Firebase console)
- Struktur Firebase benar?
- Node path:
/kontrol/jadwal_X
Jadwal tidak trigger di worker
Check:
- Worker running di Railway?
kontrol.waktu=true?jadwal_X.aktif=true?- Format waktu "HH:MM" (2 digit)?
- Check Railway logs
Pot tidak menyala
Check:
pot_aktifarray benar?[1, 2, 3]- Pot number 1-5 (bukan 0-4)
- Check aktuator di Firebase
- Hardware connection OK?
📊 Testing Checklist
Sebelum production, test:
- Add jadwal baru
- Edit jadwal existing
- Toggle jadwal aktif/nonaktif
- Duplikat jadwal
- Hapus jadwal
- Toggle mode waktu on/off
- Test jadwal trigger di waktu yang ditentukan
- Test multiple pot selection
- Test pompa air on/off per jadwal
- Test pompa pupuk on/off per jadwal
- Test pull to refresh
- Test dengan 5+ jadwal sekaligus
🎯 Contoh Use Case
Use Case 1: Rumah simple
Kebutuhan: Siram semua pot 2x sehari (pagi & sore)
Setup:
Jadwal 1: 08:00 → Pot [1,2,3,4,5] → 60s
Jadwal 2: 16:00 → Pot [1,2,3,4,5] → 60s
Use Case 2: Per-pot berbeda
Kebutuhan:
- Pot 1&2: 3x sehari (pagi, siang, sore)
- Pot 3&4: 2x sehari (pagi, sore)
- Pot 5: 1x sehari (pagi)
Setup:
Jadwal 1: 07:00 → Pot [1,2] → 60s
Jadwal 2: 08:00 → Pot [3,4,5] → 60s
Jadwal 3: 12:00 → Pot [1,2] → 45s
Jadwal 4: 16:00 → Pot [3,4] → 50s
Jadwal 5: 17:00 → Pot [1,2] → 40s
Use Case 3: Different durations
Kebutuhan: Setiap pot punya durasi berbeda
Setup:
Jadwal 1: 08:00 → Pot [1] → 30s (Fast)
Jadwal 2: 08:05 → Pot [2] → 60s (Medium)
Jadwal 3: 08:10 → Pot [3] → 90s (Long)
Jadwal 4: 08:15 → Pot [4] → 45s
Jadwal 5: 08:20 → Pot [5] → 75s
📝 Best Practices
- Naming Convention: Gunakan
jadwal_1,jadwal_2, dst (agar auto-detect worker) - Time Format: Selalu 2 digit "HH:MM" (misal: "08:00" bukan "8:0")
- Duration: Input dalam menit di app, akan auto convert ke detik
- pot_aktif: Gunakan array number [1, 2, 3], bukan string
- Testing: Test jadwal baru dengan status nonaktif dulu sebelum aktifkan
🔗 Related Files
- Worker:
railway-worker/worker.js(sudah updated) - Firebase Guide:
railway-worker/FLEXIBLE_SCHEDULE_GUIDE.md - Example Firebase:
firebase-structure-complete.json
💡 Tips
- Gunakan Duplikat untuk cepat bikin jadwal mirip
- Pull to refresh untuk sync perubahan dari Firebase/Worker
- Mode Waktu toggle untuk disable semua jadwal sekaligus
- Jadwal dengan pot kosong akan di-skip otomatis
Selamat menggunakan sistem penjadwalan baru! 🚀🌱