跳转到内容

ESPHome OTA 更新

ESPHome 的空中更新(OTA)平台允许您通过网络接口(Wi-Fi / 以太网 / Thread)远程安装修改/更新的固件二进制文件到您的 ESPHome 设备。

此平台由 ESPHome 仪表板和命令行界面(CLI)(通过 esphome run ...)使用,将固件安装到支持的设备。

除了 OTA 更新外,ESPHome 还支持”安全模式”以帮助在更新不如预期时进行恢复。这由该组件自动启用,但如果需要可以禁用。有关详细信息,请参阅 安全模式

# 示例配置条目
ota:
- platform: esphome
password: !secret ota_password
  • password (可选, string):用于更新的密码。

IMPORTANT

始终为 OTA 更新使用强且唯一的密码。有关更多信息,请参阅 安全最佳实践 指南。

  • port (可选, int):用于 OTA 更新的端口。默认值:

    • 3232 用于 ESP32
    • 8266 用于 ESP8266
    • 2040 用于 RP2040
    • 8892 用于 Beken 芯片
  • id (可选, ID):手动指定用于代码生成的 ID。

  • version (可选, int):要使用的 OTA 协议版本。版本 2 更稳定。要降级到旧版 ESPHome,设备应首先使用 OTA 版本 1 更新。默认为 2

  • Ota 支持的所有 自动化

NOTE

串口上传后,ESP8266 模块必须重置才能使 OTA 更新正常工作。如果您尝试执行 OTA 更新并收到错误消息 Bad Answer: ERR: ERROR[11]: Invalid bootstrapping,则必须对 ESP 模块/板进行断电重启。

由于配置的密码同时用于编译和上传,常规的 esphome run <file> 命令将不起作用。可以通过使用 on_boot 触发器单独执行操作来解决此问题:

esphome:
on_boot:
- lambda: |-
id(my_ota).set_auth_password("新密码");
ota:
- platform: esphome
id: my_ota
password: "旧密码"

OTA 块中的”id: my_ota”很重要。这在 lambda 中被引用。使用此技巧更改密码后,可以删除 on_boot 触发器,并在 ota: 部分中将旧密码替换为新密码。

如果已启用 OTA 但没有密码,只需在现有 ota: 配置块中添加 password: 行即可。

  • 如果您知道密码但想删除它,输入空字符串:id(my_ota).set_auth_password(""); 而不是更改。

  • 如果您不再知道密码且已激活 Web 服务器:

    • 从配置中删除 OTA 密码
    • 在本地构建新镜像。
    • 直接通过 ESP Web 服务器执行 OTA 更新。