说明 为了是通信安全,修改Android 和 单片机程序,以SSL的方式连接MQTT 程序说明(Android) 1.程序在以前的基础上做了些修改,详细修改如下: 2.端口号改为 8883 (域名,用户名,密码根据自己的修改) <ignore_js_op>
3.增加代码如下 <ignore_js_op>
① 证书验证回调(直接返回true) ② 开启SSL 4.连接方式修改为:SSL <ignore_js_op>
修改说明(单片机) 1.提示 <ignore_js_op>
连接指令: "AT CIPSTART="SSL","%s",%srn",IP,Por
使用上面的 AT CIPSTART指令连接TCP以后发送和接收数据是如下方式
1.发送数据,假设发送66个数据
1.1 首先发送 AT CIPSEND=66rn 66:为要发送的数据个数
1.2 等待模块返回 >
1.3 发送要发送的数据给模块
1.4 模块返回 Recv 66 bytes
1.5 模块发送完成返回 SEND OK
2.接收数据
2.1 接收数据格式: IPD,XXXX:真实数据 XXXX 为接收的数据个数
3.意外断开
3.1 和TCP服务器断开:CLOSEDrn
3.1 和路由器断开:WIFI DISCONNECTrn
2.端口号改为 8883 (域名/IP,用户名,密码根据自己的修改) <ignore_js_op>
3.修改连接指令 <ignore_js_op>
4.连接MQTT,先打包发送 AT CIPSEND=XXX,等待收到> ,执行下一条 <ignore_js_op>
<ignore_js_op>
5.发送MQTT连接协议 <ignore_js_op>
<ignore_js_op>
6.有数据需要发送先发送AT CIPSEND=XXXX
设置下接收超时3S,接收超时变量清零以后再发送实际的数据
发送实际的数据以后设置个发送超时,发送数据超时变量清零以后又重新开始
<ignore_js_op>
7.串口中断函数里面收到 > 清零接收超时
收到SEND OK 清零发送超时
<ignore_js_op>
提示:
所有的超时时间变量如果大于0 ,在定时器里面每1Ms隔减一,
如果在发送完AT CIPSEND=XXXX ,超出了设定时间没有返回 >
会执行发送真实数据.
如果在发送完真实数据以后,超出了设定时间没有返回 SEND OK
会执行AT CIPSEND=XXXX发送下一条数据
8.接收数据格式: IPD,XXXX:真实数据
程序判断是否接收到 IPD,XXXX:真实数据
如果是这种数据,剔除 IPD,XXXX:
然后清零串口接收,让串口只接收真实数据
<ignore_js_op>
测试(功能和以前一样但是内部为SSL通信)
1.打开APP,点击右上角菜单,选择添加设备 "APUConfig"
2.手机连接自家的路由器,输入自家路由器密码
3.长按开发板上面的 pb5引脚大约3S 直至图示上面的指示灯快闪
4.点击 APP 绑定设备按钮 开始绑定设备
5.绑定成功以后,自动跳转到主页面,并添加了一个设备 设备显示的信息为ESP8266的MAC地址信息
6.点击设备进入设备控制页面
7.控制继电器吸合
8.控制继电器断开