6-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇-优化升级(安装Apache (Web服务器)软件,测试HTTP)

时间:2023-12-18 10:11:44

为了和SDK升级保持协议一致,花了两天时间实现了用LUA开发,MQTT+HTTP方式实现远程升级

安装Apache主要是为了实现通过HTTP下载资源

升级介绍:

0,用户点击检查更新时,APP首先通过MQTT获取硬件设备型号(主要解决的问题:多个设备问题,就是型号不一样的设备应该访问不同的文件,产品可能型号一样,如果用的传感器不一样,也必须下载不同的程序.所以一开始我想着让用户选择型号然后添加设备不能彻底解决问题,真正解决就写入型号到设备内部)

1,APP用HTTP访问云端的更新信息(根据设备型号获取对应的文件),文件中存储了当前版本,设备访问的升级文件地址,升级的内容

2,APP通过MQTT把信息(版本号,升级文件的位置)发给设备,设备对比版本号以后把信息通过MQTT发给APP

3,APP根据设备返回的信息判断是不是需要升级,如果需要,弹出一个对话框(设备的版本号,云端的版本号,更新的内容),如果不需要更新则提醒用户版本是最新

4,如果用户点击更新,APP通过MQTT发指令给设备,设备通过HTTP访问下载文件,更新进度通过MQTT发给APP

协议如下:

设备订阅的主题

"user/设备MAC地址"      列如:  "user/dc:4f:22:11:5d:33"

设备发布的主题

"device/设备MAC地址"    列如:  "device/dc:4f:22:11:5d:33"

//APP去掉型号选择,因为有可能产品型号一样,但是如果用的外设不是一家的,内部程序也可能不一样,型号默认写到
芯片的内部,以此再次修订协议

一,上位机获取设备型号
//获取设备型号
{"data","updata","cmd":"model"}

//设备回复
{"data","updata","status":"model","model":"wifi1"}//假设现在的型号是WIFI1

二,上位机根据型号http访问更新的信息
                                    "型号"
列如:"http://47.92.31.46/hardware/"+wifi1+"/"+"updatainfo.txt"

三,上位机把云平台的更新信息按照以下格式发给设备
/********************************************
上位机发送给设备平台的版本号和更新文件的位置(设备先记录下来)
{"data","updata","cmd":"info","version":"1.0.1","url":"http://47.92.31.46/hardware/wifi1"}

设备接收到信息对比版本号以后回复
{"data","updata","status":"unlike",version:XXXX} 或 {"data","updata","status":"alike",version:XXXX} //回复是不是和发给它的版号一致,并回复自己的版本号
*********************************************/

/**********************************
上位机发送给设备升级指令
{"data","updata","cmd":"start"}    

设备回复
{"data":"updata","status":"start"} //开始更新
**********************************/

更新过程中设备发送更新进度

{"data":"updata","status":"starting","percent":"百分比"} 百分比为数字 

更新完成设备发送
{"data":"updata","status":"finish"}

更新过程中的错误,设备发送
{"data":"updata","status":"error","code","-1"}//HTTP request failed
{"data":"updata","status":"error","code","-2"}//HTTP request data error

更新完成以后用新的版本号替换掉旧的版本号

注:
升级程序文件和关于升级的内容(内容里面含有版本号)放在云平台
APP或者wed或者上位机通过http获取关于升级的内容

设备通过http获取升级程序文件

大概了解就好,现在看怎么安装Apache

我就在我的云端电脑上安装,怎么把文件拷贝到云端就不说了

6-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇-优化升级(安装Apache (Web服务器)软件,测试HTTP)

因为Apache需要C++的运行环境,所以先安装这个,根据自己的安装

6-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇-优化升级(安装Apache (Web服务器)软件,测试HTTP)

然后解压出来,自己随意解压哈,然后修改个地方

6-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇-优化升级(安装Apache (Web服务器)软件,测试HTTP)

6-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇-优化升级(安装Apache (Web服务器)软件,测试HTTP)

根据自己的修改

6-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇-优化升级(安装Apache (Web服务器)软件,测试HTTP)

好了,现在安装,进入到bin

6-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇-优化升级(安装Apache (Web服务器)软件,测试HTTP)

// 安装apache服务

httpd.exe -k install

6-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇-优化升级(安装Apache (Web服务器)软件,测试HTTP)

然后是启动

可以用命令

httpd.exe -k start

我不用这个命令了哈,我用另一个实现

6-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇-优化升级(安装Apache (Web服务器)软件,测试HTTP)

双击

6-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇-优化升级(安装Apache (Web服务器)软件,测试HTTP)

6-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇-优化升级(安装Apache (Web服务器)软件,测试HTTP)

6-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇-优化升级(安装Apache (Web服务器)软件,测试HTTP)

6-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇-优化升级(安装Apache (Web服务器)软件,测试HTTP)

现在测试一下

输入自己的电脑的IP,默认访问80端口

6-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇-优化升级(安装Apache (Web服务器)软件,测试HTTP)

其实是访问的这个

6-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇-优化升级(安装Apache (Web服务器)软件,测试HTTP)

咱现在自己弄个文件,然后访问一下,为了避免意外情况

6-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇-优化升级(安装Apache (Web服务器)软件,测试HTTP)

6-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇-优化升级(安装Apache (Web服务器)软件,测试HTTP)

6-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇-优化升级(安装Apache (Web服务器)软件,测试HTTP)

如果有文件夹

6-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇-优化升级(安装Apache (Web服务器)软件,测试HTTP)

6-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇-优化升级(安装Apache (Web服务器)软件,测试HTTP)

这样就可以用APP或者上位机用HTTP实现对文件的访问和下载了

具体如何用APP或者上位机用HTTP下载大家可先百度哈,,百度http  的get 或者 post  ,先用get获取就可以,我先弄升级教程啦....