# Dokumentasi Diagram Use Case Sistem JTA (Jamur Tiram Antirogo)

Dokumen ini berisi rancangan **Diagram Use Case** beserta penjelasannya untuk digunakan dalam laporan akhir proyek/tugas akhir Anda. Anda dapat menyalin teks dan diagram di bawah ini langsung ke laporan Anda.

---

## 1. Diagram Use Case (Mermaid)

Berikut adalah visualisasi diagram use case untuk aplikasi mobile JTA. Jika laporan Anda mendukung rendering Mermaid (seperti Markdown/GitHub), diagram akan ter-render otomatis. Anda juga dapat mengekspor diagram ini ke format PNG/SVG.

```mermaid
graph TD
    %% Define Actors
    Petani["Petani (Pengguna)"]
    ESP32["Perangkat IoT (ESP32)"]

    subgraph Batasan_Sistem_JTA ["Batasan Sistem JTA"]
        UC1(("UC-01: Registrasi Akun"))
        UC2(("UC-02: Login Akun"))
        UC3(("UC-03: Hubungkan Perangkat via Claim Code"))
        UC4(("UC-04: Pantau Suhu & Kelembapan Real-Time"))
        UC5(("UC-05: Lihat Riwayat Grafik"))
        UC6(("UC-06: Pilih Mode Operasi: Manual / Otomatis"))
        UC7(("UC-07: Atur Threshold Limit"))
        UC8(("UC-08: Kendalikan Pompa Air"))
        UC9(("UC-09: Atur Jadwal Penyiraman"))
        UC10(("UC-10: Terima Notifikasi"))
        UC11(("UC-11: Logout Akun"))
    end

    %% Actor Relationships
    Petani --> UC1
    Petani --> UC2
    Petani --> UC3
    Petani --> UC4
    Petani --> UC5
    Petani --> UC6
    Petani --> UC7
    Petani --> UC8
    Petani --> UC9
    Petani --> UC11

    ESP32 --> UC4
    ESP32 --> UC8
    ESP32 --> UC10

    %% Use Case Relationships
    UC3 -.->|include| UC2
    UC4 -.->|include| UC3
    UC5 -.->|include| UC3
    UC6 -.->|include| UC3
    UC9 -.->|include| UC3
    UC7 -.->|extend| UC6
    UC8 -.->|extend| UC6
    UC10 -.->|extend| UC4
```

### 💡 Cara Cepat Mengimpor ke Diagrams.net (Draw.io)

Draw.io mendukung pembuatan diagram otomatis dari kode Mermaid. Ikuti langkah mudah berikut:
1. Salin seluruh kode blok di dalam tanda ```mermaid diatas.
2. Buka [app.diagrams.net](https://app.diagrams.net/).
3. Di dalam editor Diagrams.net, klik menu **Arrange** di bagian atas -> **Insert** -> **Advanced** -> **Mermaid...** (atau klik ikon **+** (Plus) pada toolbar atas -> **Advanced** -> **Mermaid**).
4. Tempel (*paste*) kode Mermaid yang sudah disalin ke dalam kotak teks yang muncul.
5. Klik tombol **Insert** (Sisipkan).
6. Diagrams.net akan otomatis menggambarkan aktor, elips usecase, garis panah, dan teks penjelas. Anda tinggal merapikan posisi atau mengganti gaya warna agar sesuai selera.

---

## 2. Deskripsi Aktor (Actors)

Berikut adalah penjelasan mengenai aktor-aktor yang terlibat di dalam sistem JTA:

| No | Nama Aktor | Jenis | Deskripsi |
|---|---|---|---|
| 1 | **Petani (Pengguna)** | Utama (*Primary*) | Pengguna akhir aplikasi yang melakukan monitoring suhu/kelembapan kumbung dan mengendalikan pompa penyiraman secara manual maupun otomatis melalui aplikasi mobile. |
| 2 | **Perangkat IoT (ESP32)** | Pendukung (*Supporting*) | Perangkat keras yang mengirimkan data sensor SHT31 ke sistem dan menerima perintah kontrol (on/off relay pompa) serta mengirimkan data status aktual pompa. |

---

## 3. Definisi Use Case

Berikut adalah tabel fungsionalitas sistem berdasarkan Diagram Use Case di atas:

| Kode UC | Nama Use Case | Aktor Terlibat | Deskripsi |
|---|---|---|---|
| **UC-01** | Registrasi Akun | Petani | Pengguna membuat akun baru dengan memasukkan nama, email, dan password agar terdaftar di sistem. |
| **UC-02** | Login Akun | Petani | Pengguna masuk ke sistem menggunakan email dan password terdaftar untuk memvalidasi akses sesi. |
| **UC-03** | Hubungkan Perangkat | Petani | Pengguna memasukkan *Claim Code* alat ESP32 untuk menghubungkan perangkat fisik dengan akun di aplikasi. |
| **UC-04** | Pantau Suhu & Kelembapan | Petani, ESP32 | Sistem menampilkan data suhu (°C) dan kelembapan (%) secara real-time yang dikirimkan oleh sensor dari alat ESP32. |
| **UC-05** | Lihat Riwayat Grafik | Petani | Pengguna melihat visualisasi data sensor historis (grafik harian, mingguan, bulanan) untuk analisis kondisi kumbung. |
| **UC-06** | Pilih Mode Operasi | Petani | Pengguna mengganti mode kerja alat antara Mode Manual (kontrol pengguna) atau Mode Otomatis (kontrol threshold). |
| **UC-07** | Atur Threshold Limit | Petani | Pengguna menentukan batas maksimum suhu dan batas minimum kelembapan sebagai acuan penyiraman otomatis. |
| **UC-08** | Kendalikan Pompa Air | Petani, ESP32 | Pengguna menyalakan/mematikan pompa air secara instan berdasarkan durasi waktu pilihan pada Mode Manual. |
| **UC-09** | Atur Jadwal Penyiraman | Petani | Pengguna menjadwalkan jam dan hari penyiraman otomatis untuk menjaga kelembapan kumbung secara berkala. |
| **UC-10** | Terima Notifikasi | Petani, ESP32 | Sistem mengirim notifikasi peringatan push melalui OneSignal ke smartphone ketika suhu/kelembapan kumbung melewati batas aman. |
| **UC-11** | Logout Akun | Petani | Pengguna keluar dari sesi akun aplikasi secara aman. |

---

## 4. Spesifikasi Use Case Utama (Skenario Utama & Alternatif)

### UC-03: Hubungkan Perangkat (Claim Perangkat)
* **Aktor Utama**: Petani
* **Kondisi Awal (Pre-condition)**: Pengguna sudah berhasil login dan belum menghubungkan perangkat apapun (terdeteksi kartu "Belum Ada Alat Terhubung").
* **Alur Skenario Utama**:
  1. Pengguna mengetuk tombol tambah (+) pada kartu kosong halaman Monitoring.
  2. Sistem menampilkan dialog "Hubungkan Alat" dan meminta input *Claim Code*.
  3. Pengguna memasukkan *Claim Code* yang tertera pada alat.
  4. Pengguna mengetuk tombol "Hubungkan".
  5. Sistem memvalidasi kode di database Supabase dan menautkan *device_id* ke profil akun pengguna.
  6. Sistem menampilkan pesan sukses dan halaman dimuat ulang menampilkan indikator monitoring aktif.
* **Kondisi Akhir (Post-condition)**: Perangkat IoT berhasil terhubung ke akun pengguna secara permanen.

### UC-06: Pilih Mode Operasi & UC-07: Atur Threshold Limit
* **Aktor Utama**: Petani
* **Kondisi Awal (Pre-condition)**: Pengguna sudah login dan status alat dalam keadaan terhubung.
* **Alur Skenario Utama (Mode Otomatis)**:
  1. Pengguna membuka tab **Control**.
  2. Pengguna mengaktifkan Switch "Mode Otomatis".
  3. Sistem mengunci opsi tombol penyiraman manual dan menampilkan slider pengaturan batas threshold.
  4. Pengguna menentukan batas maksimal suhu (misal: 30°C) dan batas minimal kelembapan (misal: 70%).
  5. Pengguna mengetuk tombol "Simpan Batas".
  6. Sistem mengirimkan nilai threshold ke database backend. Perangkat ESP32 membaca batas ini dan akan menyalakan pompa secara mandiri jika kondisi dilewati.
* **Kondisi Akhir (Post-condition)**: Nilai threshold terupdate di backend dan mode otomatis aktif pada perangkat.
