一. 前言
大家都知道國內的很多物聯網平臺都開放MQTT對接,作爲主流的物聯網數據傳輸協議,那國外的呢?所以我這邊就挑選一個國外的平臺來做演示,今天選中的是微軟 IOT平臺(Azure IOT)。
二. 前期準備工作
此次測試呢大量的工作是在準備工作上,對於沒有經驗的朋友的話可能會花費大量時間,數據測試部分呢就是幾條指令的問題,所以下面的流程比較繁瑣一些,大家可以耐心看。
2.1硬件準備
- nodeMCU開發板
- usb轉ttl的調試工具
- 母頭杜邦線X4
- Micro-USB數據線
2.2燒錄固件
這裏我們可以直接購買安信可這邊已經燒錄好的開發板,也可以拿來自己手動燒錄,過程比較簡單,直接用modeMCU接上USB線插入電腦端進行燒錄,燒錄可以參考鏈接中的教程——燒錄教程
2.2接線以及測試
接線部分我們參照固件的說明,需要用IO13和IO15來做AT串口調試,所以我們先參照開發板原理圖來找出IO13和IO15對應的腳位爲D7和D8,對應關係參考下表:
NodeMcu | USB轉TTL工具 |
---|---|
D7 | TXD |
D8 | RXD |
3.3V | VCC |
GND | GND |
接下來PC端我們下載一個串口調試助手,配置爲如下界面,發送一條復位指令來確保串口和開發板已經聯通,如下圖操作:
2.3軟件準備
這裏的軟件準備的話全程不需要大家編寫代碼,主要是創建產品以及利用插件生成密碼等操作,需要準備圖如下四個參數:
- ClientID
- 用戶名
- 密碼
- IoT 中心名稱
第一步:申請微軟 Azure IoT 雲的賬號。點擊入口,(在這裏插播一句,Microsofit Azure的話有兩個門戶,在這裏我們選擇由世紀互聯運營的Azure,微軟的那個需要規定的信用卡等繁瑣驗證,不便調試):
申請門戶賬號,這個門戶帳號有個1元試用包,點擊申請試用後按照提示和要求一步一步進行手機驗證,身份驗證,創建賬號等操作。
第二步驟:登錄以及創建
創建物聯網IOT中心:創建資源——物聯網——IOT中心
選擇我的資源組——命名IOT中心名稱——創建
點擊直到創建部署成功以後點擊所有資源組查看創建的IOT中心,點擊進入創建IOT設備
創建資源——所有資源——IOT設備——新建
命名設備ID——保存
好了,到這裏我們已經成功創建了IOT中心以及設備,接下來就需要準備(ClientID,用戶名,密碼,IoT 中心名稱)的這些參數了;
在準備之前我們先參考下官方文檔的說明,其中除了密碼其他參數都可以直接在IOT中心獲取,同時我們文檔中也說明了測試可以直接Visual Studio Code 使用來生成SAS密鑰作爲密鑰
使用 MQTT 協議與 IoT 中心通信直接下拉到設備連接部分(如下圖所示)**
使用Visual Studio Code來生成SAS密鑰
點擊下載安裝的Visual Studio Code中有微軟封裝好的Azure IoT Tools,安裝以後可以直接點擊登陸賬號即可詳細安裝的步驟可以查看Visual Studio Code;
安裝的好了之後打開是這樣的,這裏有個特別的操作需要注意,就是如果你的網絡不能連接到外網的話就需要更改節點,不然無法連接到帳號,具體的操作如下圖所示
設置——sttings——先擇中國代理
打開目錄——IOT中心集線器——展開選擇設備——右鍵先擇生成SAS Token——對話框中輸入生效時間——回車鍵結束(此時輸出框內出現了SAS密鑰,可以複製使用)
三. MQTT通信指令
打開串口調試助手輸入如下指令,逐條執行
AT+RESTORE
AT+CWMODE=1
AT+CWJAP=“miot_default”,“123456789x”
AT+MQTTUSERCFG=0,2,“NULL”,“NULL”,“NULL”,0,0,""
AT+MQTTCLIENTID=0,“textAA”
AT+MQTTUSERNAME=0,“ESP-AT.azure-devices.cn/textAA/?api-version=2018-06-30”
AT+MQTTPASSWORD=0,“SharedAccessSignature sr=ESP-AT.azure-devices.cn%2Fdevices%2FtextAA&sig=88WncjxEI7J5Re%2BjoQChNHjOHpWBRHLDxjfpf6IzZWs%3D&se=1943215841”
AT+MQTTCONN=0,“ESP-AT.azure-devices.cn”,8883,1
AT+MQTTSUB=0,“devices/textAA/messages/devicebound/#”,1
AT+MQTTPUB=0,“devices/textAA/messages/events/”,“hello”,1,0
說明:
- AT+RESTORE(深度復位,清除參數)
- AT+CWMODE=1(模塊進入STA模式)
- AT+CWJAP=“ID”,“密碼”(路由器名稱及密碼)
- AT+MQTTUSERCFG=0,2,“NULL”,“NULL”,“NULL”,0,0,""(參數2表示使用TLS)
- AT+MQTTCLIENTID=0,“設備名稱”
- AT+MQTTUSERNAME=0,“IOT中心完整名稱/設備名稱/?api-version=2018-06-30”
- AT+MQTTPASSWORD=0,“生成的SAS密鑰”
- AT+MQTTCONN=0,“IOT中心完整名稱”,8883,1
- AT+MQTTSUB=0,“devices/設備名稱/messages/devicebound/#”,1
- AT+MQTTPUB=0,“devices/設備名稱/messages/events/”,“想發送的數據”,1,0
詳細的指令功能說明可以參考如下文檔
ESP-AT 系列: AT+MQTT 使用
四. MQTT通信測試效果
IOT中心操作(數據下發)
儀表盤——IOT中心——設備——發送到設備的消息——對話框中寫入數據——發送消息
設備端接收雲消息
設備到雲的消息查看
五.總結
以上就是我們使用MQTT的AT快速對接微軟雲的全部過程了,這種連接使用的是TLS的密鑰連接,沒有證書認證,過程比較繁瑣,此外如果想要看到節點上報的數據內容的話還需要自己搭建節點路由和雲到設備等操作,有興趣的朋友可以自己參考IOT中心文檔來完成。