ESA2GJK1DH1K安全篇: Wi-Fi 模組(8266)以SSL方式連接MQTT伺服器

  • 2020 年 2 月 17 日
  • 筆記

提示

  看到這個立馬傷心了!!!!

  只能走普通的AT指令了

指令更改

  1.首先發送:  AT+CIPSEND=34rn

  2.連接TCP:  AT+CIPSTART="SSL","mnif.cn",8883rn

    這樣就以SSL方式連接上了MQTT伺服器

  然後通訊的時候首先發送  AT+CIPSEND=xxxxrn

  等到Wi-Fi模組返回 > 然後發送數據

  這個大家應該都知道哈,咱一開始學習Wi-Fi模組的時候基本上都是用的這種指令

大家可能有疑惑

  為什麼不用導入證書呢??

  答: 咱上一節配置MQTT的時候是配置的單向認證,而且是開啟的認證伺服器

  就是說,設備端可以去判斷連接的伺服器是不是真實的伺服器

  就是說主動權在設備這裡,

  建立通訊的時候伺服器會發過來伺服器的證書

  我設備端完全可以忽略掉,就是說完全不管你證書

  當前的Wi-Fi模組默認就是直接忽略掉

測試Wi-Fi模組的數據

  Wi-Fi模組上傳的數據全部加密!

程式修改細節說明1

  1.說明

  加入了數據快取管理:詳情請參見  https://www.cnblogs.com/yangfengwu/p/12228402.html

  2.加入快取的原因

  因為每次發送數據變為了先發送

  AT+CIPSEND=xxxxrn

  等到Wi-Fi模組返回 >

  然後發送數據

  整個程式既要發送心跳包,又要發送溫濕度,又要發送開關數據

  加入了快取管理以後,以上數據需要發送的時候直接插入到快取裡面

  我定時從快取裡面取數據放到一個數組裡面

  然後發送 AT+CIPSEND=xxxxrn

  等到Wi-Fi模組返回 >

  然後把數組裡面的數據發送出去

快取處理思路詳細說明

  1.插入數據

  1.1插入心跳包數據

  1.2 插入開關狀態

  1.3 插入溫濕度數據

  2.定時提取數據

    2.1 在1ms定時器中斷裡面每隔150ms判斷提取一次數據

  3.如果有數據需要發送

  則先發送 AT+CIPSEND=xxxxrn

  4.判斷Wi-Fi模組如果返回 > 則,發送數據

程式修改細節說明2

  1.現在數據返回的時候會返回 +IPD

  為保證先前接收判斷程式不做改動,剔除+IPD,接收真實的數據

補充細節

  1.為什麼不按照下面的方式判斷接收到了 >

  原因:

    如果Wi-Fi模組 返回 > 的同時,Wi-Fi也接收到了伺服器發來的(+IPD)數據….

    那麼 > 將會被剔除