การเชื่อมต่อ ESPHome กับ Home Assistant ด้วย ESP32 และ Raspberry Pi 4 สามารถทำได้โดยการใช้โปรแกรม ESPHome เพื่อเขียนโค้ดให้กับ ESP32 และให้มันสื่อสารกับ Home Assistant บน Raspberry Pi 4 ผ่านการตั้งค่าผ่าน Home Assistant
การติดตั้ง ESPHome ใน Home Assistant

โดยขั้นตอนแรกเราต้องทำการ Download Add-on ⇒ ADD-ON STORE

จากภาพเป็นการ install เรียบร้อยให้ทำการกด install ภายในโปรแกรม

เมื่อติดตั้งเสร็จให้ทำการ start

ให้ทำการเช็คที่ log เมื่อขึ้น
Successfully send discovery information to Home Assistant
แสดงว่าเสร็จเรียบร้อยจากนั้นไปที่ Info > OPEN WEB UI
การเชื่อมต่อ ESP32 กับ Raspberry Pi 4 และตั้งค่า ESPHome

โดยต้องมีบอร์ด Esp32 โดยมีวิธีใช้งานอย่างระเอียดจาก https://esphome.io/components/esp32
อุปกรณ์ที่ใช้จะมีดังนี้

Raspberry Pi 4

Esp32

LCD 16×2

DHT

ให้ทำการเชี่อมต่อ Circuit Diagram ดังนี้

ทำการกดปุ่ม New Device

กด continue

ตั้งชื่อ กด Next

กดที่ ESP32 จะขึ้น Congratulation

กดที่ Edit

ทำการเขียน Code ในขั้นถัดไป
การเขียน Code ให้แก่ ESP32 กับ Home Assistant
# ตั้งชื่อของอุปกรณ์เป็น "esp" และกำหนด friendly_name เป็น "esp"
name: esp
friendly_name: esp
# ระบุว่าเราใช้ ESP32 โดยกำหนดเป็นบอร์ด "esp32dev" และเลือก framework ของ Arduino
esp32:
board: esp32dev
framework:
type: arduino
# เปิดใช้งานการบันทึก log
logger:
# เปิดใช้งาน Home Assistant API พร้อมกำหนดคีย์สำหรับการเข้ารหัส
api:
encryption:
key: "````````````````````````````````````"
# เปิดใช้งานการอัปเดตโปรแกรมผ่านอินเทอร์เน็ต (OTA) และกำหนดรหัสผ่าน
ota:
password: "````````````````````````````````````"
# กำหนดการเชื่อมต่อ WiFi โดยใช้ SSID และรหัสผ่านจากไฟล์รหัสลับ
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# เปิดใช้งาน fallback hotspot (captive portal) ในกรณีที่การเชื่อมต่อ WiFi ล้มเหลว
ap:
ssid: "Esp Fallback Hotspot"
password: "~~~~~~~~~~~~~"
# เปิดใช้งาน captive portal เพื่อให้ผู้ใช้เข้าถึงการตั้งค่าแบบกระจาย (หากต้องการ)
captive_portal:
# กำหนดเซ็นเซอร์ DHT22 เพื่อวัดอุณหภูมิและความชื้น
sensor:
- platform: dht
model: AM2302
pin: GPIO17
temperature:
name: "Test Temperature"
id: temp
humidity:
name: "Living Room Humidity"
id: humid
update_interval: 60s
# กำหนดการเชื่อมต่อ I2C สำหรับการใช้งานแสดงผล
i2c:
sda: GPIO14
scl: GPIO25
# กำหนดการแสดงผล LCD ขนาด 16x2 ผ่าน I2C
display:
- platform: lcd_pcf8574
dimensions: 16x2
address: 0x27
lambda: |-
it.printf("Temp:%.2f", id(temp).state);
it.printf(0 , 1, "Humid:%.2f", id(humid).state);
เขียน code ที่เป็น YAML ได้ดังนี้

ผลลัพท์จะได้ที่เป็นของ dht

ผลลัพท์จะได้ที่เป็นของ LCD
การเขียน Code ให้แก่ ESP32 กับ Home Assistant

ไปที่ Setting > Add INTEGRATION > ESPHome > ทำการ set Config ต่างๆ

เมื่อทำการติดตั้งเสร็จจะได้ กดที่ 1 devices

กดที่ ADD TO DASHBOARD
ผลลัพท์บน Dashbroad และ Board Embedded

