跳转到内容

通过 HTTP 请求管理更新

此平台允许您管理对 ESPHome 设备的更新部署。它通过读取 JSON 清单文件 并使用它来确定是否存在更新来工作。

要使用它,设备的配置中需要以下组件:

# Example configuration entry
update:
- 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),它们不会重定向,或者增加缓冲区大小。

此组件期望使用 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。