在上一篇文章《通過MQTT協定與阿裡雲物聯網套件進行雲端通信》中,我們介紹了通過MQTT對接阿裡雲的物聯網套件。其實同樣的代碼,稍加調整也可以對接到微軟AzureIoT 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工具,可以看到資料已經上傳了。
同樣我們也可以向裝置發送資料,發送完畢後,我們發現裝置上的繼電器燈被點亮或關閉。
相關的硬體如下: