导读:ESPHome 2026.9.0 目前已发布 Beta 版本,官方预计将在下周正式推送。这次更新没有堆砌花哨的表面功能,而是把精力集中在了底层编译体系提速、老设备内存极限优化、网络安全以及 Modbus 总线重构上,全周期共合并了 275 个 PR。
我梳理了本次更新的核心亮点、新增硬件组件以及升级时必须注意的踩坑点,建议各位折腾智能家居的小伙伴收藏备用!
一、 重磅更新:底层的“大换血”与安全升级
这次 2026.9.0 最让人兴奋的不是新增了某个开关,而是解决了几大长期困扰玩家的底层痛点:编译慢、ESP8266 容易爆内存、以及 OTA 升级固件明文传输的问题。
1. 编译全流程并行化:Docker 预装提速 50% 以上
相信在树莓派、低功耗软路由或者 Home Assistant App 内部编译过固件的朋友都深有体会:一旦重新拉取依赖或者首次编译,PlatformIO 那长达几十帧的串行下载进度条让人等到抓狂。
在 2026.9.0 中对构建流程进行了端到端的全面并行化重构:
- 并发下载与提取:新增多包并发预拉取与多核并行解压机制,CI 基准测试中 ESP8266 依赖安装阶段耗时从 17.1 秒降到 10.3 秒,构建占比由 36% 压缩到 25%;
- Docker 预装翻倍提速:Docker 镜像自身的 PlatformIO 预装耗时直接从约 100 秒锐减到 46 秒;
- 增量编译省流省时:ESP-IDF 原生构建现在会在框架目录内持久化缓存已发现的组件列表,修改
sdkconfig 后无需重复执行庞大的 CMake 配置过程,大幅节省单板机(SBC)的重编等待时间。
目前整个 ESPHome 生态中,依然有接近 40% 的在线设备运行在经典的 ESP8266 芯片上。本版本完成了脱离 PlatformIO 的整套独立底层脚手架搭建:
- 引入了独立的固件包注册与 SHA256 校验下载层;
- 移植了专用的链接脚本修正器(Linker-script Surgery)与板卡元数据;
- 引入官方 Arduino ESP8266 Core 3.1.2 与 xtensa-gcc 10.3 校验安装套件。
注:虽然该原生工具链在当前版本尚处于底层准备阶段、未对普通用户配置开放,但它为后续 ESP8266 获得更小巧、更极速的原生独立编译体验打下了坚实地基。
3. OTA 固件空中升级引入 Noise 加密协议(彻底告别明文裸奔)
过去 ESPHome 的 OTA 固件空中推送虽然具备 SHA256 密码鉴权,但固件二进制文件在局域网内是完全明文传输的。如果在不受信任的局域网环境里,抓包者完全有可能嗅探到固件中硬编码的 Wi-Fi 密码、API 秘钥或私有 token。
新版本将原生 API 使用的 Noise (ChaCha20-Poly1305) 现代加密协议扩展到了 OTA 平台:
- 配置了
api: encryption: 的设备将自动与 CLI 协商启用加密 OTA;
- 可以在 OTA 配置中显式加入
encryption: 块强制开启,拒绝任何未加密的明文上传尝试;
- 底层抽离出通用的
noise 组件,统一调度硬件真随机数(HWRNG)与 PSK 握手流程。
4. 极致内存榨汁:ESP8266 释放宝贵 RAM
为了给资源紧张的 ESP8266 挤出更多可用堆内存,ESPHOME开发者对 60 多个文件中的 211 处日志字面量进行了地毯式清理,将其全部包裹在 LOG_STR_LITERAL 中常驻 Flash,不再占用宝贵的 RAM。
- 典型的
d1_mini 配合 Wi-Fi、WireGuard 及基础传感器节点,仅此一项就能直接省下 80 字节 RAM;
- 彻底废弃了 65 字节的 Base64 查找表,改用极速算术范围映射,不仅节省 64 字节内存,Host 端的解码性能更是直接翻倍;
- 将 30 多个组件的常用单行取值函数内联化,并按需剔除未使用的源文件(如未使用的 GPIO、传感器滤镜与 BLE 广播代码),整体运行时更加轻盈。
5. Modbus 控制器架构全面重构
Modbus 模块迎来了多版本迭代以来最大规模的重构:
- 零堆内存写入:写入实体(Switch、Number、Output、Select)重构为持久化 Hub 设备,在
setup() 之后实现零堆内存分配;
- 连续轮询机制:新增
continuous: 选项,让从机读取请求无缝紧密排列,榨干串口总线空闲时间;
- 灵活的跨寄存器联动:
write_lambda 获得更底层的设备控制句柄,例如可以用一个 Coil 线圈开关直接驱动 Holding Register 保持寄存器的写入。
6. 配网体验与红外发射体验跃升
- Improv 配网支持纯以太网:
improv_serial 不再死绑 Wi-Fi,有线以太网设备如今也能通过串口反馈网络就绪状态和 Web URL;
- 配网超时自动销毁热点:设备如果长时间未配网,配网窗口关闭后会自动彻底关闭 Wi-Fi AP 与 Captive Portal,防止设备长期开放在空口被意外连入;
- LibreTiny(BK7231 / RTL8720C)红外硬件中断发射:红外发送告别原本霸占 CPU 的死循环(Busy-wait),改用硬件定时器中断(ISR)驱动,红外发送期间 Wi-Fi 和 TCP 堆栈照常运转,彻底告别发射长红外码时的丢包掉线问题。
二、 常用新组件与功能增强盘点
除了底层的硬核升级,2026.9.0 也补充了许多非常实用的小组件与周边功能:
1. 新增 6 款硬件组件与核心模块
ds1603l:UART 超声波非接触式液位传感器组件,非常适合水箱、水井液位与容积自动换算;
d01:PM2.5 颗粒物传感器支持(每 1.4 秒自动广播数据包);
sfa40:Sensirion 盛思锐 SFA40 专用甲醛传感器,同时输出温湿度数据;
mk2pvrouter:太阳能光伏能量导向与电能遥测组件;
snapshot:纯内存图像渲染并输出 BMP 文件的显示平台,极大便利了开发调试与自动化测试;
noise:内部共享加密组件,支撑 API 与 OTA 双重加密安全。
2. 现有组件的高频实用更新
- Tuya 电热水器集成:新增
tuya: water_heater 原生实体,过去需要拼凑 template 和 lambda 的繁琐配置如今只需几行搞定;
- Template Climate 自定义温控器:支持基于纯 ESPHome 原语构建全功能温控器,自带乐观控制模式与发布动作;
- LVGL 9.5 UI 升级:新增
list 列表与 table 表格轻量级控件,支持径向与锥形渐变背景;
- UC8179 墨水屏驱动:适配微雪 Waveshare 7.5寸 v2 以及 Seeed reTerminal E1001 电子墨水屏;
- SPI 以太网总线复用:W5500、DM9051 等以太网芯片现在可以与显示屏共用同一个
spi: 总线引脚(如 M5Stack CoreS3);
- 蓝牙代理抗拥塞优化:向墨水屏等设备传输大体积图片时,蓝牙代理的丢包警告进行了收敛限制,不再频繁刷屏淹没日志。
三、 升级前必看:破坏性变更(Breaking Changes)与避坑指南
本次版本涉及到底层代码重构,如果你使用了以下功能,在升级前务必核对 YAML 配置:
🚨 1. ESP32 烧录自定义 eFuse MAC 将全局生效
🚨 2. Modbus 控制器配置迁移
custom_command 更名为 custom_pdu:Payload 中不再需要前缀从机地址字节(控制器会自动追加从机地址和 CRC 校验)。
- 合并多余配置项:原
register_count 和 force_new_range 被三态选项 reuse_previous_range: auto/true/false 替代;原 FP32 常见的 register_count: 1 + response_size: 4 配置将不再被允许。
- 单传感器
skip_updates 废弃:如需对部分慢速寄存器降低轮询频率,请新建一个相同地址但拥有较长 update_interval 的 modbus_controller。
🚨 3. 严格的 UART 串口参数编译期校验
以前若你在配置某些串口传感器(如 cm1106, daly_bms, mhz19, pylontech, teleinfo 等)时填错了波特率或校验位,可能只会在运行时报红。新版升级为编译配置期强制校验,一旦总线波特率不匹配将直接报错阻止固件编译。
🚨 4. ESP32-Hosted 必须配合 ESP-IDF 5.3+
如果你使用了 esp32_hosted 作为协处理器,移除了对旧版 esp_hosted 2.0.11 的回退支持,请确保编译框架锁定的 ESP-IDF 版本升级至 5.3 或以上。
🚨 5. ESP8266 用户自定义 API Action 长度限制
在 ESP8266 平台,每个自定义 API 动作的名称、参数名称、说明及示例字符总长度不能超过 384 字节,超出将编译报错。
四、 总结与升级建议
总体而言,ESPHome 2026.9.0 是一次非常扎实的底层大版本:
- 老玩家福音:ESP8266 获得更充裕的可用内存,脱离 PlatformIO 的原生工具链未来可期;
- 效率与体验:多核编译提速让 Docker 与本地构建更加畅快,OTA 全程加密补齐了局域网安全的最后一块短板;
- 工业与传感拓展:重构后的 Modbus 更加强健,各类新传感器的加入让硬件生态更加丰富。
升级建议:建议大家在正式版发布后,先在 1~2 台非关键设备(如普通温湿度计或ble蓝牙代理)上尝试升级,验证 Wi-Fi 与 API 通信无误后,再批量推送升级其他ESPHOME设备。