通过 HTTP 请求进行 OTA 更新
通过 HTTP 请求的 OTA(Over The Air)更新组件允许您的设备自行安装更新后的固件。 要使用它,请在设备的配置中指定一个 URL,设备将从该 URL 下载二进制 文件(固件)。要触发更新,需要使用一个 ESPHome 动作,它启动新 固件的下载和安装。完成后,设备将重启,并加载新固件。
由于设备作为 HTTP(S) 客户端运行,它可以位于外部网络或防火墙后面。此机制 主要用于独立设备或仅使用 MQTT 的设备。
要使用此平台,配置中必须包含 Http Request 组件。
# 示例配置条目ota: - platform: http_requestota.http_request.flash 动作
Section titled “ota.http_request.flash 动作”此动作触发从配置的 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 上:
md5 -q firmware.ota.bin > firmware.md5- 在大多数 Linux 发行版上:
md5sum firmware.ota.bin > firmware.md5- 在 Windows/PowerShell 上:
(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 不匹配, 设备将继续使用原始固件,并丢弃新固件。