设备远程升级


Edge OTA 功能范围

Edge Logger

Edge Gateway & Extensive

Edge 软件远程升级

×

Edge 操作系统漏洞远程升级

开发子设备 OTA 能力

与 EnOS Cloud 侧类似,EnOS Edge 提供了一套面对子设备的 OTA 升级服务:

  • 获取固件版本信息:子设备定时上报自身的版本信息,Edge 接收推送至云端,并校验版本号是否为最新

  • 推送升级消息:子设备接收到 Edge 升级请求并下载固件文件

  • 获取升级进度和结果:子设备进入升级流程后,可向 Edge 上报升级进度和结果,继而 Edge 会推送至云端展示

子设备端 OTA 升级很大程度上依赖于设备自身的物理空间和功能实现:

  • 子设备与 Edge 建立 Http 升级通道或串口连接

  • 子设备能够获取自己的固件版本信息,通过升级通道上报至 Edge

  • 子设备的固件需要上传至 EnOS 管理控制台 OTA 升级模块

  • 子设备需要自主管理版本号能力

  • 子设备需要自主定义升级进度

  • 子设备需要自己有验证固件完整性的能力,在升级过程中如失败,子设备能够自动回滚到升级前的版本

通过 Edge OTA 升级子设备的性能:

  • 串口升级通道下,最多 5 个子设备同时升级(5个 Thread 线程),建议升级完毕后,删除“升级”,以免占用 Edge 资源。

  • 针对某一子设,EnOS 云端控制台,可进行单独的空中升级管理。

子设备上报版本号并获取升级消息

子设备需上报当前的固件版本信息给 Edge,只有上报过固件版本信息的设备,才能在控制台创建升级任务。子设备按一定的时间间隔轮询 OTA 子设备升级服务器,上报自身版本,服务器收到消息后会回复是否有可用的固件更新。其中,在服务器回复有更新可用的消息包中会附带固件包的下载 URL、校验方式和校验码

{
"assetId":"",
"version":"1.0.0",
"serialNum":"1234-5678-90aa"
}
  • 响应数据格式

    • 无可用升级

    {
    "assetId":"ZR3c5CfFSO",
    "version":"1.0.0",
    "code":0,
    "desc":"no update",
    "signMethod":"",
    "sign":"",
    "downloadurl":""
    }
    
    • 有可用升级

    {
    "assetId":"999999",
    "version":"v2.0.0.1",
    "code":1,
    "desc":"has update",
    "signMethod":"MD5",
    "sign": "zxnchksmichasncjdchjcdn",
    "downloadurl":"/version/15912345678"
    }
    
  • 参数说明

参数

类型

是否必须

描述

assetId

string

子设备 ID,通常在上报子设备版本的时候为空,并通过 HTTP 响应获取,以供后用

version

string

子设备当前版本

serialNum

string

MAC 地址,在上报版本时为必填项,可以理解为在获取版本的同时通过SN号获取子设备的 assetId

code

integer

结果返回码,0代表不升级,1代表升级

desc

string

消息描述

signMethod

string

升级成功必须

校验方式:支持 md5 或者 SHA256

sign

string

升级成功必须

校验码

downloadurl

string

升级成功必须

固件下载 URL

子设备下载固件包

在控制台创建云端推送的固件升级任务,符合升级条件的在线子设备,将会通过 Edge 收到云端推送过来的固件信息,如果当前子设备不在线,将在下次上线时接收到升级请求。子设备接收到有可用更新的消息后,从消息中解析出固件包的 URL,通过 HTTP 协议下载固件包,串口子设备直接通过串口协议下载固件包。

子设备推送下载状态与结果

子设备需要主动通过URL下载固件包,并将下载结果和下载状态按自定义策略发给 OTA 子设备升级服务器。

  • 请求格式:http://IP:5050/downloadresult/15912345678

  • 推送数据格式

    • 下载失败

    {
    "assetId":"ZR3c5CfFSO",
    "code":0,
    "message":"download fail"
    }
    
    • 下载成功

    {
    "assetId":"ZR3c5CfFSO",
    "code":1,
    "message":"download success"
    }
    
  • 响应数据格式

{
"httpstatus":404,
"message":"unsupported url"
}
  • 参数说明

参数

类型

是否必须

描述

assetId

string

子设备 ID

code

integer

结果返回码,0 代表下载失败或者是 md5 校验失败,1 代表下载成功且 md5 校验成功

message

string

结果返回字段

httpstatus

integer

支持的请求错误码 400,404,406,500;请求成功则返回 204,无内容

子设备推送升级结果

子设备开始下载固件后,根据自身策略进行固件包升级,并计算自身升级进度。升级进度和升级结果可以通过下列三个格式的消息向 OTA 子设备升级服务器上报升级,运维人员可以在控制台中查看升级进度。响应的升级异常可以通过 errcode 字段上报。

  • 接口:http://IP:5055/updateresult

  • 推送数据格式

    • 升级失败消息体

    {
    "assetId":"999999",
    "version":"v1.0.0.3",
    "desc":"during upgrade",
    "flag":0,
    "process":0,
    "errcode":0
    }
    
    • 正在升级

    {
    "assetId":"999999",
    "version":"",
    "desc":"updating",
    "flag":1,
    "process": 60,
    "errcode":0
    }
    
    • 升级成功

    {
    "assetId":"999999",
    "version":"v2.0.0.1",
    "desc":"update completed",
    "flag":2,
    "process": 100,
    "errcode":0
    }
    
  • 响应数据格式

{
"httpstatus":404,
"message":"unsupported url"
}
  • 参数说明

参数

类型

是否必须

描述

assetId

string

子设备 ID

version

string

子设备当前版本

desc

string

描述信息

flag

integer

升级状态,0 代表升级失败,1 代表升级中,2 代表升级成功,其他值会提示错误

process

integer

升级进度,0-100 的整数

errcode

string

错误码,上报错误码要求 flag 为 0

httpstatus

integer

支持的请求错误码 400,404,405,406,500;请求成功则返回 204,无内容

备注

只有当 flag 为 2,process 为 100,version 为待升级的版本,三者同时成立时,云端才会显示升级成功。

完成以上子设备配置后,请继续下一步,添加升级设备。

添加升级设备

  1. 登录 EnOS 控制台,从左侧导航栏中选择 Edge 管理 > Edge详情 > OTA升级

  2. 点击 添加设备,按照页面提示选择需要升级的子设备进行添加即可。

  3. 填写 SN 序列号,用于区分设备。

../_images/sn.png

备注

关于 SN 序列号填写,默认推荐填写 MAC 地址,保证与接口上报 SN 内容一致;亦可填写子设备唯一标识 ID。

添加固件升级

Edge 遵循 IoT Hub 固件远程升级流程,从而代理子设备进行 OTA 升级。在完成上述开发子设备 OTA 能力以及添加升级设备的操作后,后续对固件无线(OTA)升级请参见 固件无线(OTA)升级

OTA 升级流程示例

登录 EnOS 控制台,从左侧导航栏中选择 Edge 管理,选择相应 Edge 设备,对子设备进行 OTA 升级。 以下以串口子设备为例,说明 OTA 升级操作流程。

  • 步骤 1 ~ 3 为创建子设备

  • 步骤 4 ~ 6 为上传子设备固件的流程,上传成功后,子设备会定期比对自身固件版本号与上传版本是否一致,如不一致,自动启动 OTA 升级.

步骤

  1. 左侧导航栏中选择 Edge 管理 > Edge详情 > OTA升级 > 添加设备

    ../_images/adddevice.png
  2. 选择产品,编辑产品列表后的 SN,点击 确定

    ../_images/editsn.png
  3. 左侧导航栏中选择 设备管理 > OTA升级 > 固件管理 > 新增固件,填写固件表单,填写完成后,点击确定

  4. 左侧导航栏中选择 设备管理 > OTA升级 > OTA 任务 > 新增任务,填写任务表单,填写完成后,点击确定

    备注

    需要子设备在线。