前言

OTA功能是产品的必备功能,但是如果又不想自己搭建平台,可以选择了阿里云的平台,基于阿里云对自己的设备进行版本管理。

硬件准备

1.广和通L610模组(opencpu,二次开发)

代码实现

1.升级流程图

2.设备上报版本信息,如果有新版本会下发升级信息

设备端通过MQTT协议推送当前设备OTA模块版本号到Topic:/ota/device/inform/${YourProductKey}/${YourDeviceName}。消息格式如下:

{"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)模块的版本号代表整个设备的固件版本号。

3.设备下发升级包信息

设备端订阅Topic:/ota/device/upgrade/${YourProductKey}/${YourDeviceName}。物联网平台对设备发起OTA升级请求后,设备端会通过该Topic收到升级包的存储地址URL。

消息格式如下:

  • 单个文件的OTA升级包信息:

    {"id": "123","code": 200,"data": {"size": 93796291,"sign": "f8d85b250d4d787a9f483d89a974****","version": "1.0.1.9.20171112.1432","isDiff": 1,"url": "https://the_firmware_url","signMethod": "MD5","md5": "f8d85b250d4d787a9f483d89a9747348","module": "MCU","extData":{"key1":"value1","key2":"value2","_package_udi":"{"ota_notice":"升级底层摄像头驱动,解决视频图像模糊的问题。"}"}}
    }
参数 类型 说明
id Long 消息ID号。每个消息ID在当前设备中具有唯一性。
message String 结果信息。
code String 状态码。
version String 设备升级包的版本信息。
size Long 升级包文件大小,单位:字节。

OTA升级包中仅有一个升级包文件时,包含该参数。

url String 升级包在对象存储(OSS)上的存储地址。

OTA升级包中仅有一个升级包文件时,包含该参数。

isDiff Long 仅当升级包类型为差分时,消息包含此参数。

取值为1,表示仅包含新版本升级包与之前版本的差异部分,需要设备进行差分还原。

sign String 升级包签名。

OTA升级包中仅有一个升级包文件时,包含该参数。

signMethod String 签名方法。取值:

  • SHA256
  • MD5

对于Android差分升级包类型,仅支持MD5签名方法。

md5 String 当签名方法为MD5时,除了会给sign赋值外还会给md5赋值。

OTA升级包中仅有一个升级包文件时,包含该参数。

module String 升级包所属的模块名。

说明 模块名为default时,物联网平台不下发module参数。

extData Object 升级批次标签列表和推送给设备的自定义信息。

_package_udi表示自定义信息的字段。

单个标签格式:"key":"value"

files Array 多个升级包文件的信息列表。

OTA升级包中有多个升级包文件时,包含该参数。

单个升级包文件信息为:

  • fileSize:升级包文件大小。
  • fileName:升级包文件的名称。
  • fileUrl、fileMd5、fileSign:含义与url、md5、sign相同。

4.设备上报升级进度(可选)

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

{"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:烧写失败。

设备上报的进度值及其描述信息,可根据设备实际升级场景在设备端配置。设备端配置方法,请参见设备端Link SDK的OTA升级。

desc String 当前步骤的描述信息,长度不超过128个字符。如果发生异常,此字段可承载错误信息。
module String 升级包所属的模块名。模块的更多信息,请参见添加升级包。

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

5.设备端完成OTA升级后,推送最新的版本信息到Topic:/ota/device/inform/${YourProductKey}/${YourDeviceName}。如果上报的版本与OTA服务要求的版本一致就认为升级成功,反之失败。

嵌入式开发|阿里云物联网平台在线升级OTA相关推荐

  1. 图文手把手教程--ESP32 OTA空中升级(阿里云物联网平台)

    本文内容 1)使用ota_example_mqtt例程,通过阿里云物联网平台,进行OTA升级. 2)将例程编译成两个版本,版本1.0.0下载至ESP32开发板,版本2.0.0上传至阿里云物联网平台. ...

  2. 文末赠书5本 | 附源码 | 三等奖作品 | 基于RA4M2和阿里云物联网平台的智能卧室小管家

    [RA4M2设计挑战赛]基于RA4M2和阿里云物联网平台的智能卧室小管家 摘要 本项目已RA4M2为主控,搭载了RT-Thread实时操作系统,配合Wi-Fi模块来提供网络通讯能力,外设接入了继电器. ...

  3. 阿里云物联网平台测评:以温度报警器开发为例

    点此查看 所有教程.项目.源码导航 文章目录 1. 物联网平台概述 2. 阿里云物联网平台的优势 2.1 快速接入 2.2 超高负载能力 2.3 可用性 2.4 安全性 2.5 性价比 3. 温度报警 ...

  4. 阿里云HaaS100物联网开发板学习笔记(四)轻应用初步--用javascript连接阿里云物联网平台

    摘要:本篇文章讲解如何使用JavaScript"轻应用"连接阿里云物联网平台并上报一个数据.仍然延续前几篇文章的结构,从安装软件环境开始讲,以使零基础的同学看了本篇文章之后,也能够 ...

  5. 基于阿里云物联网平台的Android物联网软件框架(快速开发)

    Android 物联网APP 提示:该工程是连接阿里云物联网平台的模板代码,将MQTT连接.JSON数据的订阅发布等操作封装,并且能够迅速将获取到的数据显示到手机界面上.使用了Servier进行网络连 ...

  6. 阿里云物联网平台python开发手册_阿里云物联网平台体验(树莓派+Python篇)

    虽然对阿里云物联网平台比较熟悉了,从一开始就有幸参与了飞凤平台(Link Develop 一站式开发平台的前身)的一些偏硬件接入的工作.但是同时也见证了阿里云物联网团队从几十人到数百人的迅速扩张,其物 ...

  7. 广和通l610二次开发|广和通l610 CAT.1模组opencpu开发《三》阿里云物联网平台mqtt动态注册

    阿里云物联网平台动态注册 使用模组的IMEI作为设备的name,采用动态注册自动在案例云平台上注册设备 文章目录 阿里云物联网平台动态注册 参考文档 一.基本准备 二.平台产品创建 三.动态注册流程 ...

  8. CAT.1开发|4G连接阿里云物联网平台

    前言 使用4G模组二次开发,实现阿里云物联网平台的连接.当前MCU是越来越贵,无奈只能使用模组二次开发,模组的资源是相当丰富,flash和ram都是兆级别的,可用空间很大.唯一的不足就是外设不多.阿里 ...

  9. STM32+4G模块实战项目(连接阿里云物联网平台+OTA升级):(一)初识硬件

    STM32+4G模块实战项目(OTA升级) 构思占坑中ing.....,3天一章,请耐心等待 STM32+4G模块实战项目(连接阿里云物联网平台+OTA升级):(一)初识硬件 STM32+4G模块实战 ...

最新文章

  1. PHP源码分析-PHP的生命周期
  2. [转]Visual Studio 项目类型 GUID 清单
  3. 服务器操作系统字符集,设置服务器字符集
  4. 本地线程分配缓冲_线程本地分配缓冲区
  5. Android 上传图片实例,java上传图片接口
  6. 年底了,小心这些现象。别再无动于衷
  7. keras + tensorflow —— 函数式 API编程
  8. play framework 在 IDEA 11中debug
  9. PCB叠层及阻抗控制关键因素
  10. Adreno GPU Profiler工具使用总结
  11. linux蜂鸣器驱动指令,Linux 设备驱动简析—PC蜂鸣器驱动
  12. Android 拍照后图片的旋转,合并,兼容性 相机开发
  13. 如何解决Access操作或事件已被禁用模式阻止
  14. 《像三国》3D动效制作经验分享
  15. c语言拔萝卜算法,拔萝卜优秀说课稿
  16. 多重盒子嵌套下,子盒子撑开父盒子,父盒子宽度随子盒子内容自适应
  17. java商城项目开发背景描述_javaweb凌翊商城项目展示概述.ppt
  18. 李航《统计学习方法》第二版 实战(mnist为例)
  19. 新飞飞不显示服务器列表,新飞飞8月15日停服公告及停机期间游戏数据说明
  20. 2016华为校招上机笔试练习题

热门文章

  1. 从0上线一个简单提醒功能的企业微信机器人bot(python3.6+腾讯云部署+cron触发)
  2. ICCSE-2018 Call for Papers
  3. win8修复计算机u盘,Windows 8 用U盘恢复系统 提示 安装Windows的驱动器已经被锁定。请解锁该驱动器,然后再试一次 - Microsoft Community...
  4. 知云翻译选中不连续内容
  5. 企业应对危机 业务创新有六得力“武器”
  6. 旧版本Ubuntu安装magick出现undefined symbol的解决思路
  7. ansible——playbook剧本的讲解与应用
  8. 那些三十五岁失业的安卓程序员,后来都干什么去了?
  9. 获取苏宁易购商品的评论图片
  10. iec104点号_IEC104报文遥测信息提取方法与流程