ESPHome biến ESP32 thành thiết bị nhà thông minh chỉ bằng file cấu hình YAML, tích hợp thẳng vào Home Assistant, hỗ trợ cập nhật firmware qua WiFi (OTA).
An toàn: thử nghiệm với tải điện áp thấp (đèn LED 12V, quạt 5V) trước. Nếu đóng cắt 220V, dùng module relay cách ly quang, hộp kín, đấu dây khi đã ngắt nguồn, hoặc thuê thợ điện.
Linh kiện
- ESP32 DevKit
- Module relay 1 kênh (loại 3.3V-compatible hoặc có opto cách ly; nhiều module 5V vẫn chạy với tín hiệu 3.3V nhưng nên kiểm tra)
- Nút nhấn, nguồn 5V
Sơ đồ
| Thiết bị | ESP32 |
|---|---|
| Relay IN | GPIO26 |
| Relay VCC / GND | 5V (VIN) / GND |
| Nút nhấn (1 chân) | GPIO27, chân còn lại nối GND |
Cấu hình ESPHome
esphome:
name: den-phong-khach
esp32:
board: esp32dev
framework:
type: esp-idf
logger:
api:
encryption:
key: !secret api_key
ota:
- platform: esphome
password: !secret ota_password
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
ap: # tự phát WiFi dự phòng nếu mất mạng
ssid: "Den-Phong-Khach"
password: !secret ap_password
captive_portal:
switch:
- platform: gpio
id: relay1
name: "Đèn phòng khách"
pin: GPIO26
restore_mode: RESTORE_DEFAULT_OFF
binary_sensor:
- platform: gpio
pin:
number: GPIO27
mode: INPUT_PULLUP
inverted: true
name: "Nút đèn"
filters:
- delayed_on: 50ms # chống rung phím
on_press:
- switch.toggle: relay1
Các bước thực hiện
- Cài ESPHome (add-on trong Home Assistant, hoặc
pip install esphome). - Tạo file
secrets.yamlchứawifi_ssid,wifi_password,api_key,ota_password,ap_password. Tạo api_key bằng lệnhesphometrong dashboard hoặc chuỗi base64 32 byte ngẫu nhiên. - Nạp lần đầu qua cáp USB:
esphome run den-phong-khach.yaml. - Các lần sau, cập nhật qua WiFi (OTA). Home Assistant sẽ tự phát hiện thiết bị.
Lưu ý
- Tránh dùng các chân strapping (0, 2, 5, 12, 15) cho relay, vì trạng thái lúc khởi động có thể làm relay nhảy. Xem bài GPIO cần tránh.
- Một số module relay kích mức thấp (LOW = bật); nếu bị ngược, thêm
inverted: truevào pin của switch. - Đặt
restore_modephù hợp: mất điện rồi có lại, đèn nên tắt hay giữ trạng thái cũ?