Skip to content

Repository files navigation

๐Ÿ  Aquarius โ€” Smart Aquarium IoT

Sistem Cerdas Pemantauan & Pengendalian Kualitas Air Akuarium
Berbasis Edge-Cloud Computing dan Generative AI

Proyek UTS Internet of Things โ€” Semester 6, Program Studi Informatika, Universitas Siliwangi

Fitur โ€ข Arsitektur โ€ข Tech Stack โ€ข Quick Start โ€ข Screenshot โ€ข Struktur โ€ข Lisensi


๐Ÿ“– Tentang Proyek

Aquarius adalah purwarupa sistem IoT full-stack yang merevolusi cara memelihara akuarium. Sistem ini mengintegrasikan:

  • ๐Ÿ”Œ Edge Computing โ€” Mikrokontroler ESP32 membaca 5 sensor kualitas air dan menjalankan failsafe otonom
  • โ˜๏ธ Cloud Dashboard โ€” Antarmuka Digital Twin real-time berbasis React JS dengan visualisasi interaktif
  • ๐Ÿง  AI Cloud Brain โ€” Google Gemini AI menganalisis korelasi data, memprediksi tren, dan memberikan rekomendasi naratif
  • ๐Ÿ“ก MQTT Telemetry โ€” Protokol publish-subscribe ringan untuk streaming data sensor tanpa overhead

Masalah yang dipecahkan: Air akuarium yang terlihat jernih belum tentu aman โ€” amonia, pH, dan TDS yang membahayakan tidak terlihat mata. Aquarius memantau parameter ini 24/7 dan memberikan peringatan dini cerdas sebelum terjadi kematian massal ikan.


๐ŸŒŠ Fitur Utama

Fitur Deskripsi
๐ŸŒก๏ธ Pemantauan 5 Parameter Suhu, pH, TDS/EC/Salinitas, Turbiditas, Amonia โ€” semuanya real-time
๐Ÿ“Š Water Quality Index (WQI) Skor tunggal 0โ€“100 dari algoritma penalty-based yang menyederhanakan data kompleks
๐Ÿšจ Deteksi Anomali Mendeteksi lonjakan data sensor yang tidak wajar (noise/outlier) dan menandainya
๐Ÿ”„ Failsafe Otonom Pompa & alarm otomatis menyala saat WQI kritis โ€” tanpa perlu internet
๐Ÿค– AI Predictive Analytics Gemini AI melakukan prediksi tren, Root Cause Analysis, dan rekomendasi tindakan
๐ŸŒ“ Dark Mode Antarmuka responsif dengan tema gelap premium untuk monitoring malam hari
๐Ÿ“ก Terminal MQTT Live Visualisasi paket JSON mentah dari broker MQTT secara langsung
๐Ÿ“‹ Event Logger Riwayat kronologis insiden, alarm, dan aksi pompa terstruktur
๐Ÿ’พ Export CSV Unduh data histori sensor ke format CSV untuk analisis lanjutan
๐Ÿ–ฅ๏ธ Simulasi Hardware & Telemetri Mendukung manipulasi data via slider kontrol UI yang menghasilkan pergerakan nilai (fluktuasi) menyerupai data sensor asli di dunia nyata

๐Ÿ—๏ธ Arsitektur Sistem

Topologi Edge-to-Cloud

graph TB
    subgraph "๐Ÿ”Œ Edge Layer (ESP32)"
        S1[๐ŸŒก๏ธ DS18B20<br/>Suhu Air]
        S2[โš—๏ธ SEN0161<br/>pH Level]
        S3[๐Ÿ’ง SEN0244<br/>TDS/EC/Salinitas]
        S4[๐ŸŒซ๏ธ Turbidity<br/>Kekeruhan]
        S5[โ˜ ๏ธ MQ-135<br/>Amonia]
        MCU[๐Ÿงฎ ESP32<br/>Edge Computing]
        R[โšก Relay + Pompa]
        BZ[๐Ÿ”” Buzzer + LED]
    end

    subgraph "๐Ÿ“ก Transport Layer"
        MQTT[โ˜๏ธ MQTT Broker<br/>WebSocket Bridge]
        CF[๐ŸŒ Cloudflare<br/>Reverse Proxy + SSL]
    end

    subgraph "๐Ÿ–ฅ๏ธ Application Layer"
        FE[โš›๏ธ React Dashboard<br/>Frontend]
        BE[๐ŸŸข Bun Backend<br/>REST API PM2]
        PROXY[๐Ÿš€ CF Workers<br/>Gemini Proxy Bypass]
    end

    subgraph "๐Ÿง  Cognitive Layer"
        AI[๐Ÿค– Google Gemini AI<br/>Predictive Analytics]
    end

    S1 & S2 & S3 & S4 & S5 -.->|Simulated Data| MCU
    MCU -->|Failsafe Trigger| R & BZ
    MCU -->|Publish JSON| MQTT
    MQTT -->|WebSocket Stream| FE
    FE -->|HTTPS POST| CF
    CF -->|Reverse Proxy| BE
    BE -->|Proxy Request| PROXY
    PROXY -->|Forward Bypass Geo| AI
    AI -->|JSON Response| PROXY
    PROXY -->|Forward Result| BE
    BE -->|Forward Result| FE

    style MCU fill:#1e40af,color:#fff,stroke:#3b82f6,stroke-width:2px
    style CF fill:#f59e0b,color:#000,stroke:#fbbf24,stroke-width:2px
    style PROXY fill:#f59e0b,color:#000,stroke:#fbbf24,stroke-width:2px
    style FE fill:#0891b2,color:#fff,stroke:#22d3ee,stroke-width:2px
    style BE fill:#16a34a,color:#fff,stroke:#4ade80,stroke-width:2px
    style AI fill:#9333ea,color:#fff,stroke:#c084fc,stroke-width:2px
Loading

Sequence Diagram โ€” Aliran Data

sequenceDiagram
    participant ๐Ÿ”Œ as ESP32 + Sensors
    participant ๐Ÿ“ก as MQTT Broker
    participant โš›๏ธ as React Dashboard
    participant ๐ŸŸข as Node.js Backend
    participant ๐Ÿค– as Gemini AI
    participant โšก as Aktuator (Pompa/Alarm)

    loop Setiap 2 Detik
        ๐Ÿ”Œ->>๐Ÿ”Œ: Baca 5 Sensor + Hitung WQI Lokal
        ๐Ÿ”Œ->>๐Ÿ”Œ: Cek Anomali & Batas Kritis
        alt WQI โ‰ค 50 (BAHAYA)
            ๐Ÿ”Œ->>โšก: ๐Ÿšจ FAILSAFE: Relay ON + Buzzer ON
        end
        ๐Ÿ”Œ->>๐Ÿ“ก: Publish payload JSON
    end

    loop Real-Time Sync
        ๐Ÿ“ก-->>โš›๏ธ: WebSocket โ†’ Data Sensor
        โš›๏ธ->>โš›๏ธ: Kalkulasi WQI + Update Chart & UI
        โš›๏ธ->>โš›๏ธ: Deteksi Anomali (Outlier Spike)
    end

    loop On-Demand / Berkala
        โš›๏ธ->>๐ŸŸข: POST /api/analyze {sensor + history}
        ๐ŸŸข->>๐ŸŸข: Rate Limiting + Deadband Filter
        ๐ŸŸข->>๐Ÿค–: Kirim Prompt (Context + Data)
        ๐Ÿค–-->>๐ŸŸข: JSON {status, risk, RCA, actions}
        ๐ŸŸข-->>โš›๏ธ: Forward Response
        โš›๏ธ->>โš›๏ธ: Render Panel "Pakar Ekosistem Virtual"
    end
Loading

๐Ÿ”Œ Skema Hardware Simulasi (Wiring Referensi)

Walaupun aplikasi ini berjalan menggunakan simulasi telemetri berfluktuasi tanpa perangkat fisik, berikut adalah referensi koneksi pin (GPIO) jika proyek ini diimplementasikan dengan Real Hardware ESP32:

Sensor / Modul Pin ESP32 (Default) Fungsi Protokol Komunikasi
DS18B20 GPIO 4 Suhu Air 1-Wire (Butuh Resistor Pull-up 4.7k)
SEN0161 (pH) GPIO 34 pH Air Analog (ADC)
SEN0244 (TDS) GPIO 35 Salinitas & Mineral Analog (ADC)
Turbidity Sensor GPIO 32 Kekeruhan Air Analog (ADC)
MQ-135 GPIO 33 Kadar Amonia Analog (ADC)
Relay Pompa GPIO 25 Kendali Sirkulasi Digital Out
Relay Aerator GPIO 26 Kendali Oksigen Digital Out

Catatan: Anda dapat melihat skema Wiring visual interaktif langsung di Dashboard dengan menekan tombol "Lihat Skema Perangkat".


โš™๏ธ Variabel Lingkungan (.env)

Buat file .env di folder /backend dengan isian berikut:

Variabel Keterangan Default / Contoh
GEMINI_API_KEY API Key dari Google AI Studio (Wajib) AIzaSy...
PORT Port backend berjalan 3001
GEMINI_PROXY_URL URL Cloudflare Worker (Untuk Geo-bypass) https://proxy.workers.dev

๐Ÿ”‘ Pro Tip: Karena kita mempublikasi repo ini, file .env sudah aman masuk ke dalam .gitignore sehingga API Key milik Anda tidak akan terekspos ke GitHub.


๐Ÿ”ง Tech Stack

๐Ÿ”Œ Edge / IoT

Teknologi Peran
ESP32 Mikrokontroler utama
DS18B20 Sensor suhu air
SEN0161 Sensor pH
SEN0244 Sensor TDS/EC
MQ-135 Sensor amonia
Relay Module Pengendali pompa
C++ / Arduino Firmware
Wokwi Simulator

โš›๏ธ Frontend

Teknologi Peran
React 19 UI Library
Vite 7 Bundler
Tailwind CSS Styling
Framer Motion Animasi
Recharts Grafik data
Lucide React Ikon
Bun Package Manager

๐ŸŸข Backend & Cloud

Teknologi Peran
Bun Fast Runtime
Express 5 REST Framework
PM2 Process Manager
Caddy Reverse Proxy
Cloudflare DNS & SSL
CF Workers Gemini Proxy

๐Ÿ“ก Protokol & AI

Teknologi Peran
MQTT Pub/Sub Telemetri
WebSocket Real-time UI
Gemini 3.1 Flash Lite Model
REST API Backend Route
HTTPS Secure Comm.

๐Ÿ“ธ Screenshot

โ˜€๏ธ Light Mode ๐ŸŒ™ Dark Mode
Dashboard Light Mode Dashboard Dark Mode

๐Ÿ’ก Tip: Klik gambar untuk melihat dalam resolusi penuh. Dashboard menampilkan panel kontrol sensor (kiri), dashboard real-time dengan gauge meter dan chart (tengah), serta panel AI Cloud Assistant (kanan).


๐Ÿ“ Flowchart WQI (Water Quality Index)

Skor WQI dihitung menggunakan algoritma penalty-based โ€” dimulai dari skor sempurna 100, lalu dikurangi berdasarkan deviasi setiap parameter:

graph TD
    A["๐ŸŽฏ Skor Awal: 100"] --> B["๐ŸŒก๏ธ Penalti Suhu<br/>|temp - 27ยฐC| ร— 5"]
    A --> C["โš—๏ธ Penalti pH<br/>|pH - 7.0| ร— 15"]
    A --> D["๐Ÿ’ง Penalti TDS<br/>(TDS > 400) ร— 0.05"]
    A --> E["๐ŸŒซ๏ธ Penalti Turbiditas<br/>(NTU > 10) ร— 0.5"]
    A --> F["โ˜ ๏ธ Penalti Amonia<br/>NH3 ร— 40 โš ๏ธ TERBERAT"]

    B & C & D & E & F --> G["โž– Total Penalti"]
    G --> H["๐Ÿ“Š WQI = 100 - Total"]
    H --> I{WQI Score?}
    I -->|"โ‰ฅ 80"| J["โœ… Sangat Baik"]
    I -->|"60-79"| K["โš ๏ธ Waspada"]
    I -->|"40-59"| L["๐ŸŸ  Buruk"]
    I -->|"< 40"| M["๐Ÿ”ด KRITIS<br/>Failsafe Aktif!"]

    style A fill:#dbeafe,stroke:#3b82f6,stroke-width:2px
    style F fill:#fce4ec,stroke:#ef4444,stroke-width:3px
    style J fill:#dcfce7,stroke:#22c55e,stroke-width:2px
    style K fill:#fef9c3,stroke:#eab308,stroke-width:2px
    style L fill:#fed7aa,stroke:#f97316,stroke-width:2px
    style M fill:#fecaca,stroke:#ef4444,stroke-width:3px
Loading

Catatan penting: Penalti Amonia memiliki bobot tertinggi (ร—40) karena toksisitasnya yang mematikan โ€” hanya 0.5 ppm saja sudah memotong 20 poin WQI!


๐Ÿง  Alur Kerja AI (Gemini Cloud Brain)

graph LR
    A["๐Ÿ“Š Data Sensor<br/>+ Histori 10 Poin"] --> B["๐ŸŸข Backend<br/>POST /api/analyze"]
    B --> C{"๐Ÿ”’ Rate Limiter<br/>+ Deadband"}
    C -->|"Data berubah signifikan"| D["๐Ÿ“ Prompt<br/>Engineering"]
    C -->|"Data stabil"| E["โธ๏ธ Cache Response<br/>(Cooldown 60s)"]
    D --> F["๐ŸŒŸ Dynamic Context<br/>Profil Lingkungan"]
    F --> G["๐Ÿค– Gemini 3.1 Flash"]
    G --> H["๐Ÿ“‹ JSON Response<br/>Terstruktur"]

    H --> I["๐Ÿ“Š status_level"]
    H --> J["๐Ÿ“ˆ predictive_insight"]
    H --> K["๐Ÿ” root_cause_analysis"]
    H --> L["โœ… recommended_actions"]

    I & J & K & L --> M["โš›๏ธ Panel AI<br/>di Dashboard"]

    style G fill:#9333ea,color:#fff,stroke:#c084fc,stroke-width:2px
    style F fill:#4f46e5,color:#fff,stroke:#818cf8,stroke-width:2px
Loading

Profil Lingkungan yang Didukung:

Profil Suhu Ideal pH Ideal TDS Maks Kekeruhan
๐Ÿ  Ikan Tropis 24โ€“30ยฐC 6.5โ€“7.5 400 ppm < 10 NTU
๐ŸŸ Ikan Koi 20โ€“28ยฐC 7.0โ€“8.0 300 ppm < 5 NTU
๐ŸŒฟ Aquascape 22โ€“28ยฐC 6.0โ€“7.0 500 ppm < 5 NTU

๐Ÿ”’ Aspek Keamanan & Batasan (Security & Limitations)

Sistem ini dirancang sebagai Proof of Concept (PoC) untuk kebutuhan akademik (UTS), dengan mempertimbangkan beberapa aspek keamanan dasar:

  1. AI API Key Protection: API Key Google Gemini disimpan aman di server backend (melalui .env), tidak pernah diekspos ke sisi client (Frontend).
  2. Geo-Restriction Bypass: Akses ke model Gemini di-routing melalui Cloudflare Workers sebagai Forward Proxy, sehingga IP VPS tidak ditolak oleh Google. Worker ini bersifat passthrough dan tidak menyimpan credential.
  3. Data Transport: Komunikasi antara Frontend dan Backend sudah dilindungi enkripsi HTTPS/WSS via Cloudflare/Caddy.

โš ๏ธ Batasan (Known Limitations):

  1. Data Berbasis Simulasi: Seluruh telemetri yang dimunculkan merupakan data mock (dummy) yang dirancang agar menyerupai sensor asli. Tidak ada sensor maupun ESP32 fisik yang terhubung ke dalam sistem.
  2. Tanpa Rate-Limiting: Endpoint /api/analyze belum dilengkapi mekanisme Rate Limiting. Pengguna publik dapat menguras kuota gratis API Gemini jika melakukan spam request.

๐Ÿš€ Deployment (Production)

Sistem ini sudah di-deploy dan dapat diakses publik.

๐ŸŒ Live URL

๐Ÿ—๏ธ Konfigurasi Server (VPS Linux)

1. Frontend (Caddy Static Hosting) Build Vite di-serve langsung menggunakan Caddy Reverse Proxy dengan auto-SSL dari Cloudflare.

2. Backend (Bun + PM2) Backend berjalan menggunakan runtime Bun yang super cepat dan dijaga tetap hidup oleh PM2.

pm2 start server.js --name iot-backend --interpreter bun
pm2 save

3. Cloudflare Workers (Gemini Proxy) Karena Google Gemini API memblokir request dari IP Indonesia (Geo-restriction), request ke AI di-routing melalui Cloudflare Workers.

// CF Worker URL
GEMINI_PROXY_URL=https://gemini-proxy.yourname.workers.dev

Backend akan otomatis fallback ke local logic (Smart Fallback) jika API Key habis quota atau proxy mati.


๐Ÿ’ป Local Development (Quick Start)

Prasyarat

1๏ธโƒฃ Clone Repository

git clone https://github.com/feb027/TugasIoT.git
cd TugasIoT

2๏ธโƒฃ Setup Backend

cd backend
bun install          # atau: npm install

# Buat file .env
echo "GEMINI_API_KEY=your_api_key_here" > .env

# Jalankan server
bun server.js        # atau: node server.js
# โœ… Server listening on port 3001

3๏ธโƒฃ Setup Frontend

cd frontend
bun install          # atau: npm install

# Jalankan dev server
bun run dev          # atau: npm run dev
# โœ… Local: http://localhost:5173

4๏ธโƒฃ Buka Dashboard

Akses http://localhost:5173 di browser.

โ„น๏ธ Catatan: Dashboard berjalan dalam mode Simulasi Telemetri. Anda bisa mencoba berbagai skenario ekosistem (Suhu tinggi, pH asam, dll) dengan menggeser slider pada Control Panel. Nilai data akan berfluktuasi secara otomatis (ditambah noise ยฑ) agar menyerupai perilaku data sensor riil di lapangan.

graph LR
    A["๐Ÿ’ป Terminal 1<br/>bun server.js"] --> B["Port 3001<br/>Backend API"]
    C["๐Ÿ’ป Terminal 2<br/>bun run dev"] --> D["Port 5173<br/>Frontend UI"]
    D -->|"API Call"| B
    E["๐ŸŒ Browser"] -->|"localhost:5173"| D

    style A fill:#16a34a,color:#fff
    style C fill:#0891b2,color:#fff
Loading

๐Ÿ“ Struktur Proyek

smart-aquarium-iot/
โ”‚
โ”œโ”€โ”€ ๐Ÿ“„ README.md                    # Dokumen ini
โ”œโ”€โ”€ ๐Ÿ“„ laporan_akhir.md             # Laporan lengkap proyek (PDF-ready)
โ”œโ”€โ”€ ๐Ÿ“„ UTS Internet of Things 2026.md  # Naskah soal UTS
โ”œโ”€โ”€ ๐Ÿ“„ prd.md                       # Product Requirements Document
โ”‚
โ”œโ”€โ”€ โšก wokwi_sketch.ino             # Firmware ESP32 (C++/Arduino)
โ”œโ”€โ”€ ๐Ÿ“‹ diagram.json                  # Skema rangkaian Wokwi Simulator
โ”‚
โ”œโ”€โ”€ ๐Ÿ–ฅ๏ธ skema_rangkaian.html         # Visualisasi skema rangkaian
โ”œโ”€โ”€ ๐Ÿ—๏ธ arsitektur_sistem.html       # Diagram arsitektur sistem
โ”œโ”€โ”€ ๐Ÿ“Š flowchart_wqi.html           # Flowchart WQI interaktif
โ”‚
โ”œโ”€โ”€ ๐ŸŸข backend/                     # Server Node.js + Express
โ”‚   โ”œโ”€โ”€ server.js                   # Entry point (REST API + Gemini)
โ”‚   โ”œโ”€โ”€ .env                        # Environment variables (API Key)
โ”‚   โ””โ”€โ”€ package.json                # Dependencies backend
โ”‚
โ”œโ”€โ”€ โš›๏ธ frontend/                    # React Dashboard (Vite)
โ”‚   โ”œโ”€โ”€ src/
โ”‚   โ”‚   โ”œโ”€โ”€ App.jsx                 # Root component (State, WQI, Anomaly)
โ”‚   โ”‚   โ”œโ”€โ”€ main.jsx                # Entry point React
โ”‚   โ”‚   โ”œโ”€โ”€ index.css               # Global styles + Tailwind
โ”‚   โ”‚   โ”œโ”€โ”€ App.css                 # App-specific styles
โ”‚   โ”‚   โ””โ”€โ”€ components/
โ”‚   โ”‚       โ”œโ”€โ”€ Dashboard.jsx       # Panel utama: Gauge, Chart, Events
โ”‚   โ”‚       โ”œโ”€โ”€ ControlPanel.jsx    # Slider sensor & toggle kontrol
โ”‚   โ”‚       โ”œโ”€โ”€ AIPanel.jsx         # Panel asisten AI Cloud
โ”‚   โ”‚       โ”œโ”€โ”€ HardwareSimulation.jsx  # Modal skema ESP32 (Diagram Wiring)
โ”‚   โ”‚       โ”œโ”€โ”€ TrendChart.jsx      # Line chart Recharts
โ”‚   โ”‚       โ”œโ”€โ”€ GaugeMeter.jsx      # Gauge meter komponen
โ”‚   โ”‚       โ””โ”€โ”€ CustomSlider.jsx    # Slider input kustom
โ”‚   โ”œโ”€โ”€ tailwind.config.js          # Konfigurasi Tailwind CSS
โ”‚   โ”œโ”€โ”€ vite.config.js              # Konfigurasi Vite bundler
โ”‚   โ””โ”€โ”€ package.json                # Dependencies frontend
โ”‚
โ””โ”€โ”€ ๐Ÿ“š docs/                        # Dokumentasi tambahan
    โ”œโ”€โ”€ screenshots/                # Screenshot aplikasi
    โ”‚   โ”œโ”€โ”€ dashboard_light.png     # Dashboard mode terang
    โ”‚   โ””โ”€โ”€ dashboard_dark.png      # Dashboard mode gelap
    โ””โ”€โ”€ plans/                      # Rencana pengembangan

๐Ÿ”Œ Skema Rangkaian ESP32

Berikut adalah pemetaan koneksi GPIO antara ESP32 dan seluruh modul sensor/aktuator:

graph LR
    subgraph "ESP32 DevKit V4"
        ESP["๐Ÿงฎ ESP32"]
    end

    subgraph "Sensor Input"
        T["๐ŸŒก๏ธ DS18B20<br/>Pin 4 (1-Wire)"]
        PH["โš—๏ธ pH Sensor<br/>Pin 34 (ADC)"]
        TDS["๐Ÿ’ง TDS Sensor<br/>Pin 35 (ADC)"]
        NH3["โ˜ ๏ธ MQ-135<br/>Pin 32 (ADC)"]
        NTU["๐ŸŒซ๏ธ Turbidity<br/>Pin 33 (ADC)"]
    end

    subgraph "Aktuator Output"
        RL["โšก Relay Module<br/>Pin 2 (Digital)"]
        LED["๐Ÿ”ด Warning LED<br/>Pin 5 (Digital)"]
        BUZ["๐Ÿ”” Buzzer<br/>Pin 18 (Digital)"]
    end

    T -->|"Data"| ESP
    PH -->|"Analog"| ESP
    TDS -->|"Analog"| ESP
    NH3 -->|"Analog"| ESP
    NTU -->|"Analog"| ESP
    ESP -->|"Control"| RL
    ESP -->|"Control"| LED
    ESP -->|"Control"| BUZ

    style ESP fill:#1e40af,color:#fff,stroke:#3b82f6,stroke-width:3px
    style RL fill:#dc2626,color:#fff,stroke:#ef4444,stroke-width:2px
    style LED fill:#dc2626,color:#fff,stroke:#ef4444,stroke-width:2px
    style BUZ fill:#dc2626,color:#fff,stroke:#ef4444,stroke-width:2px
Loading
Komponen Jenis Pin GPIO Keterangan
DS18B20 (Suhu) Digital 1-Wire GPIO 4 Dengan pull-up resistor 4.7kฮฉ
pH Sensor (SEN0161) Analog (ADC) GPIO 34 Range 0โ€“14 pH
TDS Sensor (SEN0244) Analog (ADC) GPIO 35 Range 0โ€“1000 ppm
Amonia (MQ-135) Analog (ADC) GPIO 32 Range 0โ€“5 ppm
Turbidity Analog (ADC) GPIO 33 Range 0โ€“100 NTU
Relay Module Digital Output GPIO 2 NO (Normally Open)
Warning LED Digital Output GPIO 5 Resistor 220ฮฉ
Buzzer Digital Output GPIO 18 1KHz tone

โš™๏ธ Mekanisme Failsafe

Sistem dirancang dengan prinsip keselamatan otonom: meski internet mati, ESP32 tetap melindungi akuarium.

stateDiagram-v2
    [*] --> Monitoring: Sistem Hidup
    
    Monitoring --> Normal: WQI > 50
    Monitoring --> Critical: WQI โ‰ค 50
    
    Normal --> Monitoring: Baca Sensor (2s)
    
    Critical --> FailsafeActive: Trigger Lokal
    
    state FailsafeActive {
        [*] --> RelayON: digitalWrite(RELAY, HIGH)
        RelayON --> PompaAktif: Pompa Sirkulasi Menyala
        [*] --> LEDON: digitalWrite(LED, HIGH)  
        LEDON --> LampuMerah: Indikator Darurat
        [*] --> BuzzerON: tone(BUZZER, 1000)
        BuzzerON --> AlarmBerbunyi: Sirine 1KHz
    }
    
    FailsafeActive --> Monitoring: WQI Pulih > 50
Loading

๐Ÿ”‘ Poin kunci: Failsafe berjalan di loop() firmware โ€” tidak bergantung pada koneksi internet/cloud. Ini adalah garis pertahanan pertama yang melindungi ekosistem akuarium.


๐Ÿงช Skenario Pengujian

# Skenario Tujuan Hasil
1 Stabilitas UI Memastikan chart tidak frame-drop saat data stream konstan โœ… React Virtual DOM + Vite HMR stabil
2 Trigger Alarm Kritis Injeksi Amonia > 2.5 ppm โœ… LED, Buzzer, Relay aktif + Event Log mencatat
3 Rate Limiting AI Spam klik "Analisis AI" berturut-turut โœ… Backend mengembalikan HTTP 429 + Cooldown
4 Deteksi Anomali Lonjakan TDS > 100 ppm/detik โœ… Banner "Anomali Terdeteksi" muncul di UI
5 Failsafe Offline Matikan koneksi saat WQI kritis โœ… Pompa tetap aktif (Edge Computing)
6 Export CSV Unduh data histori โœ… File .csv valid dengan semua kolom

๐Ÿ—บ๏ธ Roadmap Pengembangan

timeline
    title Roadmap Smart Aquarium IoT
    
    section Phase 1 โ€” MVP โœ…
        Sensor Integration    : ESP32 + 5 Sensor + Aktuator
        Dashboard UI          : React + Tailwind + Dark Mode
        WQI Algorithm         : Penalty-based scoring
        AI Integration        : Gemini API + Backend wrapper

    section Phase 2 โ€” Enhancement ๐Ÿšง
        Auto Feeder           : Servo motor + jadwal pakan AI
        Mobile App            : React Native / Flutter
        Push Notification     : Alert darurat ke smartphone
        MQTT Broker Publik    : HiveMQ / EMQX Cloud

    section Phase 3 โ€” Advanced ๐Ÿ”ฎ
        Computer Vision       : Kamera IP waterproof + deteksi perilaku ikan
        Multi-Tank Support    : Manajemen beberapa akuarium
        Data Analytics        : Grafik multi-minggu + ML prediction
        Komersial Release     : Produk jadi siap pasar
Loading

๐Ÿ‘ฅ Tim Pengembang

Proyek ini dikerjakan sebagai tugas UTS Internet of Things di bawah bimbingan:

Peran Nama
๐Ÿ“š Dosen Pengampu Reza Febriana, S.Kom., M.Kom., CEH.
๐Ÿซ Institusi Program Studi Informatika, Fakultas Teknik, Universitas Siliwangi
๐Ÿ“… Semester Genap 2025/2026

๐Ÿ“œ Lisensi

Proyek ini dibuat untuk keperluan akademis (UTS IoT Semester 6). Diizinkan digunakan sebagai referensi pembelajaran.


Dibuat menggunakan ESP32, React, dan Google Gemini AI
ยฉ 2026 โ€” Smart Aquarium IoT Project

About

๐Ÿ  Aquarius โ€” Smart Aquarium IoT System. Edge-Cloud Computing & Generative AI for Aquarium Water Quality Monitoring (Simulation). UTS Project.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages