Skip to content

OTA固件升级

JieIOT Logo
JieIOT OTA升级
云端下发指令升级硬件版本

一、流程概述

HTTPS 方式 OTA 升级流程描述

结合 MQTT 服务、设备和 Web 端总结的主题发送情况:

1.云端下发 OTA 升级信息包给设备:

  • 主题 :
things/down/${tenantId}/${productKey}/${deviceKey}/ota/firmware/upgrade
  • 方向 :云端 -> 设备

  • 触发时机 : 在 Web 端判断 上传了 OTA 升级包,创建了升级任务并且到升级执行时间时,或者用户手动点击“重新执行”时

  • 消息内容 :包含升级包的URL、版本和文件大小,以及固件文件MD5和固件文件HMAC值,并带有升级策略即是否强制升级和通道id

json
{
    "msgId":"45lkj3551234***",
  	"time":1626197189638,
	  "data":{
        "firmware":"1.3.13",
        "url":"http://ota.xiujiezhilian.com/s_UG_1.3***.bin",
        "size":"1306707",
        "md5":"e7471fe76cecc562f93d57745acac***",
        "hmac":"952C262E4F40D25B2DF2D3923485AE4EBD8B194F77D41BED2B67B1A335022***",
        "forced":1,
        "channel":0,
        "taskId":"task001"
        
    }
}

2.设备上报升级进度:

  • 主题:
things/up/${tenantId}/${productKey}/${deviceKey}/ota/progress/post
  • 方向 :设备 -> 云端

  • 触发时机 : 设备下载升级包过程中定时上报

  • 消息内容 : 包含升级进度信息和升级异常状态,如

上报进度信息:

json
{
    "msgId":"45lkj3551234***",
    "time":1626197189638,
    "data":{
        "taskId":"task001",
        "channel":0,
        "firmware":"1.3.13",
        "progress":98
    }
}

上报升级异常状态

json
{
    "msgId":"45lkj3551234***",
    "time":1626197189638,
    "data":{
        "taskId":"task001",
        "channel":0,
        "firmware":"1.3.13",
        "code":42,
        "msg": "下载失败,无法连接服务器"
    }
}

3.设备升级完成后上报最新版本以及状态:

  • 主题:
things/up/${tenantId}/${productKey}/${deviceKey}/ota/firmware/post
  • 方向 : 设备 -> 云端

  • 触发时机 : 设备端升级完成后,上报升级完成的固件信息

  • 消息内容 : 包含最新版本和状态,如

json
{
    "msgId":"45lkj3551234***",
    "time":1626197189638,
    "data":{
        "type":1,  
        "taskId":"task001",
        "channel":0,
        "firmware":"1.3.13"
    }
}

说明:“type” : 业务类型,0:版本初始化 1:固件升级完成版本更新

模拟的整体交互流程;

json
//主题定义
things/down/${tenantId}/${productKey}/${deviceKey}/ota/firmware/upgrade     是云端推送给设备的主题

things/up/${tenantId}/${productKey}/${deviceKey}/ota/progress/post        是设备升级中上报升级进度给云端的主题

things/up/${tenantId}/${productKey}/${deviceKey}/ota/firmware/post        是设备升级完成后上报最新版本以及状态给云端的主题

左边是云端下发,右边是设备上报

json
// 执行开始,状态即变为升级中,与此同时更新升级进度,当前进度0%

Topic: things/down/000000/xj_humiture_01/tempCiallo/ota/firmware/upgrade 
{
    "msgId":"45lkj3551234***",
  	"time":1626197189638,
	"data":{
        "firmware":"1.3.13",
        "url":"http://ota.xiujiezhilian.com/s_UG_1.3***.bin",
        "size":"1306707",
        "md5":"e7471fe76cecc562f93d57745acac***",
        "hmac":"952C262E4F40D25B2DF2D3923485AE4EBD8B194F77D41BED2B67B1A335022***",
        "forced":1,
        "channel":0,
        "taskId":"task001"
    }
}
                                    Topic:  things/up/000000/xj_humiture_01/tempCiallo/ota/progress/post
                                    {
                                        "msgId":"45lkj3551234***",
                                        "time":1626197189638,
                                        "data":{
                                            "taskId":"task001",
                                            "channel":0,
                                            "firmware":"1.3.13",
                                            "progress":20
                                        }
                                    }

// 接口更新upgradeProgress进度为20%展示在云端前台


                                    Topic: things/up/000000/xj_humiture_01/tempCiallo/ota/progress/post
                                    {
                                        "msgId":"45lkj3551234***",
                                        "time":1626197189638,
                                        "data":{
                                            "taskId":"task001",
                                            "channel":0,
                                            "firmware":"1.3.13",
                                            "progress":60
                                        }
                                    }

// 接口更新upgradeProgress进度为60%展示在云端前台

                                    Topic: things/up/000000/xj_humiture_01/tempCiallo/ota/progress/post
                                    {
                                        "msgId":"45lkj3551234***",
                                        "time":1626197189638,
                                        "data":{
                                            "taskId":"task001",
                                            "channel":0,
                                            "firmware":"1.3.13",
                                            "progress":100
                                        }
                                    }

// 接口更新upgradeProgress进度为100%展示在云端前台
// 接口更新upgradeStatus状态为3,“升级成功”展示在云端前台

                                    Topic: things/up/000000/xj_humiture_01/tempCiallo/ota/firmware/post
                                    {
                                        "msgId":"45lkj3551234***",
                                        "time":1626197189638,
                                        "data":{
                                            "type":1,  
                                            "taskId":"task001",
                                            "channel":0,
                                            "firmware":"1.3.13"
                                        }
                                    }
// 更新当前设备的固件版本信息

二、注意事项

1.在整个升级过程中,校验和的验证是确保数据准确性和完整性的重要环节,任何校验和不匹配的指令都应被视为错误并进行相应的处理。

2.升级包的传输过程中,需要确保无线网络的稳定性,以避免数据丢失或传输中断。

3.若升级过程中出现异常情况,应具备相应的错误处理机制,例如重试、回滚等操作,以保证设备的正常运行。

三、操作流程

HTTPS 方式 OTA 升级流程操作

1.运维管理-产品固件:添加固件,选择产品:

2.固件详情添加任务:

  • 固件信息表点击“查看”进入固件详情页面
  • “新增”升级任务,任务范围可选全部设备或者指定设备

**注意:**选择预定升级时间,会在该时间节点升级,升级前三分钟不允许修改升级任务

3.实时观察任务升级进度:

  • 查看任务详情:
  • 等待预定升级时间开始升级:
  • 设备升级成功: