Pendahuluan
Di artikel #21 kamu menghubungkan ESP32 ke Home Assistant lewat MQTT manual: edit configuration.yaml, definisikan sensor value_template, dan atur switch relay sendiri. Itu fleksibel — tapi banyak boilerplate.
Artikel ini melanjutkan Jalur C (smart home): setelah integrasi MQTT manual (#21), kamu bisa mempercepat deploy node ESP32 dengan ESPHome — tanpa menulis setup() / loop() di Arduino IDE.
Prasyarat: Home Assistant sudah jalan (artikel #21). Paham wiring DHT22 (#5) dan relay (#8) — pin yang sama dipakai di sini. Familiar dengan proyek gabungan DHT22 + relay (#9) membantu membandingkan pendekatan.
Yang Kamu Butuhkan
- Home Assistant dengan add-on ESPHome (Supervisor / HA OS) atau ESPHome Dashboard di PC
- ESP32 DevKit + kabel USB (flash pertama)
- Sensor DHT22 + modul relay 1 channel — wiring sama artikel #9
- PC dan ESP32 di WiFi 2.4 GHz yang sama dengan Home Assistant
Estimasi biaya: ESPHome & add-on HA gratis — hardware sama proyek #9 (ESP32 ~35rb + DHT22 ~25rb + relay ~15rb).
Arduino Sketch vs ESPHome
| Aspek | Sketch Arduino (#9) | ESPHome (artikel ini) |
|---|---|---|
| Bahasa | C++ (.ino) | YAML deklaratif |
| Integrasi HA | MQTT manual di configuration.yaml (#21) | Native API — entitas otomatis |
| OTA | ArduinoOTA / custom OTA (#15) | OTA bawaan ESPHome |
| Broker eksternal | Wajib Mosquitto (#16) | Opsional — bisa tetap pakai Mosquitto (#16) |
| Kapan pakai | Logika custom, protokol non-HA | Node sensor/aktuator cepat di smart home |
Arsitektur: ESPHome + Home Assistant
| Komponen | Peran | Koneksi |
|---|---|---|
| ESP32 (firmware ESPHome) | Baca DHT22, kontrol relay GPIO | WiFi/LAN → Home Assistant |
| ESPHome add-on | Compile YAML → flash / OTA | Di dalam HA atau PC lokal |
| Home Assistant | Dashboard, automasi, native API | Terima entitas tanpa edit MQTT manual |
| Mosquitto (opsional) | Broker untuk node Arduino lain | #16 — lihat bagian opsional di bawah |
Alur data secara singkat:
[ YAML ESPHome ] → compile → firmware ESP32
|
| WiFi · Native API (enkripsi) · OTA
v
[ Home Assistant ] (#21)
|
+-- sensor.kindo_esp32_node_suhu_ruangan (DHT22)
+-- sensor.kindo_esp32_node_kelembaban_ruangan
+-- switch.kindo_esp32_node_lampu_relay
+-- automasi: suhu > 30°C → matikan lampu
Wiring Hardware
Ikuti diagram di artikel #9 — pin konsisten di seluruh seri:
- DHT22 DATA → GPIO 4 (+ pull-up 10kΩ ke 3.3V)
- Relay IN → GPIO 26 · modul umum active LOW (#8)
Langkah 1 — Pasang Add-on ESPHome
- Buka Home Assistant → Settings → Add-ons → Add-on Store
- Cari ESPHome → Install → Start → centang Show in sidebar
- Klik ESPHome di sidebar → + New Device
- Beri nama misalnya
kindo-esp32-node→ pilih ESP32 → Skip (kita edit YAML manual)
HA di Docker (Windows/Mac): Flash USB pertama kali butuh ESPHome Dashboard di PC, atau passthrough USB ke VM. Setelah OTA aktif, update berikutnya tanpa kabel.
Langkah 2 — File secrets.yaml
Jangan hardcode password WiFi di YAML utama. Buat secrets.yaml di folder device ESPHome:
wifi_ssid: "Nama_WiFi_Rumah"
wifi_password: "password_wifi_anda"
api_encryption_key: "ganti_dengan_string_acak_panjang"
ota_password: "password_ota_anda"
ap_password: "password_ap_fallback_anda"
# Opsional — hanya jika pakai blok mqtt: ke Mosquitto (#16)
mqtt_password: "password_mqtt_anda"
Generate api_encryption_key dari menu ESPHome → perangkat → API encryption key.
Langkah 3 — Konfigurasi YAML Lengkap
Ganti isi kindo-esp32-node.yaml (nama file mengikuti esphome.name):
esphome:
name: kindo-esp32-node
friendly_name: Kindo ESP32 Node
esp32:
board: esp32dev
framework:
type: arduino
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
ap:
ssid: "Kindo-ESP32-Fallback"
password: !secret ap_password
captive_portal:
logger:
api:
encryption:
key: !secret api_encryption_key
ota:
- platform: esphome
password: !secret ota_password
sensor:
- platform: dht
pin: GPIO4
model: DHT22
temperature:
name: "Suhu Ruangan"
id: suhu_ruangan
device_class: temperature
unit_of_measurement: "°C"
humidity:
name: "Kelembaban Ruangan"
id: kelembaban_ruangan
device_class: humidity
unit_of_measurement: "%"
update_interval: 10s
switch:
- platform: gpio
pin: GPIO26
name: "Lampu Relay"
id: lampu_relay
inverted: true
Penjelasan singkat:
dht+GPIO4— sama dengan sketch DHT22 (#5)inverted: true— relay active LOW seperti di #8api+ota— koneksi aman ke HA dan update firmware nanti tanpa USBcaptive_portal— hotspot fallback jika WiFi gagal (mirip konsep WiFiManager #12); password AP disecrets.yaml→ap_password
Langkah 4 — Flash Pertama (USB)
- Sambungkan ESP32 ke PC via USB
- Di ESPHome Dashboard → perangkat → Install → Plug into this computer
- Pilih port COM yang muncul → tunggu compile & upload (3–8 menit pertama kali)
- Setelah sukses, ESP32 connect WiFi → status Online di dashboard ESPHome
Langkah 5 — Integrasi ke Home Assistant
- Notifikasi Discovered muncul di HA → klik Configure
- Masukkan API encryption key dari
secrets.yaml - Buka Settings → Devices & Services → ESPHome — tiga entitas baru: suhu, kelembaban, switch lampu
- Tambahkan ke dashboard — tidak perlu edit
configuration.yamlseperti di #21
Dashboard di Home Assistant
- Buka Overview → Edit dashboard (ikon pensil)
- Add card → Entities → pilih sensor suhu, kelembaban, dan switch lampu
- Simpan — nilai suhu harus update tiap ~10 detik
- Opsional: klik sensor → Add to dashboard sebagai History graph (tren 24 jam)
Penjelasan Entity ID
ESPHome membuat entity ID dari friendly_name + name per komponen. Contoh setelah integrasi:
sensor.kindo_esp32_node_suhu_ruangan— suhu DHT22sensor.kindo_esp32_node_kelembaban_ruangan— kelembabanswitch.kindo_esp32_node_lampu_relay— kontrol relay
Cek nama pasti di Settings → Devices & Services → ESPHome → klik device → lihat entitas, atau Developer Tools → States (cari kindo_esp32).
Pro tip: Beri
friendly_nameyang jelas di YAML agar entitas mudah dicari di automasi HA.
Automasi Sederhana di Home Assistant
Contoh rule: matikan lampu jika suhu > 30°C (sama konsep automasi #21). Ganti entity_id sesuai device kamu:
alias: Matikan lampu jika panas
trigger:
- platform: numeric_state
entity_id: sensor.kindo_esp32_node_suhu_ruangan
above: 30
for:
minutes: 5
action:
- service: switch.turn_off
target:
entity_id: switch.kindo_esp32_node_lampu_relay
Tempel via Settings → Automations → Create → Edit in YAML. Nama entity bisa sedikit berbeda — selalu verifikasi di Developer Tools → States sebelum simpan.
OTA — Update Tanpa Kabel USB
Setelah flash pertama, edit YAML lalu klik Install → Wirelessly di ESPHome Dashboard. Ini menggantikan kebutuhan ArduinoOTA custom (#15) untuk node ESPHome — meski sketch Arduino manual tetap relevan untuk proyek non-HA.
Opsional — Publish ke Mosquitto (#16)
Jika kamu punya node Arduino lama (#9) dan ingin ESPHome ikut ekosistem topic Seri 1, tambahkan blok mqtt::
mqtt:
broker: 192.168.1.50
username: kindo_esp32
password: !secret mqtt_password
discovery: false
topic_prefix: kodingindonesia/esp32/esphome
Dengan discovery: false, HA tetap pakai Native API; Mosquitto menerima telemetri paralel. Untuk topic persis kodingindonesia/esp32/dht22/data, gunakan on_... template lanjutan — atau biarkan node Arduino dan ESPHome hidup berdampingan.
Broker publik: Jangan pakai
test.mosquitto.orguntuk produksi — sama seperti peringatan di #16 dan #21.
Gabung dengan Stack Seri 2
- Sensor BME280 (#13) — tambah blok
bme280di YAML ESPHome (bus I2C sama) - Konfigurasi lapangan WiFiManager + NVS (#12) — untuk sketch Arduino; ESPHome pakai
captive_portal+!secret - Node Arduino lama tetap jalan via Mosquitto (#16) — ESPHome bisa hidup berdampingan (bagian MQTT opsional di atas)
Uji Coba (Checklist)
- Flash YAML → status ESPHome Online
- Entitas suhu & kelembaban update tiap ~10 detik di HA
- Toggle Lampu Relay → LED/modul relay klik ON/OFF
- Putus WiFi router → ESP32 buka AP fallback
Kindo-ESP32-Fallback(opsional uji) - Edit YAML (misalnya ubah
update_interval) → OTA wireless → verifikasi perubahan
Tips & Troubleshooting
- Compile error GPIO: Hindari GPIO 6–11 (flash internal). GPIO 4 & 26 aman — sama #8
- DHT22 NaN: Cek pull-up 10kΩ, kabel pendek, dan
model: DHT22(bukan AM2302 salah pin) - Relay terbalik ON/OFF: Toggle
inverted: true/falsedi YAML switch - HA tidak discover device: Pastikan ESP32 dan HA satu subnet; restart add-on ESPHome
- Flash USB gagal: Tahan tombol BOOT saat upload; ganti kabel data (bukan charge-only)
- Entity unavailable setelah reboot: Cek WiFi 2.4 GHz — ESP32 tidak support 5 GHz saja
- MQTT + Native API bentrok: Pakai
discovery: falsepada blokmqtt:
Keamanan & Produksi
- Simpan
secrets.yamldanapi_encryption_key— jangan commit ke repo publik - Ganti
ota_passworddefault; OTA tanpa password = risiko di jaringan tamu - Backup folder konfigurasi ESPHome bersama backup
/configHome Assistant - Untuk akses dari internet, amankan HA dengan reverse proxy + TLS — bukan expose port OTA langsung
Langkah Selanjutnya (Seri 2)
- Node-RED (#23) — dashboard & otomasi visual via MQTT
- Sensor PIR + lampu MQTT (#24) — automasi gerak dengan debounce
- Artikel #17: MQTT TLS — amankan broker Mosquitto di internet
- Kembali ke pendekatan manual: Home Assistant + MQTT (#21) untuk node non-ESPHome
- Capstone greenhouse (#39) — gabung sensor, relay, dan dashboard
ESPHome mempercepat Jalur C smart home: dari YAML ke dashboard dalam hitungan menit. Lanjutkan di halaman artikel Koding Indonesia.