全部產品
Search
文件中心

IoT Platform:Node.js SDK使用說明

更新時間:Jun 30, 2024

物聯網平台提供TypeScript語言的雲端SDK供開發人員使用。本文介紹雲端Node.js SDK的安裝和配置,及使用Node.js SDK調用雲端API的樣本。

安裝SDK

  1. 安裝Node.js開發環境。

    物聯網平台雲端升級版Node.js SDK基於Node.js環境構建,需要安裝Node.js 8.x及以上版本。

  2. 安裝SDK核心庫OpenAPI。

    您可使用npm管理依賴庫,通過以下命令安裝依賴並寫入檔案package.json。

    npm install @alicloud/openapi-client -S
  3. 安裝IoT Node.js SDK。

    執行以下npm命令進行安裝,例如安裝3.0.8版本SDK。

    npm install --save @alicloud/iot20180120@3.0.8

    Node.js SDK源碼資訊,請參見alibabacloud-typescript-sdk

初始化SDK

  1. 建立Config對象config,存放SDK初始化資訊(AccessKey IDAccessKey Secret、地區ID等)。

  2. 建立Client對象執行個體client,通過Iot(config)方法,載入config中的SDK資訊,完成SDK用戶端初始化。

以華東2(上海)地區及其服務接入地址為例,初始代碼如下。實際情境設定中,需使用您的物聯網平台服務所在地區。

import Iot, * as $Iot from '@alicloud/iot20180120';
import OpenApi, * as $OpenApi from '@alicloud/openapi-client';
let config = new $OpenApi.Config({ });
// 您的AccessKey ID。
config.accessKeyId = process.env.ACCESS_KEY_ID;
// 您的AccessKey Secret。
config.accessKeySecret = process.env.ACCESS_KEY_SECRET;
// 您的可用性區域ID。
config.regionId = "cn-shanghai";
let client = new Iot(config);

參數

說明

regionId

您的物聯網平台服務的地區ID,用於拼接服務接入地址,格式為:iot.${RegionId}.aliyuncs.com。

您可在物聯網平台控制台左上方,查看當前服務所在地區。

地區ID的表達方法,請參見地區和可用性區域

發起調用

物聯網平台雲端SDK為每個API封裝兩個類,分別命名為${API名稱}+"Request"${API名稱}+"Response",分別用於承載API的調用請求和調用結果。

調用步驟

  1. 已完成SDK用戶端初始化。具體內容,請參見初始化SDK

  2. 建立對應API的調用請求,產生${API名稱}+"Request"類對象執行個體request

  3. 通過對象執行個體request,設定API所需的請求參數值。

  4. 建立${API名稱}+"Response"類的對象執行個體response承載響應結果:使用Client對象執行個體client${API名稱}(request)方法,擷取API對應request的響應結果,包含服務端響應的bodyheaders

  5. 通過對象執行個體responsebody成員對象,使用response.body.${返回參數的名稱}方法,可擷取對應返回參數的值。

    例如:response.body.success用於擷取是否調用成功的標識,其中Success為API的通用返回參數。通用返回參數還包含RequestIdErrorMessageCode

  6. 使用catch()方法處理異常報錯。

物聯網平台雲端API,請參見API列表。有關request中請求參數說明,及response中返回參數說明,請參見對應API文檔。

本文以調用Pub介面發布訊息到Topic為例。請求參數資訊,請參見Pub

重要

以下代碼中iotInstanceId為執行個體ID。執行個體的詳細說明,請參見執行個體概述

購買執行個體方法,請參見購買企業版執行個體

try {
    let client = Client.createClient("${accessKey}", "${accessKeySecret}");
    let request = new $Iot.PubRequest({
        // 物聯網平台執行個體ID。
        iotInstanceId: "${iotInstanceId}",
        // 產品ProductKey。
        productKey: "${productKey}",
        // 要發送的訊息主體,需通過Base64編碼。
        messageContent: "eyJ0ZXN0IjoidGFzayBwdWIgYnJvYWRjYXN0In0=",
        // 要接收訊息的裝置的自訂Topic。
        topicFullName: "/${productKey}/${deviceName}/user/get",
        // 指定訊息的發送方式,支援QoS0和QoS1。
        qos: 0,
    });
    let response = await client.pub(request);
    Console.log(Util.toJSONString($tea.toMap(response)));
} catch (error) {
    Console.log(error.message);
}

完整程式碼範例

說明

實際情境中,請參照上文的參數說明,替換對應參數值。

import Iot, * as $Iot from '@alicloud/iot20180120';
import Util from '@alicloud/tea-util';
import Env from '@alicloud/darabonba-env';
import OpenApi, * as $OpenApi from '@alicloud/openapi-client';
import Console from '@alicloud/tea-console';
import * as $tea from '@alicloud/tea-typescript';


export default class Client {
  /**
   * 使用AK&SK初始化帳號Client。
   * @param accessKeyId
   * @param accessKeySecret
   * @param regionId
   * @return Client
   * @throws Exception
   */
  static createClient(): Iot {
    let config = new $OpenApi.Config({ });
    // 您的AccessKey ID。
    config.accessKeyId = process.env.ACCESS_KEY_ID;
    // 您的AccessKey Secret
    config.accessKeySecret = process.env.ACCESS_KEY_SECRET;
    // 您的可用性區域ID。
    config.regionId = "cn-shanghai";
    return new Iot(config);
   }


  static async main(args: string[]): Promise<void> {
    try {
      let client = Client.createClient("${accessKey}", "${accessKeySecret}");
      let request = new $Iot.PubRequest({
        // 物聯網平台執行個體ID。
        iotInstanceId: "${iotInstanceId}",
        // 產品ProductKey。
        productKey: "${productKey}",
        // 要發送的訊息主體,hello world Base64 String。
        messageContent: "eyJ0ZXN0IjoidGFzayBwdWIgYnJvYWRjYXN0In0=",
        // 要接收訊息的裝置的自訂Topic。
        topicFullName: "/${productKey}/${deviceName}/user/get",
        // 指定訊息的發送方式,支援QoS0和QoS1。
        qos: 0,
      });
      let response = await client.pub(request);
      Console.log(response.body.success);
      Console.log(response.body.requestId);
    } catch (error) {
      Console.log(error.message);
    }    
  }
}

Client.main(process.argv.slice(2));

附錄:範例程式碼

前往物聯網平台雲端SDK樣本中心查看或下載API調用的範例程式碼。範例程式碼中包含Java、Python、PHP、Node.js、Go、C++和.NET等版本SDK樣本。

阿里雲OpenAPI開發人員門戶提供API線上調試工具。在API調試頁面,您可以快速檢索和體驗調用API。系統會根據您輸入的參數同步產生各語言SDK的程式碼範例。各語言SDK程式碼範例顯示在頁面右側SDK樣本頁簽下供您參考。在調用結果頁簽下,可查看API調用的真實請求URL和JSON格式的返回結果。