通过 HTTP 请求管理更新
此平台允许您管理对 ESPHome 设备的更新部署。它通过读取 JSON 清单文件 并使用它来确定是否存在更新来工作。
要使用它,设备的配置中需要以下组件:
# Example configuration entryupdate: - platform: http_request name: Firmware Update source: http://example.com/manifest.json-
source (必填, string): 包含固件元数据的 YAML 清单文件的 URL。
-
update_interval (可选, Time): 检查更新(非安装)的间隔。 默认为 6 小时。
-
还包括 Update 的所有其他选项。
WARNING
GitHub 发布 URL(例如 https://github.com/<user>/<repo>/releases/latest/download/manifest.json)会重定向
到非常长的 URL,可能会超过 HTTP 请求
组件默认的 512 字节缓冲区限制,导致更新检查因”Out of buffer”错误而失败。
改用 GitHub Pages URL(例如 https://<user>.github.io/<repo>/firmware/manifest.json),它们不会重定向,或者增加缓冲区大小。
更新清单格式
Section titled “更新清单格式”此组件期望使用 ESP-Web-Tools manifest,并在
ota 块中有一个按如下结构组织的扩展:
{ "name": "My ESPHome Project", "version": "2024.6.1", "builds": [ { "chipFamily": "ESP32-C3", "ota": { "md5": "1234567890abcdef1234567890abcdef", "path": "/local/esp32c3/firmware.bin", "release_url": "http://example.com/releases/10", "summary": "Another update" } } ]}虽然 release_url 和 summary 是可选的,但此处显示的所有其他字段都是必填的。
如果 path 以以下内容开头:
http或https:path被视为完整的 URL,将用于获取固件二进制文件。- 一个正斜杠(
/):path将附加到为source指定的主机名(“绝对”路径)(如上所述)。 - 任何其他字符:
path将在裁剪掉清单文件名后附加到source(如上所述)。
注意,单个 JSON 文件内可能指定多个 builds。