全部產品
Search
文件中心

IoT Platform:MQTT-WebSocket認證接入樣本

更新時間:Jun 30, 2024

本文提供Node.js語言的範例程式碼,介紹裝置通過MQTT-WebSocket通道接入物聯網平台。

前提條件

已在物聯網平台控制台對應執行個體下,建立產品和裝置(例如device2),並擷取裝置認證資訊(ProductKey、DeviceName和DeviceSecret)。具體操作,請參見:

背景資訊

使用WebSocket方式接入裝置的詳細說明,請參見MQTT-WebSocket串連通訊

本樣本使用物聯網平台提供的裝置端Link SDK,類比裝置接入和上下行通訊過程。

說明 裝置端Link SDK已配置TLS加密,您無需自行配置。

操作步驟

  1. 在本機電腦建立一個JavaScript檔案(例如iot_device.js),用來存放Node.js範例程式碼。
    Node.js範例程式碼如下:
    const iot = require('alibabacloud-iot-device-sdk');
    
    // 裝置認證資訊。
    const productKey = 'a1W***';
    const deviceName = 'device2';
    const deviceSecret = 'ff01e59d1a***';
    
    // 新版公用執行個體和企業版執行個體,必須填寫執行個體ID,舊版公執行個體無需填寫。
    const instanceId = '';
    
    // 當前產品和裝置所屬地區的ID。
    const region = 'cn-shanghai';
    
    const brokerUrl = instanceId
      ? `wss://${instanceId}.mqtt.iothub.aliyuncs.com:443`
      : `wss://${productKey}.iot-as-mqtt.${region}.aliyuncs.com:443`;
    
    const device = iot.device({
      productKey: `${productKey}`,
      deviceName: `${deviceName}`,
      deviceSecret: `${deviceSecret}`,
      brokerUrl,
      tls: true,
    });
    
    // 監聽connect事件:建立MQTT串連,訂閱自訂Topic,通過自訂Topic向物聯網平台發送訊息。
    device.on('connect', () => {
      device.subscribe(`/${productKey}/${deviceName}/user/get`);
      console.log('connect successfully!');
      device.publish(`/${productKey}/${deviceName}/user/update`, 'hello world!');
    });
    
    // 監聽message事件。
    device.on('message', (topic, payload) => {
      console.log(topic, payload.toString());
    });
    
    // 監聽error事件。
    device.on('error', (error) => {
      console.error(error);
    });
    
    // 如果您希望主動斷開與物聯網平台的串連,可以刪除下一行注釋符號,調用end函數斷開與物聯網平台的串連。
    //device.end();

    您需參照下表,替換對應參數的值為實際情境中裝置的資訊。

    參數樣本說明
    productKeya1W***您添加裝置後,儲存的裝置認證資訊,請參見擷取裝置認證

    您也可在控制台中裝置device2裝置詳情頁面查看。

    deviceNamedevice2
    deviceSecretff01e59d1a***
    instanceId''執行個體ID。您可在物聯網平台控制台執行個體概覽頁面,查看當前執行個體的ID。
    • 若有ID值,必須傳入該ID值。
    • 若無執行個體概覽頁面或ID值,傳入空值,即iotInstanceId = ''

    執行個體的詳細說明,請參見執行個體概述

    region cn-shanghai您物聯網平台裝置所在地區的代碼。地區代碼錶達方法,請參見地區列表
  2. 開啟CMD視窗,使用cd命令找到iot_device.js檔案所在路徑,在該路徑下使用npm命令下載阿里雲IoT的Link SDK庫。下載後的庫檔案如下圖所示。
    npm install alibabacloud-iot-device-sdk --saveMQTT庫
  3. 在CMD視窗輸入如下命令,運行iot_device.js代碼,啟動裝置。
    node iot_device.js
    返回如下資訊,表示裝置接入成功,並成功發布訊息。接入裝置

查看作業記錄和測試下行通訊

  1. 登入物聯網平台控制台
  2. 在控制台左上方,選擇物聯網平台裝置所在地區,然後在執行個體概覽頁面,單擊目標執行個體
    說明 若無執行個體概覽頁面,會直接進入物聯網平台功能頁面。
  3. 在左側導覽列,選擇裝置管理 > 裝置
    裝置列表頁簽,可查看裝置device2的狀態為線上裝置線上
  4. 單擊裝置device2對應操作欄的查看,在裝置詳情頁面,單擊Log Service,然後單擊前往查看
    雲端作業記錄頁簽,查看日誌訊息。日誌資訊
  5. 在日誌列表,找到裝置到雲訊息,單擊查看,查看裝置上報到物聯網平台的資訊。
    上報訊息
  6. 測試下行通訊:從物聯網平台向裝置發送訊息。
    1. 返回裝置管理 > 裝置頁面,在裝置列表頁簽,單擊裝置device2操作欄的查看
    2. 裝置詳情頁面,單擊Topic列表頁簽,找到已訂閱的Topic:/a1W***/device2/user/get,單擊發布訊息
    3. 輸入訊息內容,單擊確認
      發送訊息
    4. 返回裝置運行視窗,查看裝置能接收訊息,表示通訊正常。
      接收訊息

      您也可返回雲端作業記錄頁簽,查看詳細的通訊日誌。

      通訊日誌