6-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇-优化升级(安装Apache (Web服务器)软件,测试HTTP)
为了和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
我就在我的云端电脑上安装,怎么把文件拷贝到云端就不说了

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

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


根据自己的修改

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

// 安装apache服务
httpd.exe -k install

然后是启动
可以用命令
httpd.exe -k start
我不用这个命令了哈,我用另一个实现

双击




现在测试一下
输入自己的电脑的IP,默认访问80端口

其实是访问的这个

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



如果有文件夹


这样就可以用APP或者上位机用HTTP实现对文件的访问和下载了
具体如何用APP或者上位机用HTTP下载大家可先百度哈,,百度http 的get 或者 post ,先用get获取就可以,我先弄升级教程啦....
6-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇-优化升级(安装Apache (Web服务器)软件,测试HTTP)的更多相关文章
- 4-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案安全篇(为域名申请SSl证书)
3-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案安全篇(购买域名,域名绑定IP) 然后就是等着..... 假设可以了 咱呢是配置MQTT实现SSL安全加密通信,所以 ...
- 3-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案安全篇(购买域名,域名绑定IP)
2-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案安全篇(监听Wi-Fi和APP的数据) 因为安全连接是和域名绑在一块的,所以需要申请域名 有没有不知道域名是什么的, ...
- 2-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案安全篇(监听Wi-Fi和APP的数据)
1-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案安全篇(来看一下怎么样监听网络数据,监听电脑上位机软件的数据) 因为那个软件只能监听咱自己电脑上的数据,所以咱就用电 ...
- 1-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案安全篇(来看一下怎么样监听网络数据,监听电脑上位机软件的数据)
首先安装网络监听软件 运行这个软件 这个软件安装到电脑上,默认是监听咱电脑上的网络通信 咱们先监听电脑的软件的网络通信数据,然后再说怎么监听Wi-Fi和APP的软件的网络通信数据 咱就监听咱基础篇的 ...
- 4-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案数据篇(云端电脑(Windows)安装配置数据库,使用本地Navicat for MySQL和手机APP 远程连接测试)
3-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案数据篇(安装配置数据库,使用Navicat for MySQL和手机APP 连接测试) 根据前面的教程把软件复制到云 ...
- 3-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案数据篇(安装配置数据库,使用Navicat for MySQL和手机APP 连接测试)
2-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案数据篇(数据库简单说明) https://www.mysql.com/ 咱用安装版的 我把自己下载的放在了这里 现在 ...
- 2-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案数据篇(数据库简单说明)
1-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案数据篇(视频总揽) 这里有个教程 http://www.cnblogs.com/best/p/6517755.h ...
- 1-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案数据篇(视频总揽和功能演示)
主要实现的功能 其它视频和资料稍候再补充上 我先写后面的文章 2-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案数据篇(安装数据库,数据库简单说明)
- 5-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案安全篇(配置MQTT的SSL证书,验证安全通信)
4-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案安全篇(为域名申请SSl证书) 前面的准备工作终于完了 复制这两个证书 放到云端MQTT的这个位置,其实放哪里都可以 ...
- 5-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案数据篇(配置保存数据的数据库)
配置信息如下:这是我的python软件和APP软件默认连接的配置 数据库名称:iot 编码utf8 表格名字:historicaldata 字段 id 自增,主键 date ...
随机推荐
- 聊聊 scala 的模式匹配
一. scala 模式匹配(pattern matching) pattern matching 可以说是 scala 中十分强大的一个语言特性,当然这不是 scala 独有的,但这不妨碍它成为 sc ...
- [ Java面试题 ]框架篇二
1.Hibernate工作原理及为什么要使用Hibernate? 工作原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory 3.打开Session 4.创建事务Tr ...
- Java提高班(六)反射和动态代理(JDK Proxy和Cglib)
反射和动态代理放有一定的相关性,但单纯的说动态代理是由反射机制实现的,其实是不够全面不准确的,动态代理是一种功能行为,而它的实现方法有很多.要怎么理解以上这句话,请看下文. 一.反射 反射机制是 Ja ...
- 消息队列_MSMQ(1)简单了解
MSMQ (微软消息队列) MSMQ 百度百科 MicroSoft Message Queuing(微软消息队列)是在多个不同的应用之间实现相互通信的一种异步传输模式,相互通信的应用可以分布于同一 ...
- linux下tomcat启动很慢的解决办法
1.用vim编辑器打开tomcat的bin目录下的catalina.sh [root@iz09a32x1sghz3z bin]# vi /usr/local/src/java/tomcats/tomc ...
- HTML和CSS在IE7中常见的兼容性问题
IE7及以下版本都会有这些问题 1.IE7块转内联块问题 问题描述:好像块转内联块失败,依然不在一行排列 解决办法:给元素添加如下css *display:inline;*zoom:1; *di ...
- Vue.js如何在一个页面调用另一个同级页面的方法
使用场景: 页面分为header.home.footer三部分,需要在home中调用header中的方法,这两个没有相互引入 官方给出方法: 需要在展示页里调用顶部导航栏页里的方法,两者之间没有引用关 ...
- Vue脚手架搭建项目
全局安装vue脚手架 $ npm install -g vue-cli 卸载方法 $ npm uninstall -g vue-cli 查看vue版本(注意:大写的V) $ vue -V 创建项目 $ ...
- 谷歌AI涉足艺术、太空、外科手术,再强调AI七原则
谷歌AI涉足艺术.太空.外科手术,再强调AI七原则 https://mp.weixin.qq.com/s/MJG_SvKCEBKRvL3IWpL0bA 9月18日上午,Google在上海的2018世界 ...
- Approval Process 在 Apex 中的使用
Approval Process(批准过程)简介 批准过程是一个复杂的业务过程.详细的内容可以参考官方文档. 英文版 中文版 官方trailhead模块 在Apex中调用Approval Proces ...