MQTT.fx是一款基於Eclipse Paho,使用Java語言編寫的MQTT用戶端,支援Windows、Mac和Linux作業系統,可用於驗證裝置是否可與物聯網平台正常串連,並通過Topic訂閱和發布訊息。本文以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 |
配置MQTT.fx接入
- 下載並安裝MQTT.fx軟體。MQTT.fx軟體安裝和使用說明,請參見MQTT.fx。本文操作以mqttfx-5.2.0-windows-x64版本為例示範具體操作。由於第三方軟體不定期更新,建議您以實際頁面為準。說明 使用MQTT.fx工具所需的License,請自行申請。
- 開啟MQTT.fx軟體,單擊功能表列中的Extras,選擇Edit Connection Profiles。
- 在Edit Connection Profiles頁面,完成以下參數的設定。
- 設定基本資料。
參數 說明 Profile Name 輸入您的自訂名稱iot connection。 Profile Type MQTT伺服器串連,選擇MQTT Broker。 MQTT Broker Profile Settings 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}:演算法類型,支援hmacsha256、hmacmd5和hmacsha1。
- ${timestamp}:表示目前時間毫秒值,可以不傳遞timestamp。
物聯網平台提供的串連參數中${ClientId}預設為
${ProductKey} + '.' + ${DeviceName}
組成的字串,${Mode}預設為2,${SignMethod}預設為hmacsha256,您可根據需要修改。重要- MQTT.fx的Client ID和裝置的${ClientId},切勿混淆。
- 不要遺漏參數之間及最後的豎線(|)。
- 設定參數時,請確保參數值中或參數值的前後均沒有空格。
- 輸入Client ID資訊後,請勿單擊Generate。
General 本樣本使用預設值。您也可以根據實際情境需求設定。 - 單擊User Credentials,選中Use Username/Password複選框,設定User Name和Password。
參數 參數說明 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語言指令碼計算。
- TLS直連模式(即securemode=2)下,單擊SSL/TLS,選中Enable SSL/TLS,設定Protocol為TLSv1.2。重要 TCP直連模式(即
securemode=3
)下,無需設定SSL/TLS資訊,直接進入下一步。
- 設定基本資料。
- 設定完成後,單擊右下角的OK。
- 單擊Connect。 右側亮綠燈,表示串連成功。
您可在物聯網平台控制台,選擇 ,選擇產品,查看該裝置狀態,預期裝置為線上狀態。
下文通過測試自訂Topic的上下行通訊,驗證MQTT.fx與物聯網平台串連是否成功。若測試與本樣本結果不符,表示通訊串連失敗,您需根據日誌資訊,進行修正。
測試下行通訊
- 在物聯網平台控制台的產品詳情頁面,單擊 ,找到一個具有訂閱許可權的自訂Topic。
- 在MQTT.fx上單擊Subscribe,在Subscribe文字框中,輸入上一步的Topic,再單擊Subscribe。
訂閱成功後,該Topic會顯示在列表中。
- 返回物聯網平台,進入該裝置的裝置詳情頁面,在Topic列表頁簽下,單擊已訂閱Topic對應的發布訊息。
- 輸入訊息內容,單擊確認。
- 回到MQTT.fx上,查看接收到的訊息。
- 回到物聯網平台,在裝置詳情頁面,單擊Log Service頁簽的前往查看,在Log Service頁面,查看雲到裝置訊息。
單擊對應的查看,可查看到下發給裝置的訊息。
測試上行通訊
- 在物聯網平台控制台的產品詳情頁面,單擊 ,找到一個具有發布許可權的自訂Topic。本樣本使用Topic:
/a1***/${deviceName}/user/update/error
,您需替換${deviceName}
為裝置名稱device1
。更多資訊,請參見使用自訂Topic通訊。
- 在MQTT.fx上,單擊Publish,在Publish文字框中,輸入上一步的Topic。在文本編輯頁面,輸入要發送的訊息內容,然後單擊Publish。
- 回到物聯網平台,在裝置詳情頁面,單擊Log Service頁簽的前往查看,在Log Service頁面,查看裝置到雲訊息。
查看日誌
在MQTT.fx上,單擊Log查看動作記錄和錯誤提示日誌。