使用生活物联网平台设备端SDK的内置OTA功能,用户只需要适配所使用的模组和新品,即可使用生活物联网平台的云端OTA服务。

前提条件

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

背景信息

总体OTA升级流程如下:

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

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

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

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

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

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

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

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

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

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

    /ota/device/inform/${productKey}/${deviceName}
  2. 当有新版本固件时,云端通过以下topic向设备端推送新固件的版本信息。
    /ota/device/upgrade/${productKey}/${deviceName}
  3. 设备端通过以下topic向云端上报OTA升级进度。该进度可以在控制台以及手机App中查看。
    /ota/device/progress/${productKey}/${deviceName}
  1. 根据设备端开发文档和设备端与云端交互的流程图,开发待升级的设备固件。详细的OTA开发编程请参见设备OTA编程
  2. 编译生成新的设备固件,并确认设备端新固件的版本号。

    在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

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

  1. 登录生活物联网平台的控制台。
  2. 上传固件。
    1. 进入运营中心 > 设备运维 > 固件升级页面。
    2. 固件列表的下拉框中选择产品名称,并单击新增固件
      固件升级
    3. 输入固件相关参数,并单击确定完成。

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

      新增固件
  3. 上传固件后,使用测试设备验证固件。
    固件验证的目的是为了保证固件质量,并且,通常建议选择3~5个测试设备来执行固件验证。
    • 确保新固件版本正确,固件运行正常。
    • 确保OTA升级服务可以正常执行,设备可以正常完成升级任务。
    1. 返回运营中心 > 设备运维 > 固件升级页面。
    2. 单击固件列表中操作列中的验证固件
    3. 配置验证固件的相关参数。
      • 待升级版本号:现有设备版本号,即原版本号
      • 待验证设备:选择待验证设备,支持单选、多选、全选
      • APP确认升级:选择是否支持App升级确认功能,如果通过公版App连接设备,可以使用公版App确认升级该固件
      • 设备升级超时时间:选择超时时间,达到超时时间后仍未完成固件验证,则验证固件失败
      验证固件
    4. 单击确定,开始执行固件验证。
      如果APP确认升级配置为,需登录手机公版App,进入我的 > 设置 > 固件升级中,单击确认升级后,才开始执行固件验证。
    5. 选择新的测试设备,执行以上步骤。
  4. 批量升级固件。
    固件验证通过后,进入批量升级阶段,可以支持全量、分批向设备推送升级。
    1. 返回运营中心 > 设备运维 > 固件升级页面。
    2. 单击固件列表中操作列中的批量升级
    3. 配置批量升级的相关参数,并单击确定完成。
      根据您自身需要选择合理参数,控制OTA升级节奏,提高升级成功率。批量升级的参数介绍请参见固件升级批量升级
  5. 管理固件升级。
    控制台支持对固件的管理,包括了新增、产品维度固件枚举、查看指定固件详情、删除等操作。在固件详情界面中,可以查看当前固件详细信息,还包括了目标设备总数、升级成功数、失败数等信息,有利于厂商掌握该版本升级的结果信息。下面介绍查看固件升级结果的操作为例,更多操作可参见固件升级
    1. 进入运营中心 > 设备运维 > 固件升级页面。
    2. 单击固件列表中操作列中的查看
    3. 批次管理页签下的设备列表页签中,查看升级状态。
      查看升级状态

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

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

App端与云端交互流程
  1. 查询待升级固件

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

    /thing/ota/listByUser
  2. 确认设备升级

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

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

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

    /thing/ota/upgrade/listByUser
  4. 获取指定固件的升级信息
    根据指定设备以及固件版本号,App端通过以下topic向云端查询某固件的升级结果、进度等信息,App端根据云端的返回结果,提示用户该固件升级的相关信息。
    /thing/ota/progress/getByUser

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

  1. 登录公版App。
  2. 选择我的 > 设置 > 固件升级
  3. 查看固件升级,展示待升级信息、发起固件升级、展示升级结果等信息。