IoT物联网设备「固件升级」OTA,「资源包更新」最佳实践-阿里云开发者社区

开发者社区> 《IoT物联网技术》> 正文

IoT物联网设备「固件升级」OTA,「资源包更新」最佳实践

简介: IoT物联网设备「固件升级」OTA,「资源包更新」最佳实践
+关注继续查看

1.什么是固件升级

固件升级OTA(Over-the-Air Technology)即空中下载技术,是IoT物联网平台必备的一项基础功能。通过OTA方式,我们可以对分布在全球各地的IoT设备进行设备固件升级,而不必让运维人员各地奔波。本文以MQTT协议下的固件升级为例,介绍OTA固件升级流程、数据流转使用的Topic和数据格式。


2.固件升级OTA流程

MQTT协议下固件升级流程如下图所示

image

固件升级过程使用的Topic如下列表

1.设备端通过以下Topic上报固件版本给物联网平台 。

/ota/device/inform/${YourProductKey}/${YourDeviceName}

2.设备端订阅以下Topic接收物联网平台的固件升级通知 。

/ota/device/upgrade/${YourProductKey}/${YourDeviceName}

3.设备端通过以下Topic上报固件升级进度 。

/ota/device/progress/${YourProductKey}/${YourDeviceName}


3.固件升级实战

3.1 设备版本信息

为了实现固件升级功能,首先设备要正确上报当前固件版本,我们在设备详情可以查看到。

image.png

3.2 固件版本分布

当每个设备都准确上报固件版本时,我们可以在控制台查看到全量设备的版本发布情况。

image.png

3.3 上传新版固件

当我们需要做设备固件升级时,首先要上传新版本固件到IoT物联网平台,标记新版本号。

image.png

3.4 验证固件

新固件上传后,我们需要筛选测试设备,来验证固件是否正常,避免新固件导致设备业务异常。

image.png

验证通过后,会看到批量升级功能变为可用状态。

image.png

3.5 批量升级

点击批量升级菜单,进入升级配置页面。我们可以从多个维度筛选待升级的设备,配置升级策略。

image.png

image.png

3.6 升级过程

启动固件升级任务后,我们会看到一个升级批次。点击进入详情,可以看到待升级设备列表。

image.png


在升级批次详情页面,可以查看所有状态的设备情况,包括:待推送,已推送,升级中,升级成功,升级失败,已取消。

image.png

附录

IoT物联网平台推送到设备端的升级消息Payload示例

{
    "code":"1000",
    "data":{
        "size":2233916,
        "extData":{
            "info":"双11语料包更新"
        },
        "module":"resource",
        "sign":"5a1a416f357f17bfa89823d2fd49ef8b",
        "version":"res-1.2.5",
        "url":"更新包下载的url地址",
        "signMethod":"Md5",
        "md5":"5a1a416f357f17bfa89823d2fd49ef8b"
    },
    "id":1617773607348,
    "message":"success"
}


设备固件升级模拟代码

const fs = require('fs');
const path = require('path');
const mqtt = require('aliyun-iot-mqtt');
//设备身份三元组+区域
const options = {
    productKey: "替换pk",
    deviceName: "替换dn",
    deviceSecret: "替换ds",
    regionId: "cn-shanghai"
}
//建立连接
const client = mqtt.getAliyunIotMqttClient(options);
//订阅ota消息的Topic
const deviceUpgrade = `/ota/device/upgrade/${options.productKey}/${options.deviceName}`
client.subscribe(deviceUpgrade)
//每次连接后,上报当前固件版本
const deviceInform = `/ota/device/inform/${options.productKey}/${options.deviceName}`
client.publish(deviceInform, getFirmwareVersion("1-45-345a"))
//OTA过程中,上报进度
const deviceProgress = `/ota/device/progress/${options.productKey}/${options.deviceName}`
// 消息处理
client.on('message', function(topic, message) {
    if (topic == deviceUpgrade) {
      //收到ota消息,开始升级过程
        doUpgrade(message)
    }
})
// 本地更新
function doUpgrade(message) {
    message = JSON.parse(message)
    // 1.从url下载固件包,更新下载进度...
    client.publish(deviceProgress, getOTAUpgradeData(23))
    // 2.根据signMethod验证文件签名是否和sign值一致
    // verifyFirmware()
    // 3.重启设备,升级固件
    // burn & reboot()
}
// 更新升级进度
function getOTAUpgradeData(step) {
    const payloadJson = {
        "id": 1,
        "params": {
            "step":  step,
            "desc": " xxxxxxxx "
        }
    }
    console.log(payloadJson)
    return JSON.stringify(payloadJson);
}
// 设备当前固件版本
function getFirmwareVersion(version) {
    const payloadJson = {
        "id": 1,
        "params": {
            "version": version
        }
    }
    console.log(payloadJson)
    return JSON.stringify(payloadJson);
}



image.png

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
智能手持测温枪接入阿里云IoT物联网平台实践
智能手持测温枪接入阿里云IoT物联网平台实践
4783 0
阿里推出业界首个非侵入式热修复方案Sophix,颠覆移动端传统发版更新流程!
阿里巴巴对Android热修复技术已经进行了长达多年的探索。 最开始,是手淘基于Xposed进行了改进,产生了针对Android Dalvik虚拟机运行时的Java Method Hook技术,Dexposed。
3715 0
通过HTTP/2通道实时获取IoT设备状态和数据
通过HTTP/2通道实时获取IoT设备状态和数据 1.服务端订阅 1.1 服务端订阅流程 在IoT场景,有时候我们期望业务服务器能接收到设备状态和设备采集的数据,而不是通过云产品中转, 这时我们可以开启服务端订阅,IoT平台会把设备产生的消息通过HTTP/2通道推送到业务服务器,以便根据自身业务场景消费。
2239 0
flash版本更新导致shopex后台上传图片无效的问题
4.8.4~4.8.5版本好像都有这个问题,下面是官方bbs上找到的补丁包,通过ftp上传覆盖就行了 文件清单文件名          文件路径:                                  说明component.
784 0
你值得拥有的IoT 物联网平台开发实用技巧(一)
你值得拥有的IoT 物联网平台开发实用技巧(一)
4330 0
MTK机器原始OTA更新方法
在源码中编译完成后会生成各类.img的文件,这时候make otapackage生成ota包 一般ota包在源码工程的out/target/...目录下 一、通过线刷模式 将生成OTA包拷贝到Windows系统上,将手机或者平板关机,按音量上键或者下键再同时按住开机进入recovery模式,将设备与电脑连接,打开cmd命令提示符:输入adb sideload  xxx.zip(这个就是你的OTA包),然后手机或者平板会出现一堆数据,更新完后系统就会重启,这时系统就更新了。
1128 0
通过微信小程序体验阿里云IoT物联网平台
通过微信小程序体验阿里云IoT物联网平台
5456 0
阿里云物联网平台基于iOS Link kit SDK做OTA升级
第一次在平台写文章,如有错误,请多多包涵
223 0
+关注
《IoT物联网技术》
公众号《IoT物联网技术》相关阿里云IoT文章同步
87
文章
7
问答
来源圈子
更多
致力于实现万物互联的美好世界,为生态合作伙伴提供基于云计算、大数据、人工智能、云端一体化、安全的物联网基础平台和内容服务平台。
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载