zoukankan      html  css  js  c++  java
  • ESA2GJK1DH1K安全篇: Wi-Fi 模块(8266)以SSL方式连接MQTT服务器(V0.1)

    提示

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

      只能走普通的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)数据....

        那么 > 将会被剔除

        

        

  • 相关阅读:
    BNUOJ 12756 Social Holidaying(二分匹配)
    HDU 1114 Piggy-Bank(完全背包)
    HDU 2844 Coins (多重背包)
    HDU 2602 Bone Collector(01背包)
    HDU 1171 Big Event in HDU(01背包)
    HDU 2571 命运 (入门dp)
    HDU 1069 Monkey and Banana(最长递减子序列)
    HDU 1160 FatMouse's Speed (最长上升子序列)
    HDU 2594 KMP
    POJ 3783 Balls --扔鸡蛋问题 经典DP
  • 原文地址:https://www.cnblogs.com/yangfengwu/p/12285919.html
Copyright © 2011-2022 走看看