全部產品
Search
文件中心

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

更新時間:Jun 30, 2024

MQTT.fx是一款基於Eclipse Paho,使用Java語言編寫的MQTT用戶端,支援Windows、Mac和Linux作業系統,可用於驗證裝置是否可與物聯網平台正常串連,並通過Topic訂閱和發布訊息。本文以Windows系統下MQTT.fx為例,介紹類比裝置以MQTT協議接入物聯網平台。

前提條件

已在物聯網平台控制台建立產品和裝置,然後在裝置詳情頁面,擷取裝置認證和MQTT串連參數的資訊。具體操作,請參見:

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

參數
ProductKeya1***
DeviceNamedevice1
DeviceSecretf35***d9e
clientIda1***.device1|securemode=2,signmethod=hmacsha256,timestamp=2524608000000|
usernamedevice1&a1***
passwd86761***21d
mqttHostUrla1***.iot-as-mqtt.cn-shanghai.aliyuncs.com
port1883
重要 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. 設定基本資料。
      編輯mqtt.fx的基本資料
      參數說明
      Profile Name輸入您的自訂名稱iot connection
      Profile TypeMQTT伺服器串連,選擇MQTT Broker
      MQTT Broker Profile Settings
      Broker AddressMQTT接入網域名稱,對應《前提條件》中已擷取的mqttHostUrl值:a1***.iot-as-mqtt.cn-shanghai.aliyuncs.com
      • a1***為本樣本產品的ProductKey
      • cn-shanghai為本樣本所在地區。
      Broker Port設定為1883
      Client IDMQTT的協議欄位。

      固定格式:${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的上下行通訊,驗證MQTT.fx與物聯網平台串連是否成功。若測試與本樣本結果不符,表示通訊串連失敗,您需根據日誌資訊,進行修正。

測試下行通訊

  1. 物聯網平台控制台的產品詳情頁面,單擊Topic類列表 > 自訂Topic,找到一個具有訂閱許可權的自訂Topic。
    本樣本使用Topic:/a1***/${deviceName}/user/get,您需替換${deviceName}為裝置名稱device1

    更多資訊,請參見使用自訂Topic通訊

  2. 在MQTT.fx上單擊Subscribe,在Subscribe文字框中,輸入上一步的Topic,再單擊Subscribe

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

    自訂Topic顯示在mqtt.fx訂閱列表中
  3. 返回物聯網平台,進入該裝置的裝置詳情頁面,在Topic列表頁簽下,單擊已訂閱Topic對應的發布訊息
    在mqtt.fx訂閱的Topic下發布訊息
  4. 輸入訊息內容,單擊確認
    在mqtt.fx訂閱的Topic下輸入要發布的訊息
  5. 回到MQTT.fx上,查看接收到的訊息。
    接收訊息
  6. 回到物聯網平台,在裝置詳情頁面,單擊Log Service頁簽的前往查看,在Log Service頁面,查看雲到裝置訊息
    雲到裝置訊息

    單擊對應的查看,可查看到下發給裝置的訊息。

    日誌資訊

測試上行通訊

  1. 物聯網平台控制台的產品詳情頁面,單擊Topic類列表 > 自訂Topic,找到一個具有發布許可權的自訂Topic。
    本樣本使用Topic:/a1***/${deviceName}/user/update/error,您需替換${deviceName}為裝置名稱device1

    更多資訊,請參見使用自訂Topic通訊

  2. 在MQTT.fx上,單擊Publish,在Publish文字框中,輸入上一步的Topic。在文本編輯頁面,輸入要發送的訊息內容,然後單擊Publish
    在mqtt.fx發布訊息
  3. 回到物聯網平台,在裝置詳情頁面,單擊Log Service頁簽的前往查看,在Log Service頁面,查看裝置到雲訊息
    查看mqtt.fx發布到物聯網平台的訊息

查看日誌

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

查看mqtt.fx的log