การเชื่อมต่อ 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