Alibaba Cloud の Node.js SDK を活用して、DataService Studio 内で API 操作を簡単に呼び出し、特定のデータを取得できます。このトピックでは、Node.js SDK を使用してプリセットメトリックの API を呼び出す方法を、メソッドと例を挙げて説明します。
前提条件
プリセットメトリックの API を呼び出すには、プロダクトとデバイスが作成済みであり、データバックアップが完了していることを確認してください。詳細な手順については、「プリセットメトリックの API」をご参照ください。
プロダクトデータ API を呼び出す、またはサービス API をカスタマイズするには、対応する API が確立されていることを確認してください。詳細な手順については、「プロダクトデータ API」および「サービス API のカスタマイズ」をご参照ください。
詳細については、「参照ドキュメント」をご参照ください。
SDK のインストール
Node.js 開発環境をセットアップするには、Node.js 公式 Web サイトにアクセスし、記載されているインストール手順に従ってください。
Alibaba Cloud OpenAPI SDK をインストールするには、以下のコマンドを実行します。
npm install @alicloud/openapi-client npm install @alicloud/iot20180120
リクエストの開始
以下は、[dataservice Studio] のプリセットメトリック API からデバイスの履歴数統計を呼び出す方法の例です。必要な API を呼び出すには、パラメーターの説明に基づいてコードを必要に応じて変更してください。
DataService Studio API を呼び出す際の 1 つの Alibaba Cloud アカウントあたりの 1 秒あたりの最大リクエスト数 (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 パス
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
Alibaba Cloud サービス API サーバーのエンドポイント。リージョンが IoT Platform プロダクトのリージョンと一致していることを確認してください。
この例では、リージョンは中国東部 2 (cn-shanghai) です。
accessKeyId
String
はい
LTAI4FyDFmKN************
IoT Platform コンソールに移動し、アカウントのプロフィール画像にカーソルを合わせて、アクセスキー管理 をクリックして、アクセスキー ID とアクセスキーシークレットを取得します。
説明RAM (Resource Access Management) ユーザーは、IoT Platform リソースを管理するために、AliyunIOTFullAccess ポリシーがアタッチされている必要があります。そうでない場合、接続は失敗します。権限付与の詳細については、「RAM ユーザーに IoT Platform へのアクセス権を付与する」をご参照ください。
accessKeySecret
String
はい
WF3onkl8cq3cTyVW8n************
regionId
String
はい
cn-shanghai
リージョンコード。サポートされているリージョンのリストについては、「サポートされているリージョン」をご参照ください。
apiPath
String
はい
iot-cn-npk1u******
API 操作パス。 DataService Studio で API リストを表示し、[表示] をクリックして、API の製品ページで API Patch 値にアクセスします。 詳細については、「参照ドキュメント」をご参照ください。
pageNum
Integer
ページングが有効な場合に必須
1
ページネーションのページ番号。
pageSize
Integer
ページングが有効な場合に必須
100
1 ページあたりのエントリ数。最大 100。
iotInstanceId
String
はい
iot-cn-npk1v******
API がデプロイされているインスタンス 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 の製品ページで特定の数のconditions
を設定できます。API リクエストパラメーターの表示方法の詳細については、「API の管理」をご参照ください。提供されているコード例では、API には __instance_id__、entityId、statDate の 3 つのリクエストパラメーターがあり、それぞれ
condition
、condition1
、condition2
に対応しています。
実行結果
成功:
返されるパラメーターの詳細な説明は、対応する 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 } } }
失敗:
呼び出しが失敗した理由を理解するには、結果のエラーコードを調べます。
以下の例は、無効なリクエストパラメーター
__instance_idd__
が原因で API 呼び出しが失敗したことを示しています。__instance_id__
に修正して、もう一度呼び出してみてください。