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
- UI publish perintah
- Broker distribusi
- ESP32 eksekusi relay
- ESP32 publish status retained
- UI update
2.3 Pertimbangan
- Tanpa polling → hemat bandwidth
- VPS privat → kontrol penuh
- WebSocket bridging browser
3. Detail Perangkat Keras (Firmware)
3.1 Pinout
Perangkat | GPIO | Relay |
---|---|---|
Lampu 1 | 1 | IN1 |
Lampu 2 | 2 | IN2 |
Stop Kontak 1 | 3 | IN3 |
Stop Kontak 2 | 4 | IN4 |
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
- Push repo.
- Import Vercel.
- Deploy.
6. Panduan Penggunaan & Setup
- Nyalakan node.
- Connect AP
SmartHome-Setup
. - Buka portal 192.168.4.1.
- Pilih WiFi & simpan.
- Node connect broker.
- Kontrol via dashboard.
7. Referensi API MQTT
Tipe | Topik | Arah | Payload | Deskripsi |
---|---|---|---|---|
Perintah | smarthome/lampu1/perintah | Web → ESP32 | "ON"|"OFF" | Lampu 1 |
Perintah | smarthome/lampu2/perintah | Web → ESP32 | "ON"|"OFF" | Lampu 2 |
Perintah | smarthome/stopkontak1/perintah | Web → ESP32 | "ON"|"OFF" | Stop Kontak 1 |
Perintah | smarthome/stopkontak2/perintah | Web → ESP32 | "ON"|"OFF" | Stop Kontak 2 |
Status | smarthome/lampu1/status | ESP32 → Web | "ON"|"OFF" | Status Lampu 1 |
Status | smarthome/lampu2/status | ESP32 → Web | "ON"|"OFF" | Status Lampu 2 |
Status | smarthome/stopkontak1/status | ESP32 → Web | "ON"|"OFF" | Status Stop Kontak 1 |
Status | smarthome/stopkontak2/status | ESP32 → Web | "ON"|"OFF" | Status Stop Kontak 2 |
8. Keamanan Sistem
8.1 Hardening
- allow_anonymous false
- mosquitto_passwd -c ...
- password_file ...
- Restart broker
- 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)