• 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)数据....

        那么 > 将会被剔除

        

        

  • 相关阅读:
    DFS and BFS
    278. First Bad Version
    67. Add Binary
    Luogu3426 [POI2005]SZA-Template (KMP)(未完成)
    Luogu2375 [NOI2014]动物园 (KMP)
    Luogu3435 [POI2006]OKR-Periods of Words (KMP)
    Luogu4391 [BOI2009]Radio Transmission 无线传输 (KMP)
    Luogu2922 [USACO08DEC]秘密消息Secret Message (Trie树)
    Luogu2580 于是他错误的点名开始了 (Trie树)
    Luogu3375 【模板】KMP字符串匹配
  • 原文地址:https://www.cnblogs.com/yangfengwu/p/12285919.html
Copyright © 2020-2023  润新知