全部產品
Search
文件中心

IoT Platform:Node.js SDK調用樣本

更新時間:Jun 30, 2024

您可使用阿里雲提供的Node.js SDK,來調用資料服務的API,從而更便捷地擷取指定資料。本文以調用預置指標API為例,介紹Node.js SDK調用API的方法及樣本。

前提條件

  • 如果需要調用預置指標API,需確保已建立產品和裝置,並完成資料備份。具體操作,請參見預置指標API

  • 如果需要調用產品資料API或自訂服務API,需確保已建立對應API。具體操作,請參見產品資料API自訂服務API

更多資訊,請參見管理與使用

安裝SDK

  1. 登入Node.js官方網站,按照說明安裝Node.js開發環境。

  2. 執行以下命令,安裝阿里雲OpenAPI SDK。

    npm install @alicloud/openapi-client
    npm install @alicloud/iot20180120

發起調用

以下為調用資料服務下預置指標API中歷史至今裝置數量相關統計的範例程式碼。您可參照參數說明,修改對應代碼,調用指定的API。

重要

單個阿里雲帳號調用資料服務API的每秒請求數(QPS)最大限制為100。

const Config = require('@alicloud/openapi-client').Config;
const ListAnalyticsDataRequest = require('@alicloud/iot20180120').ListAnalyticsDataRequest;
const IotClient = require('@alicloud/iot20180120');
const ListAnalyticsDataRequestCondition = require('@alicloud/iot20180120/dist/client').ListAnalyticsDataRequestCondition;
// 建立用戶端
const config = new Config();
config.endpoint = "iot.cn-shanghai.aliyuncs.com";
config.accessKeyId = "LTAI4FyDFmKN************";
config.accessKeySecret = "WF3onkl8cq3cTyVW8n************";
config.regionId = "cn-shanghai";
async function main() {
    const client = new IotClient.default(config);
    // 建立請求對象
    const listAnalyticsDataRequest = new ListAnalyticsDataRequest();
    // 您的API Path
    listAnalyticsDataRequest.apiPath = '/iot-cn-npk1v******/system/query/hist_dev_cnt_stat'
    // 分頁參數:頁號
    listAnalyticsDataRequest.pageNum = 1;
    // 分頁參數:頁大小
    listAnalyticsDataRequest.pageSize = 100;
    // 您的API所在的執行個體id
    listAnalyticsDataRequest.iotInstanceId = 'iot-cn-npk1v******' 
    //您的API業務相關的請求參數。Condition的配置說明,請參見下文的相關說明。
    const conditions = [];
    const condition = new ListAnalyticsDataRequestCondition();
    condition.operate = '=';
    condition.fieldName = '__instance_id__';
    condition.value = 'iot-public'
    conditions.push(condition)
    const condition1 = new ListAnalyticsDataRequestCondition();
    condition1.operate = '=';
    condition1.fieldName = 'entityId';
    condition1.value = 'all'
    conditions.push(condition1)
    const condition2 = new ListAnalyticsDataRequestCondition();
    condition2.operate = '=';
    condition2.fieldName = 'statDate';
    condition2.value = '20210221'
    conditions.push(condition2)
    listAnalyticsDataRequest.condition = conditions;
    try {
        const response = await client.listAnalyticsData(listAnalyticsDataRequest)
        console.log(response)
    } catch (ex) {
        console.log(ex);
    }
}
main();
  • 系統請求參數:

    名稱

    類型

    是否必傳

    樣本值

    描述

    endpoint

    String

    iot.cn-shanghai.aliyuncs.com

    阿里雲服務的API服務端地址。其中,地區需與物聯網平台產品地區保持一致。

    本樣本中,地區為華東2(cn-shanghai)。

    accessKeyId

    String

    LTAI4FyDFmKN************

    登入物聯網平台控制台,將滑鼠移至帳號頭像上,然後單擊AccessKey管理,擷取AccessKey ID和AccessKey Secret。

    說明

    如果使用RAM使用者,您需授予該RAM使用者管理物聯網平台的許可權(AliyunIOTFullAccess),否則將串連失敗。授權方法請參見授權RAM使用者訪問物聯網平台

    accessKeySecret

    String

    WF3onkl8cq3cTyVW8n************

    regionId

    String

    cn-shanghai

    地區代碼。具體內容,請參見支援的地區

    apiPath

    String

    iot-cn-npk1u******

    API路徑。在資料服務的API列表下,單擊API對應的查看,進入API詳情頁,可查看API Patch的值。更多資訊,請參見管理與使用

    pageNum

    Integer

    開啟分頁時必傳

    1

    分頁的頁碼。

    pageSize

    Integer

    開啟分頁時必傳

    100

    每頁顯示結果的條數,最大值為100。

    iotInstanceId

    String

    開啟分頁時必傳

    執行個體ID。

  • 業務相關的請求參數:

    名稱

    類型

    是否必傳

    說明

    相關代碼

    fieldName

    String

    請求參數名稱。

     condition.fieldName = '__instance_id__';

    operate

    String

    請求參數對應的操作符。可選:

    • =:指定請求參數為特定值。

    • BETWEEN:指定請求參數為特定範圍。

    • IN:指定請求參數為多個值。

    • !=:指定請求參數不可為特定值。

     condition.operate = '=';

    value

    String

    請求參數的賦值。

    重要

    當操作符為非BETWEEN時,該參數必傳。

     condition.value = 'iot-public';

    betweenStart

    String

    請求參數表示範圍時的起始值。

    重要

    當操作符為BETWEEN時,該參數必傳。

     condition.betweenStart = '0';

    betweenEnd

    String

    請求參數表示範圍時的終止值。

    重要

    當操作符為BETWEEN時,該參數必傳。

     condition.betweenEnd = '1000';

    一個請求參數對應一個condition。在API詳情頁,查看API的請求參數,您可配置指定數量的condition關於如何查看API請求參數的資訊,請參見管理API

    本文範例程式碼中,該API有3個請求參數__instance_id__、entityId、statDate分別對應condition condition 1condition 2

運行結果

  • 成功:

    在對應API的詳情頁,您可查看返回參數的詳細說明。具體操作,請參見管理與使用

    以下樣本為調用API成功後的結果,即:從2021年2月21日起至調用API時,公用執行個體下的裝置數量相關統計情況。

    ListAnalyticsDataResponse {
      headers: {
        date: 'Mon, 15 Mar 2021 10:40:58 GMT',
        'content-type': 'application/json;charset=utf-8',
        'content-length': '425',
        connection: 'keep-alive',
        'access-control-allow-origin': '*',
        'access-control-allow-methods': 'POST, GET, OPTIONS',
        'access-control-allow-headers': 'X-Requested-With, X-Sequence, _aop_secret, _aop_signature',
        'access-control-max-age': '172800',
        'x-acs-request-id': 'F278FA13-11E6-42BC-9883-3566AC******'
      },
      body: ListAnalyticsDataResponseBody {
        requestId: 'F278FA13-11E6-42BC-9883-3566AC******',
        success: true,
        data: ListAnalyticsDataResponseBodyData {
          hasNext: false,
          resultJson: '[{"statDate":"20210221","actDevCnt":2942,"onlineDevCntCompare":0.00,"livelyDevCntCompare":8.99,"livelyDevCnt":1527,"onlineDevRate":23.08,"crtDevCnt":169025,"livelyDevRate":51.90,"crtDevCntCompare":0.08,"onlineDevCnt":679,"actDevRate":1.74,"actDevCntCompare":4.55}]',
          pageNum: 1,
          pageSize: 100
        }
      }
    }
  • 失敗:

    通過調用失敗結果中的錯誤碼,您可瞭解失敗的原因。關於錯誤碼更多資訊,請參見錯誤碼

    以下樣本為調用API失敗後的結果,即:參數__instance_idd__為無效的請求參數,將其更正為__instance_id__後,重新發起調用。

    Node.js調用失敗