通过 HTTP 请求的 OTA 更新
OTA(空中)通过 HTTP 请求更新组件允许您的设备自行安装更新的固件。要使用它,在您的设备配置中,您指定一个 URL,设备将从该 URL 下载二进制文件(固件)。要触发更新,使用 ESPHome 动作,它启动新固件的下载和安装。完成后,设备重新启动,调用新固件。
由于设备充当 HTTP(S) 客户端,它可以在外部网络或防火墙后面。此机制主要适用于独立或仅 MQTT 的设备。
要使用此平台,您的配置中必须存在 Http 请求 组件。
# 示例配置条目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或 “Factory 格式”(以前称为”现代格式”)与此组件一起使用。 -
-
如果
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 不匹配,设备将继续使用原始固件,新固件将被丢弃。