跳转到内容

通过 HTTP 请求进行 OTA 更新

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

由于设备作为 HTTP(S) 客户端运行,它可以位于外部网络或防火墙后面。此机制 主要用于独立设备或仅使用 MQTT 的设备。

要使用此平台,配置中必须包含 Http Request 组件。

# 示例配置条目
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 或 “工厂格式”(前称 “现代格式”)。

  • 如果 username 和 password 包含特殊字符,则必须进行 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 不匹配, 设备将继续使用原始固件,并丢弃新固件。