TKK_E32230206/README.md

96 lines
4.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🍄 JTA Jamur Tiram Antirogo (Aplikasi Mobile IoT)
Aplikasi mobile **JTA (Jamur Tiram Antirogo)** merupakan komponen antarmuka (*frontend*) dalam ekosistem IoT budidaya jamur tiram. Aplikasi ini memungkinkan pengguna untuk memantau kondisi lingkungan (suhu dan kelembapan) serta mengontrol perangkat keras penyiram (sprayer) secara near real-time.
---
## 🌟 Fitur Utama
* **Near Real-Time Monitoring:** Pemantauan suhu dan kelembapan kumbung jamur secara berkala (polling otomatis setiap 5 detik) dilengkapi grafik historis harian dan per jam.
* **IoT Remote Control:** Pengaturan mode operasi (Otomatis / Manual) dan tombol penyiraman instan.
* **Threshold Settings:** Batasi rentang suhu dan kelembapan ideal untuk mengaktifkan penyiraman otomatis.
* **Irrigation Scheduling:** Penjadwalan penyiraman otomatis berdasarkan waktu/jam tertentu.
* **Secure Authentication:** Keamanan akun pengguna (login/register) serta persistensi sesi menggunakan layanan **Supabase Auth**.
* **Push Notifications:** Notifikasi status perangkat atau peringatan kondisi kumbung via **OneSignal**.
---
## 🏗️ Arsitektur Sistem
Aplikasi dikembangkan menggunakan **Layered Architecture** dengan pembagian tanggung jawab sebagai berikut:
1. **Presentation Layer:** Antarmuka pengguna (UI) reaktif (`MonitoringPage`, `ControlPage`, `SchedulePage`, dsb.).
2. **State Management (Riverpod):** Manajemen state terpusat (`MonitoringNotifier`, `ControlNotifier`, `AuthNotifier`).
3. **Repository Layer:** Abstraksi akses data (`IotRepository`, `AuthRepository`).
4. **Service Layer:** Jaringan komunikasi HTTP menggunakan **Dio** (`ApiIotService`, `ApiControlService`) dan **Supabase Flutter SDK** (`SupabaseAuthService`).
---
## 🛠️ Teknologi & Dependensi
* **Framework:** Flutter (Dart)
* **State Management:** Flutter Riverpod & StateNotifier
* **Database & Auth:** Supabase Flutter
* **HTTP Client:** Dio
* **Notification Service:** OneSignal Flutter
* **Chart Visuals:** Fl Chart / Grafik Kustom
---
## 🚀 Langkah Persiapan & Cara Menjalankan Proyek
Ikuti langkah-langkah di bawah ini untuk mengkloning dan menjalankan proyek ini di lingkungan lokal Anda.
### 1. Kloning Repositori
Jalankan perintah berikut di terminal komputer Anda:
```bash
git clone <URL_REPOSITORI_GITHUB_ANDA>
cd JTA
```
### 2. Konfigurasi Lingkungan Lokal (PENTING 🔑)
Untuk keamanan kredensial, berkas asli `env.dart` tidak diunggah ke GitHub (sudah terdaftar di `.gitignore`). Anda harus membuat berkas tersebut secara manual menggunakan template contoh:
1. Salin berkas template [**`lib/core/env.example.dart`**](file:///c:/project/JTA/lib/core/env.example.dart) dan buat berkas baru dengan nama [**`lib/core/env.dart`**](file:///c:/project/JTA/lib/core/env.dart).
2. Buka berkas [**`lib/core/env.dart`**](file:///c:/project/JTA/lib/core/env.dart), kemudian **hilangkan komentar** pada kelas `Env` dan isi dengan kredensial proyek Supabase & OneSignal Anda sendiri:
```dart
class Env {
// --- BASE API URL ---
static const String baseUrl = 'https://api.jta.web.id/api'; // Ganti jika memakai emulator/WiFi lokal
// --- SUPABASE CONFIGURATION ---
static const String supabaseUrl = 'https://YOUR_SUPABASE_PROJECT.supabase.co';
static const String supabaseAnonKey = 'YOUR_SUPABASE_ANON_KEY';
// --- ONESIGNAL CONFIGURATION ---
static const String oneSignalAppId = 'YOUR_ONESIGNAL_APP_ID';
}
```
### 3. Install Dependensi
Jalankan perintah berikut untuk mengunduh semua paket dependensi Flutter yang dibutuhkan:
```bash
flutter pub get
```
### 4. Jalankan Aplikasi
Hubungkan ponsel asli (aktifkan USB Debugging) atau jalankan emulator Android/iOS Anda, kemudian ketik:
```bash
flutter run
```
---
## 📁 Struktur Direktori Utama
```text
lib/
├── core/ # Tema aplikasi, rute navigasi, dan konfigurasi Env
├── features/ # Modul fitur utama (auth, monitoring, control, schedule)
│ ├── auth/
│ ├── monitoring/
│ ├── control/
│ └── schedule/
├── services/ # Akses layanan eksternal (Supabase Auth & API REST)
└── main.dart # Titik masuk utama (Entry point) aplikasi
```