ESA2GJK1DH1K安全篇: Wi-Fi 模块(8266)以SSL方式连接MQTT服务器
Posted yangfengwu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ESA2GJK1DH1K安全篇: Wi-Fi 模块(8266)以SSL方式连接MQTT服务器相关的知识,希望对你有一定的参考价值。
提示
看到这个立马伤心了!!!!
只能走普通的AT指令了
指令更改
1.首先发送: AT+CIPSEND=34
2.连接TCP: AT+CIPSTART="SSL","mnif.cn",8883
这样就以SSL方式连接上了MQTT服务器
然后通信的时候首先发送 AT+CIPSEND=xxxx
等到Wi-Fi模块返回 > 然后发送数据
这个大家应该都知道哈,咱一开始学习Wi-Fi模块的时候基本上都是用的这种指令
大家可能有疑惑
为什么不用导入证书呢??
答: 咱上一节配置MQTT的时候是配置的单向认证,而且是开启的认证服务器
就是说,设备端可以去判断连接的服务器是不是真实的服务器
就是说主动权在设备这里,
建立通信的时候服务器会发过来服务器的证书
我设备端完全可以忽略掉,就是说完全不管你证书
当前的Wi-Fi模块默认就是直接忽略掉
测试Wi-Fi模块的数据
Wi-Fi模块上传的数据全部加密!
程序修改细节说明1
1.说明
加入了数据缓存管理:详情请参见 https://www.cnblogs.com/yangfengwu/p/12228402.html
2.加入缓存的原因
因为每次发送数据变为了先发送
AT+CIPSEND=xxxx
等到Wi-Fi模块返回 >
然后发送数据
整个程序既要发送心跳包,又要发送温湿度,又要发送开关数据
加入了缓存管理以后,以上数据需要发送的时候直接插入到缓存里面
我定时从缓存里面取数据放到一个数组里面
然后发送 AT+CIPSEND=xxxx
等到Wi-Fi模块返回 >
然后把数组里面的数据发送出去
缓存处理思路详细说明
1.插入数据
1.1插入心跳包数据
1.2 插入开关状态
1.3 插入温湿度数据
2.定时提取数据
2.1 在1ms定时器中断里面每隔150ms判断提取一次数据
3.如果有数据需要发送
则先发送 AT+CIPSEND=xxxx
4.判断Wi-Fi模块如果返回 > 则,发送数据
程序修改细节说明2
1.现在数据返回的时候会返回 +IPD
为保证先前接收判断程序不做改动,剔除+IPD,接收真实的数据
补充细节
1.为什么不按照下面的方式判断接收到了 >
原因:
如果Wi-Fi模块 返回 > 的同时,Wi-Fi也接收到了服务器发来的(+IPD)数据....
那么 > 将会被剔除
以上是关于ESA2GJK1DH1K安全篇: Wi-Fi 模块(8266)以SSL方式连接MQTT服务器的主要内容,如果未能解决你的问题,请参考以下文章
ESA2GJK1DH1K安全篇: Android以SSL方式连接MQTT服务器
ESA2GJK1DH1K安全篇: 使用Wireshark监听MQTT上位机通信数据
ESA2GJK1DH1K升级篇: STM32远程乒乓升级,基于(Wi-Fi模块AT指令TCP透传方式),MQTT通信控制升级(含有数据校验)
ESA2GJK1DH1K升级篇: 测试STM32远程乒乓升级,基于(Wi-Fi模块AT指令TCP透传方式),MQTT通信控制升级
ESA2GJK1DH1K升级篇: STM32远程乒乓升级,基于Wi-Fi模块AT指令TCP透传方式,MQTT通信控制升级-BootLoader程序制作过程(V1.0)