ESP Home คือ เครื่องมือสำหรับสร้างเฟิร์มแวร์แบบกำหนดเอง (custom firmware) ที่ออกแบบมาเพื่อใช้งานกับบอร์ด ESP32, ESP8266 และ RP2040 โดยช่วยให้เราสามารถควบคุมอุปกรณ์ IoT ได้อย่างง่ายดายผ่านการเขียนแค่ไฟล์ YAML โดยไม่ต้องเขียนโค้ด C++ เหมือน Arduino
ESP Home ทำงานร่วมกับ Home Assistant ได้อย่างไร้รอยต่อ และสามารถอัปโหลดเฟิร์มแวร์ผ่าน Wi-Fi (OTA) ได้อย่างสะดวก
ทำไม ESPHome ถึงน่าสนใจ?
✅ ไม่ต้องเขียนโค้ด
แค่เขียนคำสั่งในรูปแบบ YAML ก็สามารถสร้างเฟิร์มแวร์ได้ โดยไม่ต้องยุ่งกับโค้ดภาษา C++
✅ รองรับเซนเซอร์หลากหลาย
เช่น DHT22, DS18B20, BH1750, BMP280, HX711 ฯลฯ
✅ OTA (Over-The-Air)
อัปโหลดโค้ดผ่าน Wi-Fi ไม่ต้องเสียบสายทุกครั้ง
✅ ทำงานร่วมกับ Home Assistant ได้ทันที
อุปกรณ์จะถูก auto-discover ใน Home Assistant เมื่อเปิดใช้งาน API
✅ ใช้งานได้ฟรี
ESPHome ใช้งานอย่างไร?
การใช้งาน ESPHome แบ่งออกเป็น 3 ขั้นตอนหลัก:
1 ติดตั้ง ESPHome ผ่าน Home Assistant Add-on

2 สร้างไฟล์ YAML ระบุการตั้งค่าฮาร์ดแวร์ เช่น Wi-Fi, sensor, switch, output
3 แฟลชลงบอร์ด ครั้งแรกอาจต้องใช้สาย USB ต่อกับคอมพิวเตอร์ หลังจากนั้นสามารถอัปโหลดผ่าน Wi-Fi ได้เลย (OTA)

YAML คืออะไร?
YAML (Yet Another Markup Language) เป็นรูปแบบไฟล์ที่ใช้สำหรับเขียนข้อมูลอย่างมีโครงสร้าง นิยมใช้กับระบบ automation อย่าง Home Assistant และ ESPHome
ใน ESPHome ไฟล์ YAML คือไฟล์ที่เราระบุว่าอุปกรณ์ของเราต่อกับเซนเซอร์อะไร ใช้ขาไหน มีการตั้งค่าอะไรบ้าง เป็นต้น
องค์ประกอบของไฟล์ YAML ใน ESPHome
# Basic configuration for an ESP32 device
esphome:
name: living-room-sensor
friendly_name: Living Room Sensor
# Hardware configuration
esp32:
board: esp32dev
framework:
type: esp-idf
# Enable Home Assistant API
api:
# Enable over-the-air updates
ota:
platform: esphome
# Connect to WiFi
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot if WiFi connection fails
ap:
# Enable web server
web_server:
# Add a temperature sensor
sensor:
- platform: dht
pin: GPIO15
temperature:
name: "Temperature"
humidity:
name: "Humidity"
update_interval: 60s
จาก YAML file ข้างต้น สามารถอธิบายองค์ประกอบต่างๆ ได้ดังนี้
#:
เป็นส่วน comment
esphome:
กำหนดชื่ออุปกรณ์ (name) และชื่อที่แสดงใน Home Assistant (friendly_name)
esp32:
ระบุชนิดของบอร์ดที่ใช้งาน (เช่น esp32dev) และเฟรมเวิร์กที่ใช้ในการคอมไพล์เฟิร์มแวร์ เช่น esp-idf
หรือ arduino
wifi:
ตั้งค่าการเชื่อมต่อ WiFi โดยระบุชื่อเครือข่าย (SSID) และรหัสผ่าน ซึ่งในตัวอย่างนี้ซ่อนค่าไว้ด้วย !secret
เพื่อความปลอดภัย และยังสามารถตั้งค่า fallback access point ได้ในกรณีที่เชื่อมต่อ WiFi ไม่สำเร็จ
api:
เปิดใช้งาน API เพื่อให้ Home Assistant เชื่อมต่อและควบคุมอุปกรณ์นี้ได้โดยตรง
ota:
เปิดการอัปเดตเฟิร์มแวร์แบบ Over-The-Air (OTA) เพื่อให้สามารถแฟลชเฟิร์มแวร์ใหม่ผ่าน WiFi ได้โดยไม่ต้องต่อสาย USB
web_server:
เปิดหน้าเว็บแบบเรียบง่ายบนอุปกรณ์ เพื่อให้ผู้ใช้สามารถเข้าดูสถานะหรือทดสอบการทำงานของอุปกรณ์ผ่าน browser ได้โดยตรง
sensor:
เพิ่มเซนเซอร์ เช่น DHT11 หรือ DHT22 โดยระบุขาที่เชื่อมต่อ (GPIO), ตั้งชื่อสำหรับแสดงผลค่าอุณหภูมิและความชื้น, และกำหนดช่วงเวลาในการอ่านค่าข้อมูล (update_interval)
โดย ส่วนนี้สามารถดูเพิ่มเติมได้ที่ ESPHome Docs สำหรับอุปกรณ์ต่างๆ ที่ ESP Home
Leave a Reply