ESP8266基于Onenet云平台的SOTA升级详细流程介绍

本文详细介绍了基于ESP8266利用Onenet云平台进行固件SOTA升级的过程,包括获取Token、分片下载、校验文件、设置升级标志位和运行新固件等步骤。在实际操作中,需处理网络连接中断、数据校验等问题,以确保升级成功。测试显示,升级360KB文件平均耗时约100秒。
摘要由CSDN通过智能技术生成

在上一篇《OneNet 里 SOTA升级体验 (基于 ESP8266)》中已经将核心步骤给大家一一讲解了一遍,这篇我们就说下实际操作中的细节。

首先我们看下升级步骤:

  • 获取 Token
  • 分片下载文件
  • 校验下载文件是否正确
  • 设置标志位调用系统函数来运行新的固件

第一步比较简单,参考上一篇就知道怎么操作了,还有一些初始化动作:

  • 设置升级标志位:system_upgrade_flag_set(UPGRADE_FLAG_START);
  • 初始化MD5:MD5Init(md5);

第二步比较麻烦,我的做法是先malloc一个4K动态缓存,然后每次请求 1KB 数据(ESP8266的最大一帧是有限制,好像是1460字节);

当请求到4KB后将它整体写入到flash中,还有一步计算 MD5 (调用 MD5_Update() 函数) 别忘记了;

如何判断最后一帧呢?有两种可能性:

  1. 最后一帧不是 1024 的整数倍
  2. 最后一帧是 1024 整数倍

请求到最后一个一帧后需要注意的是4kb缓存可能没有满,这个时候需要计算实际长度的校验和写入实际长度的数据,否则最后计算出来的 md5 会不一致;

在实际操作中,我们会发现从第一次连接上到每次请求到98K的时候会被服务器 Close 掉,遇到这种情况一定要重新连接并从断开地方继续下载(不需要重新获取Token,直接用之前的token去获取下一帧数据即可);

实际测试下载 360 KB 文件,最理想情况下耗时 90s,最坏可能要 300s,平均 100 多秒。

第三步就是调用 MD5_Final()

### 回答1: 要实现STM32与ESP8266连接OneNet云平台,可以按照以下步骤进行: 1. 首先,硬件上需要准备好STM32和ESP8266模块。将STM32与ESP8266通过串口进行连接,确保两者之间能够进行通信。 2. 在OneNet云平台上创建一个新的设备,获取该设备的产品ID和设备ID。这将用于与OneNet云平台进行通信。 3. 在STM32上编写程序,实现STM32与ESP8266之间的串口通信。使用STM32的串口库函数,通过串口与ESP8266进行数据的发送和接收。 4. 在STM32的程序中,构建符合OneNet云平台要求的数据包,并通过ESP8266发送到OneNet云平台。可以使用HTTP或MQTT协议进行数据传输。具体的协议细节可以参考OneNet云平台提供的通信接口文档。 5. 在ESP8266上编写程序,实现与OneNet云平台的通信。根据OneNet云平台提供的API文档,使用ESP8266连接到OneNet云平台,并将从STM32接收到的数据上传到OneNet云平台。 6. 在OneNet云平台上配置相应的数据流和数据点,以便接收和展示从STM32和ESP8266发送过来的数据。 7. 在STM32程序中,可以考虑加入循环发送数据的功能,以实现实时监测和控制。 8. 调试完成后,上传STM32和ESP8266的程序到对应的硬件上,使其能够连接OneNet云平台。 通过以上步骤,就可以实现STM32与ESP8266连接OneNet云平台的程序。 ### 回答2: 要实现STM32与ESP8266连接到OneNet云平台,需要以下步骤: 1. 确保STM32开发板和ESP8266模块都正常工作,并且都有串口通信功能。 2. 在OneNet平台上创建设备和数据流,并获取到设备ID和API Key。 3. 在STM32开发环境中,配置串口通信和WiFi模块。 4. 在STM32中,使用串口与ESP8266模块进行通信。可以使用AT指令控制ESP8266,将其设置为STA(Station)模式并连接到WiFi网络。 5. 在STM32中,使用串口与ESP8266模块进行HTTP通信。可以使用AT指令发送HTTP请求,并将设备数据上传到OneNet云平台。 6. 在STM32中,解析ESP8266返回的HTTP响应,并根据需要进行相应的处理。 7. 在STM32中,根据需要,可以设置定时器来定期上传数据到OneNet云平台。 8. 在STM32中,可以通过解析OneNet云平台的HTTP响应,获取云平台发送的命令,并根据命令来执行相应的操作。 最后,通过以上步骤,就可以实现STM32与ESP8266连接到OneNet云平台并实现数据的上传和命令的执行。 ### 回答3: 要将STM32和ESP8266连接到OneNet云平台,需要进行以下步骤: 1. 准备硬件: - STM32单片机开发板 - ESP8266 WiFi模块 - 连接线等 2. 在OneNet云平台上创建设备和数据流: - 登录OneNet云平台账号 - 创建一个设备,并为设备添加相应的数据流,用于接收和发送数据 3. 配置ESP8266模块: - 将ESP8266与STM32开发板连接,确保串口通信正常 - 在ESP8266上烧录相关固件,如AT指令固件,可以使用串口助手通过AT指令测试ESP8266的连接和通信功能 4. 编写STM32程序: - 使用适当的开发环境,如Keil或STM32CubeIDE等,创建STM32项目 - 引入相应的库文件,如串口库、网络库等 - 初始化串口和网络连接 - 通过串口与ESP8266进行通信,发送AT指令以连接WiFi,获取IP地址 - 使用HTTP或MQTT等协议,将数据发送到OneNet云平台的设备数据流中 5. 测试连接和通信: - 将STM32开发板上电,并观察串口输出,确保模块正常连接WiFi - 向STM32发送指令来触发数据的传输 - 在OneNet云平台上监控数据流,验证数据是否成功接收和处理 总结一下,连接STM32和ESP8266OneNet云平台的关键是通过ESP8266模块建立WiFi连接,然后通过STM32与ESP8266进行串口通信,将数据发送到OneNet云平台的设备数据流中。这样就可以实现STM32与OneNet云平台的数据传输和通信。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值