ESP Home เครื่องมือทำ Smart Home สำหรับคนไม่ชอบเขียน Code

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

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *