7.6 KiB
7.6 KiB
Dokumentasi Perubahan Mode Penyiraman
Serial Bergiliran dengan Break 30 Detik
Tanggal Update: June 2, 2026
Versi: 2.0 - Sequential Mode
📋 Ringkasan Perubahan
Sistem penyiraman telah diubah dari mode paralel menjadi mode serial bergiliran:
Sebelumnya (Paralel)
Jam 06:00 → Pot 1, Pot 2, Pot 3 semua ON bersamaan
→ Semua tunggu 60 detik
→ Semua OFF bersamaan
Total waktu: 60 detik
Sekarang (Serial Bergiliran)
Jam 06:00 → Pot 1 ON
→ Pot 1 tunggu 60 detik
→ Pot 1 OFF
→ Break 30 detik
Jam 06:01 → Pot 2 ON
→ Pot 2 tunggu 60 detik
→ Pot 2 OFF
→ Break 30 detik
Jam 06:02 → Pot 3 ON
→ Pot 3 tunggu 60 detik
→ Pot 3 OFF
Total waktu: 3 menit 40 detik
🎯 Penjelasan Teknis
1. Mode Fixed (Durasi Tetap)
Karakteristik:
- Setiap pot disiram dengan durasi yang sama (sesuai setting
durasijadwal/threshold) - Pompa air/pupuk tetap ON selama loop (untuk efisiensi aliran)
- Break 30 detik antar pot untuk stabilisasi
Rumus Total Waktu:
Total = (Jumlah Pot × Durasi Per Pot) + ((Jumlah Pot - 1) × 30 detik)
Contoh:
- 3 pot, durasi 60s per pot → Total: 180s + 60s = 240 detik (4 menit)
- 5 pot, durasi 120s per pot → Total: 600s + 120s = 720 detik (12 menit)
Proses Detail untuk 3 Pot:
[06:00:00] Pompa ON + Pot 1 Valve ON
[06:00:60] Pot 1 Valve OFF (pompa tetap ON)
[06:01:00] BREAK - menunggu 30 detik
[06:01:30] Pompa ON + Pot 2 Valve ON
[06:02:30] Pot 2 Valve OFF (pompa tetap ON)
[06:03:00] BREAK - menunggu 30 detik
[06:03:30] Pompa ON + Pot 3 Valve ON
[06:04:30] Pot 3 Valve OFF + Pompa OFF
[06:04:30] ✅ Penyiraman Selesai
2. Mode Smart (Sensor-Based)
Karakteristik:
- Setiap pot dimonitor secara INDIVIDUAL dengan sensornya
- Pot berhenti saat soil moisture mencapai target (batas_atas)
- Maksimal durasi per pot = setting
durasi(timeout safety) - Break 30 detik antar pot
Monitoring Interval: 2 detik (cek sensor setiap 2 detik)
Contoh Execution:
[06:00:00] Pompa ON + Pot 1 Valve ON
→ Monitor: 30% < 70% target
[06:00:02] → Monitor: 35% < 70% target
[06:00:04] → Monitor: 40% < 70% target
[06:02:00] → Monitor: 70% == 70% TARGET REACHED! ✅
Pot 1 Valve OFF (pompa tetap ON)
[06:02:00] BREAK - menunggu 30 detik
[06:02:30] Pompa ON + Pot 2 Valve ON
→ Monitor: 25% < 70% target
[06:02:32] → Monitor: 35% < 70% target
[06:03:30] → Monitor: 70% == 70% TARGET REACHED! ✅
Pot 2 Valve OFF (pompa tetap ON)
[06:04:00] BREAK - menunggu 30 detik
[06:04:30] Pompa ON + Pot 3 Valve ON
→ Monitor: 28% < 70% target
[06:05:15] → Monitor: 70% == 70% TARGET REACHED! ✅
Pot 3 Valve OFF + Pompa OFF
[06:05:15] ✅ Penyiraman Selesai
Total waktu smart mode = VARIABLE (tergantung kecepatan mencapai target)
3. Break 30 Detik
Tujuan:
- Stabilisasi tanah setelah penyiraman
- Memastikan air merata
- Menunggu sensor stabilisasi
- Meringankan beban pompa
Durasi: Tetap 30 detik (tidak dapat dikonfigurasi saat ini)
⚙️ Implementasi pada Firebase
Jadwal (Waktu Mode)
// Firebase struktur
jadwal_1: {
aktif: true,
waktu: "06:00", // Jam mulai
pot_aktif: [1, 2, 3], // Pot yang akan disiram (BERGILIRAN)
durasi: 60, // Durasi PER POT (dalam detik)
pompa_air: true,
pompa_pupuk: false
}
Contoh eksekusi:
- Jadwal 1 jam 06:00 dengan pot [1,2,3] durasi 60s
- Dimulai jam 06:00, selesai jam 06:03:40
Threshold (Sensor Mode)
// Firebase struktur
threshold_1: {
aktif: true,
pot_aktif: [1, 2, 3], // Pot yang akan disiram (BERGILIRAN)
batas_bawah: 30, // Trigger saat <= 30%
batas_atas: 70, // Stop saat >= 70% (per pot)
durasi: 600, // Maksimal durasi PER POT (dalam detik)
smart_mode: true, // Gunakan sensor monitoring
pompa_air: true,
pompa_pupuk: true
}
Contoh eksekusi:
- Threshold 1 terdeteksi pada pot [1,2,3]
- Pot 1 dimonitor: stop saat 70% (misal 180 detik)
- Break 30 detik
- Pot 2 dimonitor: stop saat 70% (misal 120 detik)
- Break 30 detik
- Pot 3 dimonitor: stop saat 70% (misal 150 detik)
- Total: ~9 menit (variable)
🔒 Keamanan & Safety
Mekanisme Safety
- Verification setelah ON: Cek Firebase untuk konfirmasi valve sudah ON
- Error Handling: Jika ada error, semua mosvet (valve) langsung OFF
- Timeout Protection: Smart mode memiliki maksimal durasi per pot
- Retry Logic: Update Firebase dengan retry hingga 3 kali
Off Command
Pompa OFF hanya dilakukan SETELAH semua pot selesai
Ini mencegah pompa mati di tengah penyiraman pot berikutnya
📊 History Logging
Data yang Dicatat
{
timestamp: 1234567890000,
source: "server",
type: "waktu_jadwal_1", // Tipe penyiraman
pots: [1, 2, 3], // Pot yang disiram
duration: 240, // Total durasi ACTUAL (termasuk break)
soil_1: 72, // Sensor data saat log
soil_2: 68,
soil_3: 74
}
Durasi Dicatat
- Fixed Mode: Total waktu = (pot × durasi) + ((pot-1) × 30s break)
- Smart Mode: Total waktu ACTUAL saat semua pot mencapai target atau timeout
🚨 Perubahan Perilaku vs Sebelumnya
| Aspek | Sebelumnya | Sekarang |
|---|---|---|
| Eksekusi Pot | Paralel (bersamaan) | Serial (bergiliran) |
| Break Antar Pot | Tidak ada | 30 detik |
| Durasi | Total untuk semua pot | Per pot |
| Total Waktu | Lebih cepat | Lebih lama (~3x) |
| Efek Pompa | Beban max | Beban stabil |
| Sensor Stability | Kurang akurat | Lebih akurat per-pot |
⏱️ Estimasi Waktu Eksekusi
Fixed Mode (60 detik per pot)
1 pot → ~60 detik
2 pot → ~150 detik (2m 30s)
3 pot → ~240 detik (4m)
4 pot → ~330 detik (5m 30s)
5 pot → ~420 detik (7m)
Smart Mode (Variable)
3 pot → 5-15 menit (tergantung kondisi tanah)
5 pot → 10-30 menit (tergantung kondisi tanah)
🔔 Notifikasi Perubahan
Notifikasi Jadwal (Fixed Mode)
Sebelumnya:
"Pada jam 06:00 akan dilakukan penyiraman untuk pot 1, 2, 3."
Sekarang:
"Penyiraman bergiliran untuk pot 1, 2, 3 dimulai dari jam 06:00.
Setiap pot disiram 60s dengan jeda 30 detik."
Notifikasi Threshold (Smart Mode)
Tetap sama, hanya ada penanda "bergiliran" untuk clarity.
🐛 Troubleshooting
Jika Penyiraman Tidak Bergiliran
- Cek Firebase
/kontrol/jadwal_*atau/kontrol/threshold_* - Pastikan
pot_aktifadalah array, bukan single value - Cek log: kata kunci "SEQUENTIAL WATERING" harus muncul
Jika Break 30 Detik Tidak Terjadi
- Cek log: kata kunci "BREAK 30 DETIK" harus muncul
- Verifikasi durasi break di kode:
BREAK_BETWEEN_POTS_MS = 30000(ms)
Jika Pompa Tidak OFF
- Cek log untuk error pada langkah terakhir
- Manual OFF via Firebase
/aktuator/mosvet_1dan/aktuator/mosvet_2
🔄 Rollback (Kembali ke Paralel)
Jika ingin kembali ke mode paralel, hubungi developer untuk revert perubahan worker.js ke versi sebelumnya.
📝 Catatan Developer
- Mode bergiliran dipilih untuk: stabilitas sensor, efisiensi pompa, dan kontrol lebih baik
- Break 30 detik hardcoded (bisa dikonfigurasi via env var jika perlu)
- Backward compatible: struktur Firebase tidak berubah
- Tested pada: 1-5 pot configuration
Update Next? Rencana mungkin:
- Make break duration configurable
- Per-pot sensor tolerance tuning
- Priority-based watering (pot priority order)
- Concurrent threshold + schedule handling