MQTT
i. MQTT FOTA固件升级流程
ii. 设备上报当前固件版本
设备端通过Topic上报固件版本给物联网平台:/ota/inform
校验当前设备是否存在,存在更新当前设备版本
设备连接OTA服务,必须上报版本号
设备端通过MQTT协议推送当前设备固件版本号到Topic: /ota/inform
消息格式如下:
{
"taskId":-1,//当前无升级任务情况
"params": {
"version": "1.0.1", //设备固件的版本信息
"module": "MCU" //固件所属的模块名(预留字段)
}
}
注:设备固件版本号只需要在设备激活上线时上报一次即可,不需要周期循环上报。
参数说明:
参数 | 取值 | 说明 |
taskId | int | 任务ID:当前无升级任务情况取 -1 |
version | String | 设备固件的版本信息。 |
module | String | 固件所属的模块名。(预留字段) |
ⅲ.平台下发固件url给设备端
设备端订阅Topic接收物联网平台的固件升级通知:/ota/upgrade
消息格式如下:
{
"taskId": 1,
"payload": {
"size": 432945, //固件大小,单位:字节
"version": "2.0.0", //固件版本
"url": "https://dmfile.ctwing.cn/file/upgrade/32128a6e8c3e15aea1c7/147589", //固件下载地址
"md5": "93230c3bde425a9d7984a594ac55ea1e", //当签名方法为Md5时,md5值。
"token": "token" //认证信息
"module": "MCU" //固件所属的模块名(预留字段)
}
}
注:
固件下载拼接地址样例
https://dmfile.ctwing.cn/file/upgrade?fileId=32128a6e8c3e15aea1c7&taskId=147589&deviceId=device10001&accessToken=token
ⅳ.根据固件url从文件服务器下载固件
固件下载过程中,设备端向服务端推送升级进度到Topic: /ota/progress
消息格式如下:
{
"taskId": 1, //子任务ID
"params": {
"step": -1, //固件升级进度信息
"desc": "固件升级失败,请求不到固件信息。",
"module": "MCU" //固件所属的模块名(预留字段)
}
}
ⅴ.设备端上报升级进度信息
设备端通过Topic上报固件升级进度:/ota/progress
固件升级过程中,设备端向服务端推送升级进度到Topic: /ota/progress
消息格式如下:
{
"taskId": 1, //子任务ID
"params": {
"step": -1, //固件升级进度信息
"desc": "固件升级失败,请求不到固件信息。",
"module": "MCU" //固件所属的模块名(预留字段)
}
}
参数说明:
参数 | 取值 | 说明 |
step | int | 固件升级进度信息。 取值范围: o [1,100] 之间的数字:表示升级进度百分比。 o -1:表示升级失败。 o -2: 表示下载失败。 o -3: 表示校验失败。 o -4:表示烧写失败。 |
desc | String | 当前步骤的描述信息。如果发生异常,此字段可承载错误信息。 |
module | String | 固件所属的模块名。(预留字段) |
ⅵ.设备端完成固件升级后,上报最新设备固件版本
设备端通过Topic上报固件版本给物联网平台:
设备端完成固件升级后,推送最新的固件版本信息到Topic:/ota/inform
{
"taskId": 1, //子任务ID
"params": {
"version": "1.0.2", //设备固件的版本信息
"module": "MCU" //固件所属的模块名(预留字段)
}
}
参数说明:
参数 | 取值 | 说明 |
taskId | int | 任务ID |
version | String | 设备固件的版本信息。 |
module | String | 固件所属的模块名。(预留字段) |
vii平台操作指导
1) 创建固件包
点击“远程升级管理—固件包管理”菜单中的“创建固件包”按钮
选择固件关联的产品、固件版本名称、固件版本号、签名算法、固件来源(本地固件、固件地址)、固件版本描述
2) 创建升级任务
点击“远程升级管理—升级任务”菜单中的“创建任务”按钮
填写任务名称、固件版本、任务描述。
3) 升级设备管理
点击操作中“升级设备管理”图标
“升级设备管理”中支持加入升级(勾选页面未选择的设备)添加需要升级的设备或导入设备(导入结果查询中可以查看导入任务是否成功)。
添加需升级的设备后,点击操作中“任务执行控制-立即启动”
启动后,可以点击“操作-查看升级详情”按钮查看升级情况
若需取消部分设备升级任务可以选择勾选任务升级子任务前复选框后点击“取消升级”。若需将所有升级子任务都取消,可直接点击“一键取消”按钮
远程升级管理中产品的固件包、软件包及升级任务的所属机构与产品的所属机构一致,每个用户仅可查看本机构及子机构下的产品、固件包、软件包、升级任务。因此若无法查看别人创建的产品、升级包、升级任务,可联系本租户主账号调整产品的所属机构。