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?

AspekWeb server ESP32 (#6)Home Assistant
FokusHalaman monitoring satu boardHub banyak perangkat & protokol
UIHTML custom di ESP32Dashboard, mobile app, automasi visual
ESP32Server + sensor sekaligusESP32 tetap node MQTT; HA sebagai subscriber/publisher
AutomasiHarus coding di firmwareRule di HA (suhu > 30°C → matikan lampu)

Arsitektur: ESP32 → Mosquitto → Home Assistant

KomponenPeranKoneksi
ESP32 (DHT22 + relay)Publisher sensor & subscriber relayWiFi/LAN → broker MQTT
Mosquitto (#16)Broker pusatPort 1883 + username/password
Home AssistantDashboard & automasi smart homeSubscribe/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 — payload ON / 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

  1. Home Assistant → Settings → Devices & Services
  2. Add Integration → cari MQTT
  3. Isi broker dari Mosquitto pribadi (#16):
    • Broker: 192.168.1.50 (ganti IP broker kamu)
    • Port: 1883
    • Username / Password: misalnya kindo_esp32 / KindoMQTT2026!
  4. 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 dengan optimistic: false + state_topic akan tampak “macet”. Untuk produksi, tambahkan mqttClient.publish(topicKontrol, "ON") di callbackMQTT() setelah relay berubah, lalu set optimistic: false.

Penjelasan Entity di Home Assistant

  • sensor.esp32_suhu_dht22 — dibuat dari name di YAML (spasi → underscore, huruf kecil)
  • switch.lampu_esp32_relay — toggle di dashboard mengirim ON/OFF ke 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

  1. Dashboard: Overview → Edit → Add card → Entities → pilih sensor suhu, kelembaban, dan switch lampu
  2. 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
  3. 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)

  1. Pastikan Mosquitto (#16) jalan — sudo systemctl status mosquitto
  2. Upload sketch DHT22 + relay (#9) — arahkan broker ke IP Mosquitto pribadi (bukan test.mosquitto.org)
  3. Verifikasi publish dari laptop:
    mosquitto_sub -h 192.168.1.50 -p 1883 \
      -u kindo_esp32 -P 'KindoMQTT2026!' \
      -t "kodingindonesia/esp32/dht22/data" -v
  4. Setup MQTT integration + configuration.yaml di HA → restart
  5. Buka dashboard — suhu/kelembaban harus update setiap ~10 detik
  6. Toggle switch lampu di HA → relay ESP32 klik ON/OFF
  7. 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_template cocok dengan key suhu / kelembaban
  • Switch tidak merespons: ESP32 harus subscribe topic kontrol — lihat #8; cek mqttClient.loop() di loop()
  • Entity duplikat setelah edit YAML: Hapus entitas lama di Settings → Devices → MQTT → hapus device orphan
  • HA di Docker Windows: network_mode: host tidak tersedia — map port 8123:8123 dan 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 /config Home 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.