孙亮亮
返回 智能家居

智能家居

ESPHome 从零打造 WiFi 温湿度传感器并接入 Home Assistant:固件编译、配网与自动化联动

2026年9月3日

用 ESP8266/ESP32 加 DHT22 自己写一份 ESPHome 固件,编译烧录并接入 HA 做温湿度看板与自动化联动。

ESPHomeHome Assistant温湿度传感器智能家居

ESPHome 从零打造 WiFi 温湿度传感器并接入 Home Assistant

摘要

买一个现成的温湿度计当然省事,但如果你想把数据真正掌握在自己手里、还能和空调、加湿器联动,自己用 ESP8266/ESP32 加一个 DHT22 做一个 Wi-Fi 传感器是最划算的路线。本文基于 ESPHome 固件框架,从硬件选型、配置文件编写、固件编译烧录,到 Home Assistant 自动发现与自动化联动,给出一套可复用的实操步骤,并标注几个新手最容易踩的坑。

一、为什么选 ESPHome 而不是直接写 Arduino

ESPHome 本质上是「配置即固件」:你写一份 YAML,它帮你生成并编译固件,OTA 升级、Wi-Fi 重连、HA 发现全部自动处理。相比手写 Arduino,它省掉了联网、JSON 上报、断线重连等大量样板代码。对于只想让一个传感器稳定上报数据的场景,ESPHome 几乎是零代码维护成本。

不过它也有边界:如果你的逻辑特别复杂,比如要做本地边缘计算、跑神经网络,那还是得上 ESP-IDF 或 Arduino。温湿度上报这种活儿,ESPHome 完全够用。

二、硬件清单与接线

  • 开发板:ESP-12F(ESP8266)或 ESP32-C3 开发板,价格 10 到 20 元。ESP32 自带蓝牙,后续可扩展 BLE 温湿度计中转。
  • 传感器:DHT22(AM2302),测量范围 -40 到 80℃、湿度 0 到 100%RH,精度优于 DHT11。
  • 辅助:4.7kΩ 上拉电阻(DHT22 的数据线需要)、micro-USB 线、杜邦线若干。

接线以 ESP8266 的 GPIO4 为例:

  • DHT22 VCC 接开发板 3.3V(注意不是 5V,供电务必稳定)
  • DHT22 GND 接 GND
  • DHT22 DATA 接 GPIO4,同时 DATA 与 VCC 之间接 4.7kΩ 上拉

一个常见失误是拿 5V 给传感器供电后数据线直接进 3.3V 的 ESP,导致读数乱跳。务必确认你买的模块是否已经板载稳压;如果不确定,统一 3.3V 供电最稳妥。

三、编写 ESPHome 配置

新建 sensor-dht.yaml:

esphome:
  name: living-room-sensor
  friendly_name: 客厅温湿度

esp8266:
  board: esp12e

wifi:
  ssid: "你的WiFi名"
  password: "你的WiFi密码"
  ap:
    ssid: "living-room-sensor"
    password: "临时配网密码"

api:
  encryption:
    key: "生成的一段base64密钥"

ota:
  password: "你的ota密码"

logger:

sensor:
  - platform: dht
    pin: GPIO4
    model: DHT22
    temperature:
      name: "客厅温度"
    humidity:
      name: "客厅湿度"
    update_interval: 30s

注意:ESPHome 较新版本里 api 与 ota 配置项有细微调整,旧教程里的某些写法可能被弃用。写完后用 esphome config sensor-dht.yaml 先做配置校验,能提前拦掉大部分语法错误。

四、编译与烧录

本地有 Python 环境的话,直接 pip install esphome 后执行:

esphome compile sensor-dht.yaml
esphome upload sensor-dht.yaml   # 首次用 USB 线烧录

烧录完成后,设备自动连 Wi-Fi 并广播自己。若 Wi-Fi 密码写错,它会起一个 living-room-sensor 的临时热点,手机连上去即可重新配网,这就是上面 ap 段的意义。

五、在 Home Assistant 中查看与联动

HA 安装 ESPHome 集成后,同一局域网内会自动弹出「发现新设备」,输入 encryption key 即可接入。温度和湿度会出现在实体列表里。

接下来做一个实用自动化:当湿度低于 35% 且时间在白天,通知手机「空气太干,建议开加湿器」;当温度高于 28℃ 自动打开智能插座上的风扇。YAML 示例:

automation:
  - alias: 湿度过低提醒
    trigger:
      - platform: numeric_state
        entity_id: sensor.ke_ting_shi_du
        below: 35
    action:
      - service: notify.mobile_app
        data:
          message: "客厅湿度偏低,注意加湿"

实体 id 因设备名不同而变,以 HA 实际显示为准。

六、避坑小结

  1. DHT22 读值偶尔返回 NaN,ESPHome 默认会丢弃异常值,不必恐慌;若频繁 NaN,检查上拉电阻和供电。
  2. 多个传感器部署时,name 和 friendly_name 必须唯一,否则 HA 里会冲突。
  3. OTA 密码和 api 密钥建议写进独立的 secrets.yaml,别把明文提交到公开仓库。
  4. 电池供电的设备记得加上 deep_sleep,否则一天就能耗光一节 18650。

小结

用 ESPHome 做温湿度传感器,本质上把「嵌入式开发」压缩成了「写一份 YAML」。硬件成本不到 30 元,换来的是数据自有、可联动、可扩展。把它铺到卧室、书房、机房,再配合 HA 的仪表盘,你就有了一套属于自己的环境感知网络。

本模块其他文章

ESPHome 从零打造 WiFi 温湿度传感器并接入 Home Assistant:固件编译、配网与自动化联动 · 孙亮亮