如何使用OTA控制台升级固件

发布时间:2024-11-24 06:58

如何升级智能手表固件 #生活技巧# #数码产品使用技巧# #智能手表使用#

使用生活物联网平台设备端SDK的内置OTA功能,用户只需要适配所使用的模组和新品,即可使用生活物联网平台的云端OTA服务。本文主要介绍自有品牌项目下使用OTA控制台升级固件的流程。

前提条件

设备已烧录了一个固件版本,且已成功连接到生活物联网平台。

背景信息

总体OTA升级流程如下:

设备端开发升级所需的固件

编译设备端新固件,固件中需要内置版本号信息,设备完成固件烧写并重启后,会上报该新版本号到OTA服务端。

控制台(云端)执行升级过程

用户在OTA控制台执行操作,包括上传固件、验证固件、批量升级、管理固件等。

手机App端确认升级和验证升级结果

如果固件升级开启App确认功能,则需要用户在手机App上确认升级任务后,控制台才会执行固件升级。升级完成后,在手机App上验证升级结果。

一、设备端开发升级所需的固件

设备端(以Wi-Fi设备为例)主要有3个topic来与云端进行交互,流程如下图所示。

设备端通过以下topic向云端上报当前版本号。通常设备上电开机后需要上报一次当前固件版本号。

当设备完成OTA固件下载并烧录,重启后该topic上报的则为新固件的版本信息。

数据上行

/ota/device/inform/${productKey}/${deviceName}

请求数据格式:

{ "id":"123", "params":{ "version":"1.0.1", "module":"MCU" } }

参数

类型

说明

参数

类型

说明

id

String

消息ID号。String类型的数字,取值范围0~4294967295,且每个消息ID在当前设备中具有唯一性。

version

String

OTA模块版本。

module

String

OTA模块名。

说明

上报默认(default)模块的版本号时,可以不上报module参数。

设备的默认(default)模块的版本号代表整个设备的固件版本号。

当有新版本固件时,云端通过以下topic向设备端推送新固件的版本信息。

数据下行

/ota/device/upgrade/${productKey}/${deviceName}

设备端通过以下topic向云端上报OTA升级进度。该进度可以在控制台以及手机App中查看。

数据上行

/ota/device/progress/${productKey}/${deviceName}

说明

建议设置设备端上报进度频率为3秒内最多一次。若设备上报进度频繁,在物联网平台控制台的OTA升级包详情的批次详情中,可能无法查看到上报的全部进度。

{ "id": "123", "params": { "step": "-1", "desc": "OTA升级失败,请求不到升级包信息。", "module": "MCU" } }

参数

类型

说明

参数

类型

说明

id

String

消息ID号。String类型的数字,取值范围0~4294967295,且每个消息ID在当前设备中具有唯一性。

step

String

OTA升级进度。

取值范围:

1~100的整数:升级进度百分比。

-1:升级失败。

-2:下载失败。

-3:校验失败。

-4:烧写失败。

desc

String

当前步骤的描述信息,长度不超过128个字符。如果发生异常,此字段可承载错误信息。

module

String

升级包所属的模块名。模块的更多信息,请参见添加升级包。

说明 上报默认(default)模块的OTA升级进度时,可以不上报module参数。

根据设备端开发文档和设备端与云端交互的流程图,开发待升级的设备固件。详细的OTA开发编程请参见设备OTA编程。

编译生成新的设备固件,并确认设备端新固件的版本号。

在SDK根目录,执行编译命令。

aos make clean aos make living_platform@<模组名>

以下为编译过程中的日志片段,其中app_version_new对应的即为新固件的版本号。

Check if required tools for esp8266 exist Making config file for first time processing components: living_platform esp8266 platform/mcu/esp8266 vcall init auto_component server region: MAINLAND server env: ONLINE APP: living_platform Board: esp8266host user: liuese branch: rel_1.1.0 hash: 0f1596cffffd9a4646a3cce4d3c7ba9b4f14649d app_version_new:app-1.0.0-20191107142256 //新固件的版本号 firmware type: RELEASE FEATURE_SUPPORT_ITLS != y, so using normal TLS app_version:app-1.0.0-20191107142256 kernel_version:AOS-R-1.3.4 server region: MAINLAND server env: ONLINE APP: living_platform Board: esp8266

二、在控制台执行升级过程

登录生活物联网平台控制台。

上传固件。

进入页面。

在固件列表页签中的产品下拉框选择产品名称,并单击添加固件。

输入固件相关参数,并单击确定完成。

通常使用容易识别的固件名称和版本号来标识固件,建议将固件版本号与设备固件自身版本号保持一致。详细参数解释请参见固件升级。

上传固件后,使用测试设备验证固件。

固件验证的目的是为了保证固件质量,并且,通常建议选择3~5个测试设备来执行固件验证。

确保新固件版本正确,固件运行正常。

确保OTA升级服务可以正常执行,设备可以正常完成升级任务。

返回页面。

单击固件列表中操作列中的验证固件。

配置验证固件的相关参数。

待升级版本号:现有设备版本号,即原版本号。

待验证设备:选择待验证设备,支持单选、多选、全选。

APP确认升级:选择是否支持App升级确认功能,如果通过云智能App连接设备,可以使用云智能App确认升级该固件。

设备升级超时时间:选择超时时间,达到超时时间后仍未完成固件验证,则验证固件失败。

单击确定,开始执行固件验证。

如果APP确认升级配置为是,需登录手机云智能App,进入中,单击确认升级后,才开始执行固件验证。

选择新的测试设备,执行以上步骤。

批量升级固件。

固件验证通过后,进入批量升级阶段,可以支持全量、分批向设备推送升级。

返回页面。

单击固件列表中操作列中的批量升级。

配置批量升级的相关参数,并单击确定完成。

根据您自身需要选择合理参数,控制OTA升级节奏,提高升级成功率。批量升级的参数介绍请参见固件升级。

管理固件升级。

控制台支持对固件的管理,包括了新增、产品维度固件枚举、查看指定固件详情、删除等操作。在固件详情界面中,可以查看当前固件详细信息,还包括了目标设备总数、升级成功数、失败数等信息,有利于厂商掌握该版本升级的结果信息。下面介绍查看固件升级结果的操作为例,更多操作可参见固件升级。

进入页面。

单击固件列表中操作列中的查看。

在批次管理页签下的设备列表页签中,查看升级状态。

三、多模块升级

应用场景

部分飞燕客户需要对WiFi模组和MCU分别进行升级,所以需要设置不同的模块来区分。因为会存在多个模块同时需要升级的情况,所以需要在控制台同时创建升级任务来依次进行升级,但一个设备在一个时间点只能存在一个升级任务,所以可能出现报错,可参考下面步骤实现。

比如设备当前固件版本:WiFi:1.0.0,MCU:2.0.0

要升级的目标固件版本:WiFi:1.1.0,MCU:2.2.0

(模块之间的版本互不影响)

新增固件

image.png

分别给模块创建动态升级任务

先创建一个WiFi 模块从1.0.0升级到1.1.0的动态升级任务

再创建一个MCU模块从2.0.0升级到2.2.0的动态升级任务

image.png

21934003-086A-4B6B-B7D9-846977C14108.png

由于一个设备同一时间只能在一个正在进行的升级批次中(设备处于待推送、已推送或升级中状态),所以第二个创建的MCU的批次会直接显示失败,但是没关系。先确认WiFi模块的升级,在WiFi模块升级成功后,设备再次上报MCU:2.0.0版本,MCU批次下的该设备就会变成待推送状态,可以继续升级MCU模块。

四、手机App确认升级和验证升级结果

App端主要有4个topic来与云端进行交互,流程如下图所示。

20240606135006.jpg

查询待升级固件

App端通过以下topic向云端查询用户绑定设备的待升级信息,根据返回信息展示待升级设备名称列表。在控制台添加批量升级任务后,云端会将相应待确认升级固件列表信息会返回给用户(App端)。

/living/ota/firmware/file/get

确认设备升级

当APP确认升级配置为是时,云端需要收到App端通过该topic上报的消息后,才能开始执行升级任务,并将该执行任务推送到设备端。

获取正在升级的设备列表(公版App中目前没有使用该topic)

App端选择周期性或者下拉刷新等UI交互方式,通过以下topic向云端查询当前正在升级的设备信息。云端返回升级的设备列表信息等。

获取指定固件的升级信息

长连接实时监听,实时通知方式,不需要轮询方便使用;

Android长连接通道:长连接通道SDK;

IOS长连接通道:长连接通道SDK;

长连接topic:长连接服务;

TOPIC:

/sys/${productKey}/${deviceName}/app/down/ota/device/forward

API接口查询

需要调用接口轮询查询,详情参见:获取用户名下设备的固件升级进度

/living/ota/progress/list

取消固件升级

取消某一个设备的固件升级流程,详情参见:取消固件升级;

下面以生活物联网平台云智能App为例,介绍App端的操作。

登录云智能App。

选择。

查看固件升级,展示待升级信息、发起固件升级、展示升级结果等信息。

网址:如何使用OTA控制台升级固件 https://www.yuejiaxmz.com/news/view/229506

相关内容

汽车整车OTA升级需要注意些什么(OTA升级第二篇)
消费升级促旅游生活化,OTA和O2O必有一战?
让出行更舒适,让用车更从容!星途瑶光OTA重磅升级
3+1=∞ 比亚迪汉OTA升级诠释持续可进化的智能体验
如何开发蓝牙Mesh智能灯设备固件
新增35项 优化17项 理想汽车迎来OTA 4.3.0版本升级
滚烫的出行消费下 OTA平台的“内忧外战”
如何移植Wi
玩大了!别克OTA了eCruise Pro
鸿蒙智行全系车型 OTA 升级,大模型赋能车载小艺“绝活”尽显!

随便看看