智能家居
ESPHome 从零打造 WiFi 温湿度传感器并接入 Home Assistant:固件编译、配网与自动化联动
2026年9月3日
用 ESP8266/ESP32 加 DHT22 自己写一份 ESPHome 固件,编译烧录并接入 HA 做温湿度看板与自动化联动。
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 实际显示为准。
六、避坑小结
- DHT22 读值偶尔返回 NaN,ESPHome 默认会丢弃异常值,不必恐慌;若频繁 NaN,检查上拉电阻和供电。
- 多个传感器部署时,name 和 friendly_name 必须唯一,否则 HA 里会冲突。
- OTA 密码和 api 密钥建议写进独立的 secrets.yaml,别把明文提交到公开仓库。
- 电池供电的设备记得加上 deep_sleep,否则一天就能耗光一节 18650。
小结
用 ESPHome 做温湿度传感器,本质上把「嵌入式开发」压缩成了「写一份 YAML」。硬件成本不到 30 元,换来的是数据自有、可联动、可扩展。把它铺到卧室、书房、机房,再配合 HA 的仪表盘,你就有了一套属于自己的环境感知网络。