OTA固件升级

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.实时观察任务升级进度:
- 查看任务详情:
- 等待预定升级时间开始升级:
- 设备升级成功:






