跳转到内容

通过 HTTP 请求的 OTA 更新

OTA(空中)通过 HTTP 请求更新组件允许您的设备自行安装更新的固件。要使用它,在您的设备配置中,您指定一个 URL,设备将从该 URL 下载二进制文件(固件)。要触发更新,使用 ESPHome 动作,它启动新固件的下载和安装。完成后,设备重新启动,调用新固件。

由于设备充当 HTTP(S) 客户端,它可以在外部网络或防火墙后面。此机制主要适用于独立或仅 MQTT 的设备。

要使用此平台,您的配置中必须存在 Http 请求 组件。

# 示例配置条目
ota:
- platform: http_request

此动作触发从配置的 URL 下载和安装更新的固件。由于它是 ESPHome 动作,可以在任何 ESPHome 自动化中使用。

on_...:
then:
- ota.http_request.flash:
md5_url: http://example.com/firmware.md5
url: https://example.com/firmware.ota.bin
- logger.log: "此消息不应显示,因为设备重新启动"
  • md5 (可选, string, 可模板化):url(下方)指向的固件文件的 MD5sum。不能与 md5_url(下方)一起使用;如果未指定 md5_url,则必须指定。

  • md5_url (可选, string, 可模板化):包含 url(下方)指向的固件文件 MD5sum 的文件的 URL。不能与 md5(上方)一起使用;如果未指定 md5,则必须指定。

  • url (必填, string, 可模板化):包含要安装的(新)固件的二进制文件的 URL。

  • username (可选, string, 可模板化):用于 HTTP 基本认证的用户名。

  • password (可选, string, 可模板化):用于 HTTP 基本认证的密码。

NOTE

  • 您可以从以下任一位置获取 firmware.ota.bin 文件:

    • ESPHome 仪表板(HA 附加组件):以 “OTA 格式” 下载(以前称为”旧格式”)

    • ESPHome CLI:目录 .esphome/build/project/.pioenvs/project/firmware.ota.bin

      …其中 “project” 是您的 ESPHome 设备/项目的名称。

    不能firmware.factory.bin“Factory 格式”(以前称为”现代格式”)与此组件一起使用。

  • 如果 usernamepassword 包含特殊字符,必须进行 URL 编码

  • 固件二进制文件的 MD5sum 是一个 ASCII 文件(也称为”纯文本”,通常在扩展名为 .txt 的文件中找到),由 32 个小写十六进制字符组成。可以使用以下命令获取并保存到文件:

    • 在 macOS 上:
Terminal window
md5 -q firmware.ota.bin > firmware.md5
  • 在大多数 Linux 发行版上:
Terminal window
md5sum firmware.ota.bin > firmware.md5
  • 在 Windows/PowerShell 上:
Terminal window
(Get-FileHash -Path firmware.ota.bin -Algorithm md5).Hash.ToLower() | Out-File -FilePath firmware.md5 -Encoding ASCII

这将生成 firmware.ota.bin 文件的 MD5 哈希值,并将结果哈希值写入 firmware.md5 文件。md5_url 配置变量应指向 Web 服务器上的此文件。OTA 更新机制使用它来确保安装时(新)固件的完整性。

如果由于任何原因,提供的 MD5sum 与安装固件时计算的 MD5sum 不匹配,设备将继续使用原始固件,新固件将被丢弃。