全部產品
Search
文件中心

IoT Platform:使用MQTT.fx接入物聯網平台

更新時間:Jun 30, 2024

MQTT.fx是一個多平台的MQTT協議用戶端,本文以Windows系統為例,介紹使用MQTT.fx類比物聯網裝置接入阿里雲物聯網平台,並體驗物聯網平台的核心功能。

前提條件

  • 已建立產品和裝置,並擷取MQTT串連參數。具體操作,請參見建立產品與裝置擷取MQTT簽名參數值

    本樣本擷取的裝置認證和MQTT串連參數值如下表,參數詳細說明,請參見MQTT-TLS串連通訊

    參數

    ProductKey

    a1***

    DeviceName

    device1

    DeviceSecret

    f35***d9e

    clientId

    a1***.device1|securemode=2,signmethod=hmacsha256,timestamp=2524608000000|

    username

    device1&a1***

    passwd

    86761***21d

    mqttHostUrl

    a1***.iot-as-mqtt.cn-shanghai.aliyuncs.com

    port

    1883

  • 已定義物模型屬性,用於測試裝置使用物模型通訊Topic進行上下通訊。具體操作,請參見為產品定義物模型

    本樣本定義物模型如下圖所示:物模型

重要

MQTT.fx類比的線上裝置,僅支援非透傳訊息通訊。如需實現透傳資訊通訊,您可以使用真實裝置或SDK進行測試。

配置MQTT.fx接入

  1. 下載並安裝MQTT.fx軟體。MQTT.fx軟體安裝和使用說明,請參見MQTT.fx

    本文操作以mqttfx-5.2.0-windows-x64版本為例示範具體操作。由於第三方軟體不定期更新,建議您以實際頁面為準。

    說明

    使用MQTT.fx工具所需的License,請自行申請。

  2. 開啟MQTT.fx軟體,單擊功能表列中的Extras,選擇Edit Connection Profiles

    Edit Connection Profiles

  3. Edit Connection Profiles頁面,完成以下參數的設定。

    1. 設定基本資料。

      參數

      說明

      Profile Name

      輸入您的自訂名稱iot connection

      Profile Type

      MQTT伺服器串連,選擇MQTT Broker

      Broker Address

      MQTT接入網域名稱,對應《前提條件》中已擷取的mqttHostUrl值:a1***.iot-as-mqtt.cn-shanghai.aliyuncs.com

      • a1***為本樣本產品的ProductKey

      • cn-shanghai為本樣本所在地區。

      此處僅輸入欄位名,無需攜帶連接埠號碼。

      Broker Port

      設定為1883

      Client ID

      MQTT的協議欄位。

      固定格式:${ClientId}|securemode=${Mode},signmethod=${SignMethod}|timestamp=${timestamp}|

      輸入《前提條件》中已擷取的clientId值:a1***.device1|securemode=2,signmethod=hmacsha256,timestamp=2524608000000|

      參數說明:

      • ${ClientId}:裝置、App或Web等情境下的Client ID資訊。

        重要

        該值需自訂,長度在64個字元以內。若為裝置的ID資訊,建議使用您裝置的MAC地址或SN碼,方便您識別區分不同的裝置。

      • ${Mode}:安全模式。可選值有2(TLS直連模式,需要設定SSL/TLS資訊)和3(TCP直連模式,無需設定SSL/TLS資訊)。

      • ${SignMethod}:演算法類型,支援hmacsha256hmacmd5hmacsha1

      • ${timestamp}:表示目前時間毫秒值,可以不傳遞timestamp

      物聯網平台提供的串連參數中${ClientId}預設為${ProductKey} + '.' + ${DeviceName}組成的字串,${Mode}預設為2${SignMethod}預設為hmacsha256,您可根據需要修改。

      重要
      • MQTT.fx的Client ID和裝置的${ClientId},切勿混淆。

      • 不要遺漏參數之間及最後的豎線(|)。

      • 設定參數時,請確保參數值中或參數值的前後均沒有空格。

      • 輸入Client ID資訊後,請勿單擊Generate

      General

      本樣本使用預設值。您也可以根據實際情境需求設定。

    2. 單擊User Credentials,選中Use Username/Password複選框,設定User NamePassword

      設定mqtt.fx的User Credentials

      參數

      參數說明

      User Name

      由裝置名稱DeviceName、and(&)和產品ProductKey組成,固定格式為${DeviceName}&${ProductKey}

      輸入《前提條件》中已擷取的username值:device1&a1***

      • device1為裝置的DeviceName

      • a1***為裝置的ProductKey

      Password

      通過選擇的加密方法,以裝置的DeviceSecret為密鑰,將參數和參數值拼接後,加密產生Password。

      輸入《前提條件》中已擷取的passwd值:86761***21d

      重要
      • 如果您使用的MQTT.fx版本,在粘貼Password後不顯示具體的字串,只要游標已從輸入框的前部移至了後部,則表示粘貼成功,請勿重複粘貼。

      • 請注意參數和參數值中字母的大小寫。

      • 若您設定Client ID時,修改了已擷取值中的${ClientId}${SignMethod}的設定,必須保證加密參數的值與Client ID中對應參數值一致,需重新計算出Password。相關參數設定與計算方法,請參見使用Node.js語言指令碼計算

    3. TLS直連模式(即securemode=2)下,單擊SSL/TLS,選中Enable SSL/TLS,設定ProtocolTLSv1.2

      重要

      TCP直連模式(即securemode=3)下,無需設定SSL/TLS資訊,直接進入下一步。

      Enable SSL/TLS

  4. 設定完成後,單擊右下角的OK

  5. 單擊Connect

    右側亮綠燈,表示串連成功。Connect

    您可在物聯網平台控制台,在對應執行個體下,選擇裝置管理 > 裝置,選擇產品,查看該裝置狀態,預期裝置為線上狀態。

    線上

下文通過測試自訂Topic、物模型通訊Topic的上下行通訊,驗證MQTT.fx與物聯網平台串連是否成功。若測試與本樣本結果不符,表示通訊串連失敗,您需根據日誌資訊,進行修正。

使用自訂Topic通訊

自訂Topic的詳細資料,請參見使用自訂Topic通訊。本樣本使用物聯網平台預設提供的自訂Topic:

Topic

許可權

說明

/a1***/device1/user/update/error

發布

上行通訊:裝置通過該Topic向物聯網平台發送訊息。

/a1***/device1/user/get

訂閱

下行通訊:裝置通過訂閱該Topic,擷取從物聯網平台下發的訊息。

上行通訊

  1. 在MQTT.fx上,單擊Publish,在Publish文字框中,輸入具有發布許可權的Topic:/a1***/device1/user/update/error

  2. 在文本編輯頁面,輸入要發送的訊息內容,然後單擊Publish

    在mqtt.fx發布訊息

  3. 登入物聯網平台控制台,在對應執行個體下的Log Service頁面,查看裝置到雲訊息日誌訊息。具體操作,請參見查詢雲端作業記錄

    查看mqtt.fx發布到物聯網平台的訊息

下行通訊

  1. 在MQTT.fx上單擊Subscribe,在Subscribe文字框中,輸入具有訂閱許可權的Topic:/a1***/device1/user/get

  2. 單擊Subscribe

    訂閱成功後,該Topic會顯示在列表中。

    自訂Topic顯示在mqtt.fx訂閱列表中

  3. 登入物聯網平台控制台,在對應執行個體下,選擇裝置管理 > 裝置

  4. 單擊裝置對應操作列的查看,進入裝置詳情頁面。

  5. 單擊Topic列表頁簽,單擊已訂閱Topic對應操作列的發布訊息

  6. 輸入訊息內容,例如This is a test .,單擊確認

  7. 回到MQTT.fx上,查看接收到的訊息。

    接收訊息

使用物模型通訊Topic通訊

物模型通訊Topic的詳細資料,請參見什麼是Topic。本樣本使用物模型通訊Topic:

Topic

許可權

說明

/sys/a1****/device1/thing/event/property/post

發布

上行通訊:裝置通過該Topic向物聯網平台上報屬性資料。

/sys/a1****/device1/thing/event/property/post_reply

訂閱

下行通訊:裝置通過訂閱該Topic,擷取物聯平台響應裝置屬性上報的訊息。

/sys/a1****/device1/thing/service/property/set

訂閱

下行通訊:裝置通過該訂閱Topic,擷取物聯網平台下發的訊息。

裝置上報屬性

  1. 在MQTT.fx上單擊Subscribe,在Subscribe文字框中,輸入具有訂閱許可權的Topic:/sys/a1****/device1/thing/event/property/post_reply

  2. 在MQTT.fx上單擊Publish,在Publish文字框中,輸入具有發布許可權的Topic:/sys/a1****/device1/thing/event/property/post

  3. 在文本編輯頁面,輸入要上報的屬性資料,然後單擊Publish

    裝置上報屬性資料的格式,需符合標準Alink JSON格式。具體說明,請參見裝置上報屬性。本樣本上報屬性LightCurrentLightSwitch資料。物模型屬性

  4. 在MQTT.fx上單擊Subscribe,查看物聯網平台返回給裝置的響應訊息。

    如下圖所示,裝置上報屬性成功。響應訊息

  5. 登入物聯網平台控制台,在對應執行個體下,選擇裝置管理 > 裝置

  6. 單擊裝置對應操作列的查看,在裝置詳情頁面單擊物模型資料,查看裝置資料。

設定裝置屬性

  1. 在MQTT.fx上單擊Subscribe,在Subscribe文字框中,輸入具有訂閱許可權的Topic:/sys/a1****/device1/thing/service/property/set

  2. 登入物聯網平台控制台,在對應執行個體下,選擇監控營運 > 線上調試

  3. 選擇要調試的裝置,然後在屬性調試頁簽下,設定主燈開關關閉-0

  4. 單擊設定,發送指令。

  5. 在MQTT.fx上的Subscribe頁簽下,查看裝置接收的訊息。

    屬性設定

查看日誌

  • 登入物聯網平台控制台,在對應執行個體下的Log Service頁面,查看時間、TraceID和業務類型等作業記錄訊息。具體操作,請參見查詢雲端作業記錄

  • 在MQTT.fx上,單擊Log查看動作記錄和錯誤提示日誌。查看mqtt.fx的log

相關文檔

  • MQTT 協議因為適合於弱網、資源有限的環境,被廣泛用於物聯網行業。關於阿里雲物聯網的MQTT協議支援詳情,請參見MQTT協議規範

  • 將裝置接入物聯網平台的流程,請參見裝置接入引導

  • 在MQTT協議中,訊息發布和訂閱的中介是Topic,裝置可通過Topic實現訊息的發送和接收,Topic的概念和定義,請參見什麼是Topic