合作伙伴工作台
注册

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

固件所属的模块名。(预留字段)


这篇文档是否帮助您解决了问题?
如果您愿意进一步帮助我们改进文档 ,请留下您的联系方式。