245 lines
4.6 KiB
Markdown
245 lines
4.6 KiB
Markdown
# 📱 Aplikasi Monitoring Pengering Ikan
|
|
|
|
Aplikasi mobile untuk monitoring sistem pengering ikan otomatis berbasis IoT dengan ESP32.
|
|
|
|
---
|
|
|
|
## 🎯 Fitur Utama
|
|
|
|
- ✅ **Monitoring Real-time** - Data update setiap 5 detik
|
|
- ✅ **Push Notifications** - Notifikasi status pengeringan
|
|
- ✅ **Dashboard Lengkap** - Suhu, berat, target, status device
|
|
- ✅ **Cloud Backend** - Data tersimpan di Railway MySQL
|
|
- ✅ **Display Only** - Monitoring tanpa kontrol manual
|
|
|
|
---
|
|
|
|
## 🏗️ Arsitektur Sistem
|
|
|
|
```
|
|
ESP32 (Hardware)
|
|
↓
|
|
↓ MQTT Publish
|
|
↓
|
|
Backend Railway (Node.js)
|
|
↓
|
|
↓ Save to Database
|
|
↓
|
|
MySQL Database
|
|
↑
|
|
↑ API Polling (5 detik)
|
|
↑
|
|
Aplikasi Flutter (Android)
|
|
```
|
|
|
|
---
|
|
|
|
## 📦 Komponen
|
|
|
|
### 1. **Hardware (ESP32)**
|
|
- File: `esp32_pengering_ikan_railway.ino`
|
|
- Sensor: DHT22 (suhu), HX711 (berat)
|
|
- Relay: 4 channel (Heater, Fan, Lamp, Exhaust)
|
|
- Koneksi: WiFi + MQTT
|
|
|
|
### 2. **Backend (Node.js)**
|
|
- Folder: `backend/`
|
|
- Framework: Express.js
|
|
- Database: MySQL (Railway)
|
|
- MQTT Client: Subscribe dari ESP32
|
|
- REST API: Endpoint untuk aplikasi
|
|
|
|
### 3. **Mobile App (Flutter)**
|
|
- Folder: `lib/`
|
|
- Platform: Android
|
|
- Update: API polling 5 detik
|
|
- Notifikasi: flutter_local_notifications
|
|
|
|
---
|
|
|
|
## 🚀 Quick Start
|
|
|
|
### Build APK:
|
|
```bash
|
|
# Jalankan script build
|
|
.\build-with-icon.ps1
|
|
|
|
# Atau manual
|
|
flutter build apk --release
|
|
```
|
|
|
|
### Install di HP:
|
|
1. Copy `PengeringIkan.apk` dari Desktop
|
|
2. Install di HP Android
|
|
3. Izinkan notifikasi
|
|
4. Buka aplikasi
|
|
|
|
---
|
|
|
|
## 📱 Tampilan Aplikasi
|
|
|
|
### Status Card
|
|
- Status sistem (READY, SCANNING, BERJALAN, SELESAI)
|
|
- Waktu mulai & durasi
|
|
- Pesan status
|
|
|
|
### Metrics
|
|
- 🌡️ Suhu (°C)
|
|
- ⚖️ Berat (gram)
|
|
- 🎯 Target berat (gram)
|
|
|
|
### Device Status
|
|
- 🔥 Heater (ON/OFF)
|
|
- 💨 Fan (ON/OFF)
|
|
- 🌪️ Exhaust (ON/OFF)
|
|
|
|
### Connection Indicator
|
|
- ☁️🟢 API Connected
|
|
- ☁️🔴 API Disconnected
|
|
|
|
---
|
|
|
|
## 🔔 Notifikasi
|
|
|
|
Aplikasi mengirim push notification saat:
|
|
|
|
1. **Pengeringan Siap** (Status → READY)
|
|
2. **Ikan Terdeteksi** (Status → BERJALAN)
|
|
3. **Pengeringan Selesai** (Status → SELESAI)
|
|
|
|
Notifikasi muncul di dalam & luar aplikasi.
|
|
|
|
---
|
|
|
|
## 🔧 Konfigurasi
|
|
|
|
### Backend URL:
|
|
```dart
|
|
// lib/services/api_service.dart
|
|
static const String baseUrl = 'https://web-production-47eb.up.railway.app';
|
|
```
|
|
|
|
### Polling Interval:
|
|
```dart
|
|
// lib/screens/dashboard_screen_with_api.dart
|
|
Timer.periodic(const Duration(seconds: 5), ...);
|
|
```
|
|
|
|
### MQTT Topics (Backend):
|
|
```javascript
|
|
// backend/server.js
|
|
const TOPIC_DATA = 'novil/pengering/data';
|
|
const TOPIC_STATUS = 'novil/pengering/status';
|
|
const TOPIC_CONTROL = 'novil/pengering/control';
|
|
```
|
|
|
|
---
|
|
|
|
## 📊 API Endpoints
|
|
|
|
Dokumentasi lengkap: `backend/API_DOCUMENTATION.md`
|
|
|
|
### Main Endpoints:
|
|
- `GET /` - Health check
|
|
- `GET /api/data/latest` - Data sensor terbaru
|
|
- `GET /api/data/history` - Riwayat data
|
|
- `GET /api/status/history` - Riwayat status
|
|
- `GET /api/stats` - Statistik
|
|
|
|
---
|
|
|
|
## 🛠️ Development
|
|
|
|
### Requirements:
|
|
- Flutter SDK 3.5+
|
|
- Android SDK
|
|
- Node.js 18+
|
|
- MySQL 8.0+
|
|
|
|
### Setup Backend:
|
|
```bash
|
|
cd backend
|
|
npm install
|
|
npm start
|
|
```
|
|
|
|
### Setup Flutter:
|
|
```bash
|
|
flutter pub get
|
|
flutter run
|
|
```
|
|
|
|
---
|
|
|
|
## 📄 Dokumentasi
|
|
|
|
- **APK_MONITORING_FINAL.md** - Panduan lengkap aplikasi
|
|
- **PERBAIKAN_APK_FINAL.md** - Changelog & perbaikan
|
|
- **PERBAIKAN_STATUS_MQTT.md** - Penjelasan API only
|
|
- **backend/API_DOCUMENTATION.md** - API reference
|
|
|
|
---
|
|
|
|
## 🔍 Troubleshooting
|
|
|
|
### Icon Cloud Merah?
|
|
- Cek koneksi internet HP
|
|
- Test backend: https://web-production-47eb.up.railway.app/
|
|
- Restart aplikasi
|
|
|
|
### Data Tidak Update?
|
|
- Pastikan icon cloud hijau
|
|
- Cek ESP32 status (WiFi connected)
|
|
- Cek backend logs di Railway
|
|
|
|
### Notifikasi Tidak Muncul?
|
|
- Izinkan notifikasi di Settings
|
|
- Disable battery optimization
|
|
- Cek status berubah di ESP32
|
|
|
|
---
|
|
|
|
## 📝 Version History
|
|
|
|
### v1.0.0 (1 Juni 2026) - Current
|
|
- ✅ Monitoring only (no control)
|
|
- ✅ API polling 5 detik
|
|
- ✅ Push notifications
|
|
- ✅ 3 device cards (Heater, Fan, Exhaust)
|
|
- ✅ Auto-update data
|
|
- ✅ Connection indicator
|
|
|
|
---
|
|
|
|
## 👨💻 Tech Stack
|
|
|
|
- **Mobile:** Flutter 3.5, Dart 3.0
|
|
- **Backend:** Node.js 18, Express.js
|
|
- **Database:** MySQL 8.0 (Railway)
|
|
- **IoT:** ESP32, Arduino IDE
|
|
- **Protocol:** MQTT, REST API
|
|
- **Hosting:** Railway.app
|
|
|
|
---
|
|
|
|
## 📞 Support
|
|
|
|
Untuk pertanyaan atau masalah:
|
|
1. Cek dokumentasi di folder `docs/`
|
|
2. Lihat troubleshooting di README
|
|
3. Cek logs di Railway dashboard
|
|
|
|
---
|
|
|
|
## 📜 License
|
|
|
|
Private project - All rights reserved
|
|
|
|
---
|
|
|
|
**Build Date:** 1 Juni 2026
|
|
**Version:** 1.0.0
|
|
**Status:** ✅ Production Ready
|
|
|
|
🎉 **Aplikasi siap digunakan untuk monitoring pengering ikan!**
|