Home Assistant 中文文档 下载 App

ESPHome——DIY 智能家居设备的利器

ESPHome 是什么

ESPHome 是 Home Assistant 官方出品的 ESP8266 / ESP32 固件框架——用纯 YAML 配置就能编译刷写固件,自己做智能家居设备。不需要 C++/Arduino 开发经验。

Home Assistant + ESPHome 的组合是智能家居 DIY 领域最流行的方案:

ESPHome 能做什么

DIY 项目用的 ESP传感器功能成本
空气质量监测仪ESP32-S3SCD40(CO₂)+ BME280(温湿度气压)+ PMS5003(PM2.5)本地显示 + Home Assistant 推送¥150~200
环境温湿度传感器ESP8266(NodeMCU)SHT30 / DHT22电池供电 + 定时上报¥20~30
智能插座/开关ESP8266 + 继电器可选电流互感器WiFi 开关 + 功率监控¥30
水表抄表器ESP8266 + 霍尔传感器霍尔模块统计水量¥20
垃圾桶满溢检测ESP8266 + 超声波HC-SR04远程查看垃圾桶状态¥20
桌面天气显示器ESP32 + 显示屏SSD1306 OLED本地显示 + Home Assistant 控制¥50
语音助手ESP32-S3 + 麦 + 喇叭INMP441 + MAX98357AHome Assistant Assist 硬件¥50
DIY 网关ESP32 + Zigbee 模块CC2650自组网 Zigbee 子节点¥40

安装 ESPHome

Home Assistant OS

Settings → Apps → 搜索 ESPHome → Install

启动后点击 OPEN WEB UI 进入 ESPHome 编辑器(URL http://homeassistant.local:6052)。

独立运行

如果你不想在 Home Assistant 里跑 ESPHome,也可以单独用 Docker:

docker run -d \
  --name esphome \
  -p 6052:6052 \
  -v /opt/esphome:/config \
  -e TZ=Asia/Shanghai \
  --restart=unless-stopped \
  ghcr.io/esphome/esphome:stable

第一个 ESPHome 设备:温湿度传感器

硬件

组件型号连接方式
ESPESP32-S3 DevKitC-1USB
温湿度传感器BME280I2C

YAML 配置

在 ESPHome Web UI 里点 NEW DEVICE → 选 Skip this step(手动配置):

esphome:
  name: sensor-living-room
  friendly_name: 客厅环境

esp32:
  board: esp32-s3-devkitc-1
  framework:
    type: arduino

# 连接 Home Assistant
api:
  encryption:
    key: "your-encryption-key-here"

ota:
  - platform: esphome

# WiFi
wifi:
  ssid: "your-wifi-ssid"
  password: "your-wifi-password"
  fast_connect: true

# BME280 温湿度
i2c:
  sda: GPIO8
  scl: GPIO9
  scan: true

sensor:
  - platform: bme280
    temperature:
      name: 客厅温度
      id: temp
      filters:
        - sliding_window_moving_average:
            window_size: 10
            send_every: 10
    pressure:
      name: 客厅气压
      id: press
    humidity:
      name: 客厅湿度
      id: humi
    address: 0x76
    update_interval: 30s

  - platform: wifi_signal
    name: "WiFi 信号强度"
    update_interval: 60s

  - platform: uptime
    name: "运行时间"

# 日志
logger:

# 允许 Home Assistant 通过 API 直接配置
captive_portal:

编译刷写

  1. ESPHome Web UI → 选中上面的 YAML → INSTALL → Plug into this computer
  2. 浏览器弹串口选择 → 选你的 ESP → Connect → Install
  3. 编译 + 上传 → 约 1~2 分钟完成

刷好后 ESP 自动重启 → 连上 WiFi → Home Assistant 自动发现 → 自动创建三个实体(温度/湿度/气压)。

进阶功能

显示 OLED 屏幕

display:
  - platform: ssd1306_i2c
    model: "SSD1306 128x64"
    address: 0x3C
    lambda: |-
      it.print(0, 0, "客厅环境");
      it.printf(0, 20, "温度: %.1f°C", id(temp).state);
      it.printf(0, 40, "湿度: %.0f%%", id(humi).state);

定时深睡眠(电池传感器)

deep_sleep:
  run_duration: 10s
  sleep_duration: 5min
  wakeup_pin:
    number: GPIO0
    mode: INPUT_PULLUP

本地 HTTP API

web_server:
  port: 80

刷好后 ESP 自带一个 Web 页面:http://sensor-living-room.local

自定义按钮/开关/电机控制

switch:
  - platform: gpio
    name: 除湿机
    pin: GPIO4

binary_sensor:
  - platform: gpio
    name: 门开关
    pin:
      number: GPIO5
      mode: INPUT_PULLUP

和 Home Assistant 的集成

ESPHome 设备刷好固件后:

  1. Home Assistant 通过 ESPHome API(局域网加密通信)自动发现
  2. Settings → Devices & services → 自动弹出新设备提示
  3. 点 Configure → 完成
  4. ESPHome 定义的所有实体自动出现在 Home Assistant 里
  5. OTA 更新:ESPHome 升级固件时,ESP 直接通过 WiFi 接收,不需要重新插 USB

安全提示

# secrets.yaml
wifi_password: your-secret-password

# device.yaml
wifi:
  password: !secret wifi_password