Skip to content

ThingsBoard 的 OTA ​

正文与配图来自原稿。自 3.3 起支持固件/软件 OTA。

1、上传升级包 ​

一个 OTA 包通常包含:title、version、deviceProfile、type(Firmware/Software)、校验算法与 checksum、描述、二进制或外链 URL。未提供 checksum 时默认 SHA-256。

上传 1

上传 2

2、分配逻辑 ​

text
Device Profile 分配 → 该 Profile 下设备目标版本
Device 单独分配 → 覆盖 Profile,仅该设备生效

例:Profile 绑 v1.0.3,设备 D1 再绑 v1.0.4 → 仅 D1 升到 1.0.4。

3、设备如何感知新版本 ​

分配后写入 shared attributes:

  • Firmware:fw_title / fw_version / fw_size / fw_checksum / fw_checksum_algorithm
  • Software:对应 sw_*

设备订阅 MQTT/HTTP/CoAP/LwM2M 属性通道,比对版本后下载、校验、写入并上报状态。

4、MQTT 分块下载 ​

请求:v2/fw/request/${requestId}/chunk/${chunkIndex}
响应订阅:v2/fw/response/+/chunk/+
payload 为期望块大小(字节),chunkIndex 从 0 递增,直到返回长度为 0。

5、状态机 ​

平台:QUEUED → INITIATED(默认约每分钟最多通知百台量级,以配置为准)。

设备上报:DOWNLOADING → DOWNLOADED → VERIFIED → UPDATING → UPDATED / FAILED。

成功示例:

json
{
  "current_fw_title": "myFirmware",
  "current_fw_version": "1.2.3",
  "fw_state": "UPDATED"
}

6、操作示意 ​

上传包

订阅:v1/devices/me/attributes

订阅属性

绑定包

共享属性

设备收到

设备自行判断是否升级。离线归来可主动:

text
SUBSCRIBE v1/devices/me/attributes/response/+
PUBLISH  v1/devices/me/attributes/request/1
{"sharedKeys":"fw_title,fw_version,fw_size,fw_checksum,fw_checksum_algorithm"}

分块示意

7、小结 ​

平台管包与通知;设备订阅属性、按块拉固件、报 fw_state。软件包用 sw Topic 前缀即可。