前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ESA2GJK1DH1K安全篇: Wi-Fi 模块(8266)以SSL方式连接MQTT服务器

ESA2GJK1DH1K安全篇: Wi-Fi 模块(8266)以SSL方式连接MQTT服务器

作者头像
杨奉武
发布2020-02-17 08:11:57
9070
发布2020-02-17 08:11:57
举报
文章被收录于专栏:知识分享知识分享

提示

  看到这个立马伤心了!!!!

  只能走普通的AT指令了

指令更改

\

  1.首先发送:  AT+CIPSEND=34\r\n

  2.连接TCP:  AT+CIPSTART="SSL","mnif.cn",8883\r\n

    这样就以SSL方式连接上了MQTT服务器

  然后通信的时候首先发送  AT+CIPSEND=xxxx\r\n

  等到Wi-Fi模块返回 > 然后发送数据

  这个大家应该都知道哈,咱一开始学习Wi-Fi模块的时候基本上都是用的这种指令

大家可能有疑惑

  为什么不用导入证书呢??

  答: 咱上一节配置MQTT的时候是配置的单向认证,而且是开启的认证服务器

  就是说,设备端可以去判断连接的服务器是不是真实的服务器

  就是说主动权在设备这里,

  建立通信的时候服务器会发过来服务器的证书

  我设备端完全可以忽略掉,就是说完全不管你证书

  当前的Wi-Fi模块默认就是直接忽略掉

测试Wi-Fi模块的数据

  Wi-Fi模块上传的数据全部加密!

程序修改细节说明1

  1.说明

  加入了数据缓存管理:详情请参见  https://cloud.tencent.com/developer/article/1583664

  2.加入缓存的原因

  因为每次发送数据变为了先发送

  AT+CIPSEND=xxxx\r\n

  等到Wi-Fi模块返回 >

  然后发送数据

  整个程序既要发送心跳包,又要发送温湿度,又要发送开关数据

  加入了缓存管理以后,以上数据需要发送的时候直接插入到缓存里面

  我定时从缓存里面取数据放到一个数组里面

  然后发送 AT+CIPSEND=xxxx\r\n

  等到Wi-Fi模块返回 >

  然后把数组里面的数据发送出去

缓存处理思路详细说明

  1.插入数据

  1.1插入心跳包数据

  1.2 插入开关状态

  1.3 插入温湿度数据

  2.定时提取数据

    2.1 在1ms定时器中断里面每隔150ms判断提取一次数据

  3.如果有数据需要发送

  则先发送 AT+CIPSEND=xxxx\r\n

  4.判断Wi-Fi模块如果返回 > 则,发送数据

程序修改细节说明2

  1.现在数据返回的时候会返回 +IPD

  为保证先前接收判断程序不做改动,剔除+IPD,接收真实的数据

补充细节

  1.为什么不按照下面的方式判断接收到了 >

  原因:

    如果Wi-Fi模块 返回 > 的同时,Wi-Fi也接收到了服务器发来的(+IPD)数据....

    那么 > 将会被剔除

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-02-09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 提示
  • 指令更改
  • 大家可能有疑惑
  • 测试Wi-Fi模块的数据
  • 程序修改细节说明1
  • 缓存处理思路详细说明
  • 程序修改细节说明2
  • 补充细节
相关产品与服务
SSL 证书
腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档