使用MQTT 鏈接Azure IoT Hub

本文介紹: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 部分);

一. 在MQTTX中鏈接Azure IoT Hub:

 

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,且不得用於商業目的。

相關文章
相關標籤/搜索