在上一篇文章《通過MQTT協議與阿里雲物聯網套件進行雲端通信》中,我們介紹了通過MQTT對接阿里雲的物聯網套件。其實同樣的代碼,稍加調整也可以對接到微軟Azure IoT hub上,不過需要注意的是,設備的認證機制是不一樣的。
我們在《通過HTTP協議與微軟Azure IoT hub進行雲端通信》中,已經介紹了如何在微軟Azure中創建設備,所以本篇文章不再贅述,需要的了解的網友可以看相關鏈接的文章內容。
微軟MQTT服務器的默認端口是8883,在連接的時候,其設備名就是設備ID,用戶名域名+設備ID,密碼是toKen。簡單期間這個toKen可以用DevcieExplorer Twin工具創建,但是這個是有時間期限的,過期就不能使用了。
在實際項目中,這種方式肯定不行,需要我們根據需要動態生成toKen,相關代碼如下:
微軟和阿里一樣,微軟也有默認的topic。
數據發布:"devices/" + DeviceId + "/messages/events/"
消息訂閱:"devices/" + DeviceId + "/messages/devicebound/#";
方法訂閱:$iothub/methods/POST/#
同樣除了自行編寫代碼外,為了便於各種傳感器和智能模塊的接入,我們還采用了YFIOs組態的方式去連接微軟Azure IoT hub,這樣無需編程,就可以快速和雲端進行雙向通信了。
第一步:添加智能設備
添加設備的同時,IO變量會自動創建。
第二步:添加系統策略:微軟雲MQTT客戶端
填寫必要的參數,勾選需要上傳到雲端的IO變量。
第三步:部署運行
運行后,我們打開DevcieExplorer Twin工具,可以看到數據已經上傳了。
同樣我們也可以向設備發送數據,發送完畢后,我們發現設備上的繼電器燈被點亮或關閉。