为了和SDK升级保持协议一致,花了两天时间实现了用LUA开发,MQTT+HTTP方式实现远程升级
安装Apache主要是为了实现通过HTTP下载资源
升级介绍:
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" /******************************************** 上位机发送给设备平台的版本号和更新文件的位置(设备先记录下来) {"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
我就在我的云端电脑上安装,怎么把文件拷贝到云端就不说了
因为Apache需要C++的运行环境,所以先安装这个,根据自己的安装
然后解压出来,自己随意解压哈,然后修改个地方
根据自己的修改
好了,现在安装,进入到bin
// 安装apache服务
httpd.exe -k install
然后是启动
可以用命令
httpd.exe -k start
我不用这个命令了哈,我用另一个实现
双击
现在测试一下
输入自己的电脑的IP,默认访问80端口
其实是访问的这个
咱现在自己弄个文件,然后访问一下,为了避免意外情况
如果有文件夹
这样就可以用APP或者上位机用HTTP实现对文件的访问和下载了
具体如何用APP或者上位机用HTTP下载大家可先百度哈,,百度http 的get 或者 post ,先用get获取就可以,我先弄升级教程啦....
原文地址:https://www.cnblogs.com/yangfengwu/p/10674294.html
时间: 2024-10-27 19:07:56