96 lines
4.1 KiB
Markdown
96 lines
4.1 KiB
Markdown
# 🍄 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
|
||
```
|