ThingsBoard 的 OTA
正文与配图来自原稿。自 3.3 起支持固件/软件 OTA。
1、上传升级包
一个 OTA 包通常包含:title、version、deviceProfile、type(Firmware/Software)、校验算法与 checksum、描述、二进制或外链 URL。未提供 checksum 时默认 SHA-256。


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 前缀即可。
