AT开发FOTA远程升级:Air780EP低功耗4G模组
针对客户朋友的应用反馈,特本篇文章:基于Air780EP模组AT开发的FOTA远程升级指南。
AT版本的远程升级主要是对AT固件版本进行升级,实际方式为通过合宙官方IoT平台升级或者使用自己搭建的服务器进行升级服务。
Air780EP是合宙推出的一款低功耗4G全网通模组,兼容模组行业1618经典封装,支持OpenCPU开发及全功能数传AT开发,可广泛应用于多样化的物联网终端。
一、合宙IoT平台远程升级

1.1 如何查看升级日志
登录合宙IoT平台(iot.openluat.com),在主菜单【固件升级】下拉列表中选择升级日志,输入完整的IMEI并选择所需日期。

1.2 升级日志响应码列表(点击放大查看)

1.3 使用默认项目名配置
在向合宙采购4G模块时,如果采购人员没有告知这批模块应该放在IoT平台的哪个产品下,则默认账号密码如下:
默认账号:采购人的手机号
默认密码:888888
需要创建一个"Air7XXF标准模块"的项目。
特别注意:
以**"Air7XXF标准模块"**命名的项目,为Air780EP模块AT版本默认FOTA请求升级的IoT项目,并将此次所采购的所有模块都放在这个项目下。
如果模块不在该项目下或者需要更换项目,请联系合宙工作人员。


1.3.1 配置流程
本文以合宙Air780EP为例获取AT固件版本,下载到本地后解压并将dfota.bin文件上传到dfota中。
在合宙IoT平台【我的项目】页面点击固件列表:

创建固件,上传对应文件:


上传好文件之后会自动生成固件名称,不需要修改:

如果配置“升级全部设备”选项为“是”,则无需配置IMEI,按照上述内容配置即可。如果选择“否”,还需添加IMEI,如下图所示:

1.3.2 AT指令触发升级
手动触发升级
模块从V1006升级到V1007的流程示例如下:

自动升级(默认24小时内自动触发)
自动升级是模块定期向后台发送升级请求,来获取新固件进行更新的,大致流程如下:

可以通过AT+UPGRADE=“PERIOD”,60设置自动升级时间,这里设置为60s来作为演示:

1.4 使用自建项目名配置
从合宙采购完模块之后,注册登录合宙IoT平台。在IoT平台【我的项目】页面新建一个项目,并要求合宙工作人员将这批模块放入新建的项目中(注:客户本身无权限进行操作)。
本示例就以“远程升级模块”为项目名进行远程升级:

该项目下的模块可通过设备列表查看:


1.4.1 配置流程
参考上文【1.3 使用默认项目名配置】的1.3.1配置流程;注意此时的项目为“远程升级模块”。
1.4.2 AT指令触发升级
手动触发升级
通过下方图示操作,找到对应项目的项目Key。

复制项目Key:
用AT+UPGRADE="KEY",ProductKey进行配置,其中ProductKey为对应项目Key;
要注意的是该命令参数会写入nv,掉电保存;
然后再发送AT+UPGRADE进行远程升级。

自动升级(默认24小时内自动触发)
自动升级是模块定期向后台发送升级请求,来获取新固件进行更新的,大致流程如下:

可以通过AT+UPGRADE=“PERIOD”,60设置自动升级时间,这里设置为60s来作为演示:

二、自定义服务器远程升级
使用自己的服务器来升级模块和使用IoT平台升级,最重要的区别是下载固件的来源不同。其实FOTA的过程是新老版本生成差分包再进行升级的过程,那么这个差分的过程在哪里呢?
使用合宙IoT平台升级,差分的过程在IoT服务器后台,那使用自己的服务器该怎么办呢?——答案当然是自己来完成差分的过程,放在服务器等待模块来下载。
2.1 差分包生成工具
手动生成差分包的过程,使用doc平台工具中的差分工具。注意:升级文件为 xxxx.dfota.bin 文件。

下载生成的差分文件:

本次我们从V1006升级到V1007需要准备各自的bin远程升级文件,上传完成后等待差分完成,下载得到的差分文件,这里将名字改为dfota_final_AirM2M_AirM2M_V1007.bin。
2.2 配置流程
把生成的固件放到服务器上,然后通过:
**AT+UPGRADE="URL",""**指令设置对应的URL链接。
配置完差分包URL地址成功后,**AT+UPGRADE **主动触发升级。
升级流程如下:
这里选择了USB的另外一个端口,可以上报模块的升级过程。

AT开发FOTA远程升级:Air780EP低功耗4G模组的更多相关文章
- iTOP-4412开发板全新升级支持4G全网通模块
开发板支持4G,GPS,CAN,485,WIFI蓝牙,重力加速度计,陀螺仪等模块. 核心板参数 尺寸:6cm*7cm 高度:连同连接器在内0.26cm CPU:Exynos4412,四核Cortex- ...
- 基于IAP和Keil MDK的远程升级设计
写在前面:三个周之前,我突然想写一个远程升级的程序.那个时候我只是大概知道IAP的意思是在应用编程,但怎么编,我还一无所知.我给自己定下一个个阶段目标,从最基础的代码一点点写起,解决一个又一个的问题. ...
- 【转】 基于TFTP协议的远程升级设计
版权声明:本文为博主原创文章,未经博主允许不得转载.联系邮箱:zhzhchang@126.com 说明:由于CSDN博客编辑器对word格式近乎不支持,因此对表格使用了图片方式(最后一个表格未使用图片 ...
- 基于TFTP协议的远程升级设计
说明:因为CSDN博客编辑器对word格式近乎不支持.因此对表格使用了图片方式(最后一个表格未使用图片格式.大家能够看看效果),CSDN博客编辑器上传图片十分不人性化(直接复制图片是不显示的),因此本 ...
- STM32f103x IAP远程升级小结
最近在面试的时候遇到一个关于IAP远程程序升级的问题,由于之前所做的项目没有涉及到远程升级需求,当时一脸懵呆,不过回答的还是不错的,今天针对STM32F103系列调试了IAP的程序,这里做一下小结,如 ...
- Golang开发支持平滑升级(优雅重启)的HTTP服务
Golang开发支持平滑升级(优雅重启)的HTTP服务 - tabalt的博客 http://tabalt.net/blog/graceful-http-server-for-golang/ http ...
- Android零基础入门第10节:开发IDE大升级,终于迎来了Android Studio
原文:Android零基础入门第10节:开发IDE大升级,终于迎来了Android Studio 通过前面几期的学习,我们知道了Android的前世今生,也了解了Android的系统架构和应用组件,也 ...
- Altera FPGA 远程升级有关的几个IP的使用
在做在线远程升级的时候,一般需要两步:1.将数据写到外挂的flash中.2重新启动FPGA配置. 不过要做到远程升级,一般需要在原始程序中就考虑到加入远程升级模块,remote updata IP, ...
- 设备程序远程升级采用两种方式(优先采用IP方式)
设备程序远程升级采用两种方式(优先采用IP方式): 采用应急广播TS流传输技术规范的消息内容表携带升级包数据.当辅助数据类型值为44时,消息内容表传输的数据为程序升级包. 采用IP方式传输升级包数据. ...
- 制作一个有趣的涂鸦物联网小项目(涂鸦模组SDK开发 CBU BK7231N WiFi+蓝牙模组 HSV彩色控制)
实现的功能: l APP控制月球灯 l 本地月球灯控制 l APP控制"大白"颜色,实现各种颜色变身 l 门状态传感器状态APP显示 l 网络状态指示灯,连接服务器长亮, ...
随机推荐
- 离线安装python包
1.制作requirement.txt pip freeze > requirements.txt 2.离线下载安装包 #下载单个离线包 pip download -d your_offline ...
- 用MySQL的GROUP_CONCAT函数轻松解决多表联查的聚合问题
大家好呀,我是summo,最近遇到了一个功能需求,虽然也是CURD,但属于那种比较复杂一点的CURD,话不多说,我们先看一下需求. 需求如下: 有三张表,学生表.课程表.学生课程关联表,关联关系如下图 ...
- 一个小小空格问题引起的bug
程序员会遇到一种情况,一个bug排查到最后是由一个很小的问题导致的.在昨天的日常搬砖中遇到一个问题,耽搁了我大半天的时间,最后查明原因让我很无语. 首先介绍一下背景,我是做算法模型训练,目前手上的工作 ...
- 【图文安装教程】在docker中安装ES
在docker中安装ES怎么安装?本文就教大家怎么安装 1.部署单点es 1.1.创建网络 因为我们还需要部署kibana容器,因此需要让es和kibana容器互联.这里先创建一个网络: docker ...
- VUE-局部使用
目录 VUE-局部使用 快速入门 常用指令 v-for v-bind v-if & v-show v-on v-model vue生命周期 Axios Vue案例 VUE-局部使用 Vue 是 ...
- Razor 常用又容易忘记语法
1. <text> 要写 text 可以用这个特殊 element @:  @: 也是一个可以写 text 的方式 2. @Html.Raw($@"<s ...
- C++ 指针动态内存分配
动态内存分配 动态内存分配:即由程序员手动的进行内存空间的分配.内存空间的释放的内存管理操作 C++代码中,变量.数组等对象的创建,是由C++自动分配内存的,称之为(自动)静态内存分配 (自动)静态内 ...
- Flutter将视频或图文分享到抖音
如何在 Flutter 中分享视频到抖音 话不多说,先上效果: 原理 发布内容至抖音 H5 场景_移动/网站应用_抖音开放平台 (open-douyin.com) 本教程没有接入抖音原生 SDK 以及 ...
- 推荐一款轻量级 eBPF 前端工具 ply
1 Overview ply 是 eBPF 的 front-end 前端工具之一,专为 embedded Linux systems 开发,采用 C 语言编写,只需 libc 和内核支持 BPF 就可 ...
- iOS中RunLoop和线程的关系
RunLoop又叫运行循环,主要用来管理线程.一个线程对应一个RunLoop,一个RunLoop又有五种模式.只有主线程的RunLoop是默认开启的,所以程序在开启后,会一直运行,不会退出.其他线程的 ...