1. Pendahuluan
Bertani modern dan pertanian semakin mengandalkan otomasi untuk mengoptimalkan penggunaan sumber daya, terutama air — sumber daya yang langka di banyak wilayah. Sebuah pengendali irigasi cerdasmengotomatisasi penyiraman berdasarkan kondisi tanah secara real-time daripada menggunakan timer tetap, mengurangi pemborosan, mencegah penyiraman berlebihan atau kurang, serta mendukung pertumbuhan tanaman yang lebih sehat.
Studi kasus ini berfokus pada pemodelan perilaku sistem semacam itu menggunakan diagram mesin status UML (juga disebut diagram statechart). Diagram ini menangkap siklus hidup sistem, titik keputusan, dan respons terhadap peristiwa seperti pembacaan kelembapan, waktu habis, dan intervensi pengguna.
Desain ini menggunakan PlantUMLsintaks, serupa dengan contoh kedai kopi yang disediakan, yang secara elegan memodelkan status komposit, penjaga (guards), tindakan, serta jalur kesalahan/pemulihan.
2. Pernyataan Masalah & Persyaratan
Sebuah pengendali irigasi otomatis untuk taman rumah atau rumah kaca kecil harus:

- Memulai dalam mode Siagamode sebagian besar waktu.
- Berdasarkan jadwal secara berkala bangun (pemicu timer) untuk memeriksa kondisi.jadwal(pemicu timer) untuk memeriksa kondisi.
- Memasuki status Menginderauntuk membaca tingkat kelembapan tanah (melalui sensor kapasitif atau resistif).
- Jika kelembapan < 30% (ambang batas kering yang dapat dikonfigurasi), mulai Menyiramdengan membuka katup solenoid atau mengaktifkan pompa.
- Jika kelembapan ≥ 30%, kembali ke Siaga (tidak perlu penyiraman).
- Saat Menyiram, terus-menerus (atau secara berkala) pantau kelembapan.
- Hentikan penyiraman dan tutup katup ketika:
- Kelembapan mencapai 80% (ambang basah yang dapat dikonfigurasi) → target tercapai.
- Sebuah Waktu habis Keselamatan habis (misalnya 30 menit) → mencegah banjir, pecahnya pipa, atau masalah listrik jika sensor gagal.
- Setelah menghentikan penyiraman, pindah ke Shutdown keadaan.
- Dalam Shutdown, tunggu konfirmasi manual (tekan tombol atau perintah aplikasi) sebelum kembali ke Siaga — ini memungkinkan pengguna memeriksa sistem atau mengganti jika diperlukan.
- Kelola kesalahan secara baik (misalnya, kegagalan sensor, katup macet) dengan beralih ke keadaan Kesalahan keadaan dengan opsi pemulihan.
Perilaku tambahan yang diinginkan (dipertahankan sederhana di sini):
- Tidak ada penyiraman selama jam-jam tertentu (ditangani oleh jadwal/waktu).
- Pencatatan atau notifikasi berada di luar cakupan mesin keadaan inti ini.
3. Konsep Mesin Keadaan Kunci yang Digunakan
- Keadaan: Idle/Standby, Mendeteksi, Irigasi, Mati, Kesalahan.
- Status komposit: Irigasi mencakup logika pemantauan internal (meskipun dibuat datar di sini untuk kemudahan).
- Transisi:
- Dipicu oleh peristiwa (timer, pembacaan kelembapan, waktu habis).
- Dilindungi oleh kondisi [kelembapan < 30%], [kelembapan >= 80%].
- Tindakan: /buka_katup(), /tutup_katup(), /notifikasi_pengguna(), dll.
- Pseudostate awal / akhir: [*] untuk awal/akhir.
- Transisi diri dan lingkaran pemulihan.
4. Diagram Status dalam PlantUML
Di bawah ini adalah kode PlantUML lengkap yang menerapkan perilaku yang dijelaskan. Ini mengikuti konvensi dari contoh kedai kopi (penyempurnaan skinparam, status komposit di tempat yang sesuai, penjaga dalam [], tindakan dengan /).
plantuml
@startuml
skinparam {
‘ Gaya keseluruhan
‘ Warna
WarnaPanah #333333
WarnaFontPanah #333333
WarnaLatarBelakang #FFFFFF
WarnaBatas #333333
‘ Gaya status
Status {
WarnaBatas #005073
WarnaLatarBelakang #E6F5FF
WarnaFont #005073
}
}
[*] –> Siaga
Siaga –> Pemantauan : timer_triggers()
Pemantauan –> Irigasi : kelembapan_tanah < 30%
Pemantauan –> Siaga : kelembapan_tanah >= 30%
Irigasi –> Shutdown : kelembapan_tanah >= 80% ATAU safety_timeout()
Irigasi –> Shutdown : safety_timeout() // Perlindungan timeout cadangan
Shutdown –> Siaga : user_confirms_reset()
Siaga –> [*]
@enduml
Penjelasan Diagram
- Siaga — Status default hemat daya/idle.
- Pemantauan — Pemeriksaan cepat yang dipicu timer; menghindari penyiraman yang tidak perlu.
- Irigasi (komposit) — Tahap penyiraman aktif dengan aktivitas bawah internalPenyiraman aktivitas bawah.
- Keluar saat mencapai kelembapan target atau timeout keselamatan.
- Shutdown — Status tahan pasca-penyiraman yang memerlukan konfirmasi untuk melanjutkan otomasi (fitur keselamatan).
- Kesalahan — Status penahanan kesalahan dengan transisi pemulihan manual.
5. Alasan Desain & Manfaat
- Konservasi air — Hanya menyiram saat benar-benar dibutuhkan (berbasis kelembapan tanah alih-alih berbasis waktu).
- Pencegahan banjir — Kondisi keluar ganda dari Irigasi (target kelembapan + timeout).
- Keselamatan dan kendali pengguna — Konfirmasi manual setelah berhenti tidak normal mencegah restart otomatis setelah masalah potensial.
- Ekstensibilitas — Mudah menambahkan status (misalnya Hujan Terdeteksi, Baterai Rendah, Mode Musim Dingin) atau menyesuaikan ambang batas.
- Kompleksitas rendah — Rata di mana-mana jika memungkinkan, komposit hanya jika pengelompokan logis menambah kejelasan (Penyiraman).
Desain ini menyeimbangkan ketahanan, keamanan, dan kesederhanaan — sesuai untuk implementasi mikrokontroler tertanam (Arduino, ESP32, dll.).
6. Kesimpulan
Mesin statusMesin status menyediakan formalisme yang sangat baik untuk memodelkan sistem kontrol reaktif seperti pengendali irigasi cerdas. Dengan mendefinisikan secara jelas status, peristiwa, penjaga, dan tindakan, insinyur dapat memahami perilaku sistem, kasus-kasus ekstrem, dan pemulihan kesalahan sebelum menulis kode.
Representasi PlantUML di atas berfungsi sebagai dokumentasi sekaligus gambaran rancangan untuk implementasi. Menghasilkan gambar (melalui alat PlantUML atau server online) menghasilkan diagram yang bersih dan profesional siap untuk ulasan kebutuhan, pembuatan kode, atau pengajaran konsep UML.
Ekstensi masa depan dapat mencakup:
- Integrasi API cuaca (lewatkan pemantauan jika prakiraan hujan).
- Beberapa zona dengan ambang kelembapan per zona.
- Notifikasi aplikasi seluler saat timeout atau terjadi kesalahan.
Studi kasus ini menunjukkan bagaimana masalah otomasi yang tampaknya sederhana sangat diuntungkan oleh pemodelan berbasis status yang terstruktur.