ESPHome 完整指南:4 步让 ESP8266 说出温湿度数据
【免费下载链接】esphomeESPHome is a system to control your ESP32, ESP8266, BK72xx, RP2040 by simple yet powerful configuration files and control them remotely through Home Automation systems.项目地址: https://gitcode.com/GitHub_Trending/es/esphome
抽屉里那块吃灰的 NodeMCU,加上不到 50 行的 YAML,几分钟之后它的温湿度读数就会出现在你的 Home Assistant 面板里——全程不写一行 C++。这套东西叫 ESPHome:一个用配置文件控制 ESP8266 / ESP32 / BK72xx / RP2040 的系统,负责编译、烧录、OTA 升级,并天然对接家庭自动化平台。对新手来说它省掉的是三件事:驱动适配、工具链配置、C++ 工程骨架,你只需要声明"哪块板子、哪根引脚、什么行为"。
把 ESPHome 装好
最短的安装路径就两条命令:
git clone https://gitcode.com/GitHub_Trending/es/esphome cd esphome && ./script/setupscript/setup会创建 Python 虚拟环境并装齐依赖,包括编译用的 PlatformIO 工具链。做完这步,激活环境并验证:
source venv/bin/activate esphome version成功标志:终端打印出一行版本号,说明 CLI 已经可用。
生成第一份配置文件
与其手写 YAML,不如先跑交互式向导,它会把骨架替你填好:
esphome wizard my_esp8266.yaml向导依次问你:设备名 → 平台(选 esp8266)→ 板子型号 → WiFi SSID 和密码 → 加密口令。结束后你会得到一份能直接编译的配置。把各模块的职责捋一遍,改配置时就知道手该往哪伸:
esphome:设备命名,决定固件文件名和主机名esp8266:声明芯片平台和board型号,选错型号后面的引脚和分区都会对不上wifi:核心网络配置,ssid/password必须换成你自己家的,连不上时自动开的 fallback 热点也在这里控制api:与 Home Assistant 通信的接口,带一个访问密码ota:空中升级通道,密码要和 api 的区分开,两处占位密码都要替换,这是新手最常见的疏漏
成功标志:文件保存后在编辑器里没有语法报错,且能进入下一步的编译。
烧录固件并确认设备活着
esphome run my_esp8266.yaml一条命令 = 编译 + 烧录。USB 线接上板子后,终端会列出检测到的串口,用方向键选中正确的那个回车。
判断烧录成功看 3 个信号:
- 编译阶段结尾出现固件大小统计(text/data 字节数),没有红色报错
- 烧录阶段出现擦除/写入进度,末尾打印
Hard resetting via RTS pin...一类复位提示 - 设备重启后,
esphome logs my_esp8266.yaml里出现 WiFi 连接成功和 IP 获取成功的日志行
成功标志:日志里能看到设备拿到 IP 地址。拿不到 IP 就跳到文末的排查顺序。
让温湿度每 60 秒上报一次
DHT22 是入门温湿度的标准件,三根线的接法:
| DHT22 | ESP8266 |
|---|---|
| VCC | 3V3 |
| DATA | D4(GPIO2) |
| GND | GND |
配置里追加这一段:
sensor: - platform: dht pin: D4 model: DHT22 temperature: name: "室内温度" id: indoor_temperature humidity: name: "室内湿度" update_interval: 60smodel按你手上的实际型号写(DHT11、AM2302 都支持,不写则自动检测);id给自动化规则引用用。改完再执行一次esphome run,把新固件刷进去。
成功标志:esphome logs中出现DHT: Got temperature=xx.x°C humidity=xx.x%这样的读数行;读到failed to receive或数值卡死,按文末第 3 条排查。
让数据出现在面板和浏览器里
数据回传有两条互相独立的路,可以只走一条,也可以双开。
路线一:Home Assistant 原生集成。在 HA 的"设备与服务 → 添加集成"里找到 ESPHome,用my_esp8266.local或设备 IP 配上 api 里那把密码,传感器会自动出现在面板上,OTA 升级也能从 HA 里直接触发。
路线二:内置 web 页面。配置里加一行:
web_server: port: 80重新烧录后,浏览器访问设备 IP 即可打开一个自带设备列表和控制按钮的页面,无需任何账号系统,适合临时查看或没有 HA 的场景。
成功标志:两条路任选其一——HA 面板出现"室内温度/室内湿度"两个实体,或浏览器里能看到设备状态页。
在设备上跑一段本地自动化
最短的本地自动化:温度越限 → 响蜂鸣器 → 5 秒后自动停。触发、动作、延时全部跑在芯片本地,断网照常工作。假设蜂鸣器接在 D1:
switch: - platform: gpio name: "警报器" pin: D1 id: alarm_buzzer automation: - trigger: - platform: threshold id: hot_trigger above: 30 sensor: indoor_temperature action: - switch.turn_on: alarm_buzzer - delay: 5s - switch.turn_off: alarm_buzzerabove是阈值温度,sensor引用前面给温度实体起的id。
成功标志:编译通过;把 DHT22 靠近热源让读数过 30°C,蜂鸣器响 5 秒后自动停。
出问题时的三条排查顺序
WiFi 连不上:先核对 SSID/密码是否含特殊字符且没多打空格 → 确认路由器开了 2.4GHz(ESP8266 不支持 5GHz 频段)→esphome logs观察是"找不到网络"还是"认证失败",前者查 2.4GHz 广播,后者基本就是密码问题。
OTA 升级失败:先确认电脑和设备在同一网段、信号正常 → 核对 ota 密码是否与配置一致 → 固件接近 Flash 上限时先精简配置再升级。
传感器读数异常:先查硬件——VCC/GND 是否接反、DATA 线是否松脱 → 核对model与实际芯片一致 → 把update_interval调大一些降低干扰,再观察是否恢复。
下一步
- 想换别的传感器或加开关、显示屏,直接翻 esphome/components/ 里的目录名找同名组件
- 自动化支持延时、窗口时间、时间触发等多种组合,可查 esphome/automation.py 了解全部可用动作
- 想自己写组件扩展,入口在 esphome/components/custom_component/
装好、连上、跑起来——剩下的就是往 YAML 里加东西的事了。
【免费下载链接】esphomeESPHome is a system to control your ESP32, ESP8266, BK72xx, RP2040 by simple yet powerful configuration files and control them remotely through Home Automation systems.项目地址: https://gitcode.com/GitHub_Trending/es/esphome
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考