Pendahuluan
Di Seri 1 kamu sudah mengontrol relay lampu lewat MQTT (artikel #8) dan mengirim data DHT22 sebagai JSON (artikel #9). Di Seri 2, broker Mosquitto pribadi (#16) menjadi fondasi infrastruktur sendiri.
Artikel ini membuka Jalur C (smart home): Home Assistant (HA) — platform open-source yang mengumpulkan sensor, switch, dan automasi dalam satu dashboard. ESP32 tetap publisher/subscriber MQTT; HA yang jadi “otak” smart home.
Prasyarat: Paham MQTT dasar (#7), sudah bisa kontrol relay via MQTT (#8), dan punya (atau bisa akses) broker Mosquitto pribadi + auth (#16). Sketch gabungan DHT22 + relay dari artikel #9 dipakai sebagai contoh ESP32.
Yang Kamu Butuhkan
- PC / laptop / Raspberry Pi untuk menjalankan Home Assistant (Docker atau instalasi native)
- Broker Mosquitto yang sudah jalan — dari artikel #16 (IP LAN, misalnya
192.168.1.50) - ESP32 dengan sketch publish DHT22 + subscribe relay (topik Seri 1)
- ESP32 dan server HA di jaringan WiFi/LAN yang sama dengan broker
Apa itu Home Assistant?
| Aspek | Web server ESP32 (#6) | Home Assistant |
|---|---|---|
| Fokus | Halaman monitoring satu board | Hub banyak perangkat & protokol |
| UI | HTML custom di ESP32 | Dashboard, mobile app, automasi visual |
| ESP32 | Server + sensor sekaligus | ESP32 tetap node MQTT; HA sebagai subscriber/publisher |
| Automasi | Harus coding di firmware | Rule di HA (suhu > 30°C → matikan lampu) |
Arsitektur: ESP32 → Mosquitto → Home Assistant
| Komponen | Peran | Koneksi |
|---|---|---|
| ESP32 (DHT22 + relay) | Publisher sensor & subscriber relay | WiFi/LAN → broker MQTT |
| Mosquitto (#16) | Broker pusat | Port 1883 + username/password |
| Home Assistant | Dashboard & automasi smart home | Subscribe/publish ke topic yang sama |
Alur data secara singkat:
[ ESP32 — DHT22 + relay ]
|
| publish: kodingindonesia/esp32/dht22/data (JSON suhu & RH)
| subscribe: kodingindonesia/esp32/lampu/kontrol (ON / OFF)
| WiFi/LAN · MQTT :1883 · auth
v
[ Mosquitto @ Raspberry Pi / VPS ] (#16)
|
| MQTT — topic sensor + switch
v
[ Home Assistant ] (Jalur C)
|
+-- sensor: suhu & kelembaban di dashboard
+-- switch: nyala/mati lampu relay
+-- automasi: rule (mis. suhu > 30°C → matikan lampu)
Topic MQTT (konsisten Seri 1):
- Sensor:
kodingindonesia/esp32/dht22/data— JSON{"suhu":28.5,"kelembaban":65.2} - Relay:
kodingindonesia/esp32/lampu/kontrol— payloadON/OFF
Install Home Assistant (Docker)
Cara paling portabel untuk belajar — jalankan di PC Linux, Mac, atau Raspberry Pi dengan Docker:
# docker-compose.yml
services:
homeassistant:
container_name: homeassistant
image: ghcr.io/home-assistant/home-assistant:stable
volumes:
- ./ha-config:/config
restart: unless-stopped
network_mode: host
mkdir ha-config
docker compose up -d
# Buka http://localhost:8123 — ikuti wizard setup akun
Alternatif: Home Assistant OS di Raspberry Pi 4 (image resmi) — cocok untuk server smart home 24/7. Logika MQTT di artikel ini sama; hanya cara install yang berbeda.
Hubungkan MQTT Broker di Home Assistant
- Home Assistant → Settings → Devices & Services
- Add Integration → cari MQTT
- Isi broker dari Mosquitto pribadi (#16):
- Broker:
192.168.1.50(ganti IP broker kamu) - Port:
1883 - Username / Password: misalnya
kindo_esp32/KindoMQTT2026!
- Broker:
- Klik Submit — status harus Connected
Jika HA dan Mosquitto di mesin yang sama (Raspberry Pi), broker bisa 127.0.0.1 atau core-mosquitto (add-on HA OS).
Konfigurasi Sensor DHT22 (MQTT)
Tambahkan ke configuration.yaml (via Settings → Add-ons → File editor atau SSH):
mqtt:
sensor:
- name: "ESP32 Suhu DHT22"
unique_id: kindo_esp32_dht22_suhu
state_topic: "kodingindonesia/esp32/dht22/data"
value_template: "{{ value_json.suhu }}"
unit_of_measurement: "°C"
device_class: temperature
- name: "ESP32 Kelembaban DHT22"
unique_id: kindo_esp32_dht22_rh
state_topic: "kodingindonesia/esp32/dht22/data"
value_template: "{{ value_json.kelembaban }}"
unit_of_measurement: "%"
device_class: humidity
Restart Home Assistant → Developer Tools → States — cari sensor.esp32_suhu_dht22.
Konfigurasi Switch Relay (MQTT)
mqtt:
switch:
- name: "Lampu ESP32 Relay"
unique_id: kindo_esp32_lampu_relay
command_topic: "kodingindonesia/esp32/lampu/kontrol"
state_topic: "kodingindonesia/esp32/lampu/kontrol"
payload_on: "ON"
payload_off: "OFF"
optimistic: true
Switch ini memakai topic yang sama dengan artikel relay #8 — ESP32 subscribe dan mengubah GPIO relay saat HA mengirim ON/OFF.
Catatan
optimistic: true: Sketch #9 hanya subscribe topic kontrol — tidak mem-publish balik status relay. Tanpa itu, HA denganoptimistic: false+state_topicakan tampak “macet”. Untuk produksi, tambahkanmqttClient.publish(topicKontrol, "ON")dicallbackMQTT()setelah relay berubah, lalu setoptimistic: false.
Penjelasan Entity di Home Assistant
sensor.esp32_suhu_dht22— dibuat darinamedi YAML (spasi → underscore, huruf kecil)switch.lampu_esp32_relay— toggle di dashboard mengirimON/OFFke broker- Developer Tools → MQTT Listen — debug payload mentah tanpa mosquitto_sub di terminal
- History graph — klik sensor → Add to dashboard → tren suhu 24 jam (butuh Recorder aktif — default on)
Dashboard & Automasi Sederhana
- Dashboard: Overview → Edit → Add card → Entities → pilih sensor suhu, kelembaban, dan switch lampu
- Automasi contoh (YAML): Settings → Automations → menu ⋮ → Edit in YAML:
alias: Matikan lampu jika suhu tinggi trigger: - platform: numeric_state entity_id: sensor.esp32_suhu_dht22 above: 30 for: minutes: 5 action: - service: switch.turn_off target: entity_id: switch.lampu_esp32_relay - Notifikasi (opsional): Kirim alert ke HP saat suhu tinggi — butuh integrasi mobile app HA
Pro tip: Gunakan unique_id di setiap entitas MQTT agar nama entity stabil setelah restart — hindari duplikat entitas di HA.
Uji Coba (Step-by-Step)
- Pastikan Mosquitto (#16) jalan —
sudo systemctl status mosquitto - Upload sketch DHT22 + relay (#9) — arahkan broker ke IP Mosquitto pribadi (bukan
test.mosquitto.org) - Verifikasi publish dari laptop:
mosquitto_sub -h 192.168.1.50 -p 1883 \ -u kindo_esp32 -P 'KindoMQTT2026!' \ -t "kodingindonesia/esp32/dht22/data" -v - Setup MQTT integration +
configuration.yamldi HA → restart - Buka dashboard — suhu/kelembaban harus update setiap ~10 detik
- Toggle switch lampu di HA → relay ESP32 klik ON/OFF
- Opsional — uji relay tanpa HA dulu:
mosquitto_pub -h 192.168.1.50 -p 1883 \ -u kindo_esp32 -P 'KindoMQTT2026!' \ -t "kodingindonesia/esp32/lampu/kontrol" -m "ON"
Gabung dengan Stack Seri 2
- Sensor BME280 (#13) — tambah entitas MQTT dari topic
kodingindonesia/esp32/bme280/data - Node WiFiManager + NVS (#12) — ESP32 lapangan tanpa hardcode broker
- Maintenance OTA (#15) — patch firmware tanpa buka casing setelah integrasi HA
Tips & Troubleshooting
- HA tidak connect ke broker: Cek firewall port 1883, IP broker, username/password — sama seperti troubleshooting #16
- Sensor unavailable: Pastikan ESP32 publish JSON valid; cek
value_templatecocok dengan keysuhu/kelembaban - Switch tidak merespons: ESP32 harus subscribe topic kontrol — lihat #8; cek
mqttClient.loop()diloop() - Entity duplikat setelah edit YAML: Hapus entitas lama di Settings → Devices → MQTT → hapus device orphan
- HA di Docker Windows:
network_mode: hosttidak tersedia — map port8123:8123dan gunakan IP LAN PC sebagai broker address dari ESP32 - Payload bukan JSON: Jika masih pakai topic lama
kodingindonesia/esp32/dht22(teks), upgrade ke sketch #9 - WiFi 2.4 GHz: ESP32 tidak support jaringan 5 GHz saja
Keamanan & Produksi
- Jangan expose Mosquitto port 1883 ke internet tanpa TLS (#17) — password MQTT terkirim plain di LAN saja masih risiko jika WiFi tamu terbuka
- Gunakan user MQTT terpisah untuk HA (read/write) vs ESP32 (publish terbatas) — ACL Mosquitto seperti di #16
- Jangan commit password HA atau MQTT ke repo publik
- Backup folder
/configHome Assistant secara berkala
Langkah Selanjutnya (Seri 2)
- ESPHome (#22) — flash ESP32 tanpa coding Arduino (YAML)
- Node-RED (#23) — dashboard & otomasi visual
- PIR + lampu MQTT (#24) — automasi gerak dengan debounce
- Artikel #17: MQTT TLS — amankan broker di internet
- Capstone greenhouse (#39) — sensor + HA + pompa relay
Dengan Home Assistant, proyek ESP32-mu naik kelas dari sketch tunggal menjadi ekosistem smart home terpusat. Lanjutkan di halaman artikel Koding Indonesia.