Dokumentasi Lengkap Sistem Kontrol Smart Home IoT

Versi 2.0.0 • Revisi 5 Oktober 2025 • Tim SKARIGA EIA

1. Pendahuluan

Selamat datang di dokumentasi resmi Proyek Smart Home IoT. Dokumen ini memberikan pemahaman komprehensif terkait arsitektur, komponen, alur kerja, serta panduan operasional sistem.

Sistem memanfaatkan ESP32-S2 Mini, protokol MQTT, dan antarmuka Next.js (TypeScript) dengan fokus fleksibilitas, keandalan, dan akses global.

1.1. Tujuan Proyek

  • Kontrol Jarak Jauh: Akses perangkat dari mana saja.
  • Fleksibilitas: Setup WiFi tanpa reflashing firmware.
  • Real-Time Monitoring: Pub/Sub status instan.
  • Skalabilitas: Mudah menambah node baru.
  • Keamanan: Broker privat (VPS) memberi kontrol penuh.

1.2. Ruang Lingkup Dokumen

Mencakup: teknologi, arsitektur, firmware, antarmuka web, deployment, keamanan, pengujian, troubleshooting, serta pengembangan lanjutan. Tidak mencakup desain PCB manufaktur.

1.3. Target Pembaca

  • Developer
  • SysAdmin / DevOps
  • Pengguna Teknis

1.4. Definisi & Istilah

IoT
Jaringan perangkat fisik terhubung internet.
MQTT
Protokol pub/sub ringan koneksi persisten.
Broker
Perantara distribusi pesan antar klien.
Topik
Saluran hierarkis untuk routing pesan.
Firmware
Perangkat lunak tingkat rendah di MCU.
VPS
Server privat virtual untuk hosting mandiri.

2. Arsitektur Sistem

Arsitektur berbasiskan pola publish-subscribe dengan Mosquitto sebagai broker pusat.

[Diagram Arsitektur Sistem]

Placeholder diagram: ESP32 Nodes ⇄ MQTT Broker ⇄ Web Dashboard.

2.1 Komponen

  • ESP32 Node: kontrol relay.
  • Broker: relay pesan efisien.
  • Web Dashboard: UI real-time.

2.2 Alur

  1. UI publish perintah
  2. Broker distribusi
  3. ESP32 eksekusi relay
  4. ESP32 publish status retained
  5. UI update

2.3 Pertimbangan

  • Tanpa polling → hemat bandwidth
  • VPS privat → kontrol penuh
  • WebSocket bridging browser

3. Detail Perangkat Keras (Firmware)

3.1 Pinout

PerangkatGPIORelay
Lampu 11IN1
Lampu 22IN2
Stop Kontak 13IN3
Stop Kontak 24IN4

Ground semua modul harus terhubung bersama.

3.2 Logika

  • WiFiManager AP fallback.
  • Reconnect interval 5s.
  • Callback parse topik → digitalWrite.
  • Status retained.

3.3 Struktur

setup(): init serial, pin, WiFi portal
loop(): client.loop() + reconnect
callback(): topik → aksi
reconnect(): connect + subscribe

4. Detail Server (MQTT Broker)

4.1 Konfigurasi

listener 1883
listener 9001
protocol websockets
allow_anonymous true # produksi → false

4.2 Firewall

  • Buka 1883 & 9001.
  • Uji eksternal tool.

4.3 Service (Windows)

  • Kelola via Services.
  • Verbose: mosquitto -v.

5. Detail Antarmuka Web (Dasbor)

5.1 Fungsional

  • WebSocket MQTT.
  • Wildcard subscribe.
  • State reaktif.
  • Publish ON/OFF.

5.2 Struktur

page.tsx → init MQTT
DeviceCard.tsx → UI kontrol
Type definitions

5.3 Deployment

  1. Push repo.
  2. Import Vercel.
  3. Deploy.

6. Panduan Penggunaan & Setup

  1. Nyalakan node.
  2. Connect AP SmartHome-Setup.
  3. Buka portal 192.168.4.1.
  4. Pilih WiFi & simpan.
  5. Node connect broker.
  6. Kontrol via dashboard.

7. Referensi API MQTT

TipeTopikArahPayloadDeskripsi
Perintahsmarthome/lampu1/perintahWeb → ESP32"ON"|"OFF"Lampu 1
Perintahsmarthome/lampu2/perintahWeb → ESP32"ON"|"OFF"Lampu 2
Perintahsmarthome/stopkontak1/perintahWeb → ESP32"ON"|"OFF"Stop Kontak 1
Perintahsmarthome/stopkontak2/perintahWeb → ESP32"ON"|"OFF"Stop Kontak 2
Statussmarthome/lampu1/statusESP32 → Web"ON"|"OFF"Status Lampu 1
Statussmarthome/lampu2/statusESP32 → Web"ON"|"OFF"Status Lampu 2
Statussmarthome/stopkontak1/statusESP32 → Web"ON"|"OFF"Status Stop Kontak 1
Statussmarthome/stopkontak2/statusESP32 → Web"ON"|"OFF"Status Stop Kontak 2

8. Keamanan Sistem

8.1 Hardening

  1. allow_anonymous false
  2. mosquitto_passwd -c ...
  3. password_file ...
  4. Restart broker
  5. Update klien

8.2 TLS

  • Let's Encrypt
  • Listener 8883 / 8081
  • mqtts:// wss://

9. Strategi Pengujian

  • Unit
  • Integrasi
  • E2E

10. Troubleshooting

Masalah: Status selalu Connecting

Pastikan node online & retained status tersedia

Masalah: Relay tidak respon

Cek publish topik perintah; bedakan wiring vs koneksi

Masalah: ECONNRESET

Port 1883/9001 mungkin tertutup

Masalah: Unable to add filesystem

Gunakan mqtt versi 4.x (4.3.7)

11. Pengembangan di Masa Depan

  • Sensor tambahan
  • Autentikasi + TLS
  • Aturan otomatis
  • Historis data
  • Aplikasi mobile

12. Lampiran

Lampiran A: Skema

[Placeholder Skema Listrik]

Lampiran B: Log Perubahan

  • v1.0.0 (4 Okt 2025)
  • v2.0.0 (5 Okt 2025)