本文介紹:git
Azure IoT Hub 對MQTT的支持;github
使用MQTT 而不用Azure IoT Hub Device SDK 鏈接IoT Hub並雙向通信;api
使用Azure IoT Hub 的 Device SDK時,SDK封裝了常見的 設備到雲的消息,從雲端控制設備,設備孿生屬性等相關操做, 無需關注MQTT中的主題訂閱。服務器
IoT Hub必須使用TLS/SSL,所以IoT Hub不支持端口1883通信,默認採用8883。微信
IoT Hub 不是完整的MQTT 服務,並無支持MQTT 3.1.1規範中的全部行爲。工具
IoT Hub 的設備SDK默認使用 Qos 1與IoT Hub交換消息, CleanSession標誌默認爲0;post
SDK中的默認超時時間及其是否可配置:測試
語言 | 默認的 keep-alive 時間間隔 | 可配置性 |
---|---|---|
Node.js | 180 秒 | 否 |
Java | 230 秒 | 否 |
C | 240 秒 | 是 |
C# | 300 秒 | 是 |
Python | 60 秒 | 否 |
Azure IoT Hub 的特有限制:IoT 中心將服務器端最大超時限制爲 29.45 分鐘(1767 秒),可設置的客戶端最大 keep-alive 值爲 1767 / 1.5 = 1177
秒。 任何流量都將重置 keep-alive。 例如,成功的 SAS 令牌刷新會重置 keep-aliveui
本文參考:https://docs.microsoft.com/zh-cn/azure/iot-hub/iot-hub-mqtt-support雲計算
案例:使用MQTTX https://github.com/emqx/MQTTX 和 VS Code 測試Azure IoT Hub
下載並安裝MQTTX客戶端工具;
下載並安裝VS Code 及IoT Hub擴展(請參照文檔 https://www.51azure.cloud/post/2020/4/15/azure-iot-hub-1-prepare 中VS Code 部分);
1.點擊1添加按鈕;
2.名稱隨意輸入,此處表示鏈接的名稱,不重複便可。
3.ClientID 填寫 IoT Hub中Device ID:
4. 服務器地址爲 mqtts,後邊地址爲IoT Hub的主機名:
5.端口8883
6.用戶名
「用戶名」字段使用 {iothubhostname}/{device_id}/?api-version=2018-06-30
,其中 {iothubhostname}
是 IoT 中心的完整 CName。
例如,若是 IoT 中心的名稱爲 sean-iot-hub.azure-devices.net,設備的名稱爲 Device001,則完整「用戶名」字段應包含:
sean-iot-hub.azure-devices.net/Device001/?api-version=2018-06-30
7.密碼:
「密碼」字段使用 SAS 令牌。 對於 HTTPS 和 AMQP 協議,SAS 令牌的格式是相同的:
SharedAccessSignature sig={signature-string}&se={expiry}&sr={URL-encoded-resourceURI}
能夠在VS Code中生成 SAS 或經過Azure cli生成(https://docs.microsoft.com/zh-cn/cli/azure/ext/azure-iot/iot/hub?view=azure-cli-latest#ext-azure-iot-az-iot-hub-generate-sas-token)
在VS Code中,右鍵設備,生成sas,輸入sas有效期,便可在下方的output窗口中出現sas token。
8.SSL/TLS:true
9.證書類型:CA signed server
其他值保持默認便可。
成功創建鏈接後,設備能夠使用 devices/{device_id}/messages/events/
做爲主題名稱將消息發送到IoT Hub:
可在VS Code中 start monitoring built-in event endpoint 開始監控設備到雲的消息:
三.開始訂閱 從雲到設備的主題,接受雲端消息:
若要從 IoT 中心接收消息,設備應使用 devices/{device_id}/messages/devicebound/#
做爲 主題篩選器 來進行訂閱。
嘗試從 VS Code 發送 C2D的消息,選擇 send c2d message to device:
在上方輸入message內容並按回車:
MQTTX 客戶端接收到消息:
點擊可查閱本站文章目錄 《文章分類目錄》
本站全部內容僅表明我的觀點,如與官文檔衝突,請以官方文檔爲準。
可在本頁面下方留言或經過下方聯繫方式聯繫我:
微信:wxyusz;郵箱:shuzhen.yu@foxmail.com
歡迎關注公衆號「雲計算實戰」,接收最新文章推送。
本做品由Sean Yu 採用知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協議進行許可。
歡迎轉載、使用、從新發布,但務必保留文章連接:https://www.51azure.cloud,且不得用於商業目的。