裝置通過您自研的MQTT接入工具串連物聯網平台時,需輸入MQTT的簽名認證參數username、passwd和mqttClientId。本文介紹擷取MQTT串連簽名參數值的方法。
概述
您可根據實際業務需要,選擇如下方法擷取MQTT簽名參數值。
|
方法 |
說明 |
|
支援簽名演算法為hmacsha256。 裝置的ClientId預設為 |
|
|
支援簽名演算法為hmacsha256。 裝置的ClientId預設為 |
直接在物聯網平台擷取
登入物聯網平台控制台。
在執行個體概覽頁簽的全部環境下,找到對應的執行個體,單擊執行個體卡片。
-
在左側導覽列,選擇,進入裝置頁面。
-
在裝置列表中,單擊目標裝置對應的查看按鈕,進入裝置詳情頁面。
-
在裝置資訊頁簽下,單擊MQTT串連參數右側的查看,擷取MQTT簽名參數資訊。
重要其中clientId是mqttClientId值,請勿與裝置的clientId混淆。MQTT串連參數的詳細說明,請參見MQTT-TLS串連通訊。
彈出MQTT 串連參數對話方塊,顯示 clientId、username、passwd、mqttHostUrl 和 port 五個參數及其值,單擊一鍵複製可複製全部參數資訊。
使用Node.js語言指令碼計算
-
下載簽名工具包signTool.zip,解壓縮後,在檔案mqttSignTool.js中修改以下參數,並儲存。
參數
樣本
說明
productKey
a1Ee***
您添加裝置後,儲存的裝置認證資訊,請參見裝置認證資訊。
您可在控制台中裝置的裝置詳情頁面查看。
deviceName
8Co5***
deviceSecret
bcabcf***
timestamp
2524608000000
時間戳記。目前時間毫秒值。
briefId
12345
裝置的Client ID資訊。選擇性參數。
本工具包預設設定為
${ProductKey} + '.' + ${DeviceName}組成的字串,您可根據需要修改,例如var briefId = '12345'。重要該值可自訂,長度在64個字元以內。建議使用您裝置的MAC地址或SN碼,方便您識別區分不同的裝置。
-
在Windows系統或Linux系統下,下載並安裝Node.js。本文以Ubuntu 16.04 64位Linux系統為例,下載已編譯的包
node-v16.5.0-linux-x64.tar.gz。-
登入Linux虛擬機器。
-
執行以下命令,下載對應版本包,然後解壓。
wget https://nodejs.org/dist/v16.5.0/node-v16.5.0-linux-x64.tar.gz tar xf node-v16.5.0-linux-x64.tar.gz cd node-v16.5.0-linux-x64 ./bin/node -v顯示如下版本號碼,表示解壓安裝成功。
v16.5.0 -
在node-v16.5.0-linux-x64/bin檔案目錄下包含了node、npm等命令,執行以下命令配置全域環境變數。
ln -s /root/node-v16.5.0-linux-x64/bin/npm /usr/local/bin/ ln -s /root/node-v16.5.0-linux-x64/bin/node /usr/local/bin/
-
-
執行以下命令,先退出node-v16.5.0-linux-x64檔案目錄,然後建立專案檔signTool,來存放JavaScript檔案和簽名庫檔案。
cd.. mkdir signTool cd signTool/ -
將步驟1中已修改完成的mqttSignTool.js檔案,上傳至Linux虛擬機器開發環境的signTool目錄下。
-
在signTool檔案下,執行以下命令,下載並查看簽名庫檔案。
npm install crypto-js ls下載後的庫檔案如下所示。
mqttSignTool.js node_modules package.json package-lock.json -
執行以下命令,運行簽名檔案mqttSignTool.js。
node mqttSignTool.js返回如下資訊,即為通過MQTT接入物聯網平台的簽名認證參數資訊。
重要其中clientId是mqttClientId值,請勿與裝置的clientId混淆。MQTT串連參數的詳細說明,請參見MQTT-TLS串連通訊。
username: xxx clientId: xxx|securemode=2,signmethod=hmacsha256,timestamp=2524608000000| passwd: xxx