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)數據….
那麼 > 將會被剔除
