IoT Platform は、Node.js 用の SDK を提供しています。このトピックでは、Node.js 用の IoT Platform SDK をインストールおよび設定する方法について説明します。また、SDK を使用して IoT Platform の API 操作を呼び出す方法のサンプルコードも提供します。
SDK のインストール
Node.js 開発環境をインストールします。
アップグレードされた Node.js 用 IoT Platform SDK は、Node.js 環境に基づいて開発されています。 Node.js 8.x 以降をインストールする必要があります。
Node.js 用 Alibaba Cloud SDK をインストールします。
npm を使用して依存関係を管理できます。次のコマンドを実行して、package.json ファイルに依存関係を追加します。
npm install @alicloud/openapi-client -SNode.js 用 IoT Platform SDK をインストールします。
次のコマンドを実行して、バージョン 3.0.8 の SDK をインストールします。
npm install --save @alicloud/iot20180120@3.0.8Node.js 用 SDK のソースコードについては、alibabacloud-typescript-sdk をご覧ください。
SDK の初期化
config オブジェクトを作成して、アクセスキー ID、アクセスキー シークレット、リージョン ID などの SDK 初期化情報を格納します。
クライアント
Iot(config)構成 インスタンスを作成し、 メソッドを呼び出して、 オブジェクトから SDK 初期化情報をロードします。
たとえば、中国 (上海) リージョンで SDK を使用する場合は、次のコードを使用して SDK を初期化できます。本番環境では、IoT Platform がアクティブ化されているリージョンを選択する必要があります。
import Iot, * as $Iot from '@alicloud/iot20180120';
import OpenApi, * as $OpenApi from '@alicloud/openapi-client';
let config = new $OpenApi.Config({ });
// アクセスキー ID。
config.accessKeyId = process.env.ACCESS_KEY_ID;
// アクセスキーシークレット。
config.accessKeySecret = process.env.ACCESS_KEY_SECRET;
// リージョン ID。
config.regionId = "cn-shanghai";
let client = new Iot(config);
パラメーター | 説明 |
regionId | IoT Platform インスタンスが存在するリージョンの ID。リージョン ID は、サービスアクセス用のエンドポイントで使用されます。エンドポイントは iot.${RegionId}.aliyuncs.com 形式です。 IoT Platform コンソール の左上隅でリージョンを確認できます。 リージョン ID の形式の詳細については、「サポートされているリージョン」をご参照ください。 |
リクエストの開始
SDK は、各 API 操作に対して 2 つのクラスをカプセル化します。名前が ${API名}+"Request" 形式のクラスはリクエストを示し、名前が ${API名}+"Response" 形式のクラスはレスポンスを示します。
手順
SDK を初期化します。詳細については、このトピックの「SDK の初期化」セクションをご参照ください。
リクエスト インスタンスを生成することで、
${API 操作名}+"Request"クラスの API リクエストを作成します。リクエスト インスタンスを使用して、リクエストパラメータを指定します。
応答
${API操作名}+"Response"クラスの${API 操作名}(リクエスト)クライアント本文ヘッダー インスタンスを作成して、レスポンスを取得します。 インスタンスの メソッドを呼び出して、API リクエストに対するレスポンスを取得します。レスポンスには、サーバーから返された と が含まれます。メソッドを呼び出して、レスポンスパラメーターの値を取得します。たとえば、
response.body.successメソッドを呼び出して、成功 パラメーターを取得できます。このパラメーターは、リクエストが成功したかどうかを示す一般的なレスポンスパラメーターです。一般的なレスポンスパラメーターには、リクエスト ID、エラーメッセージ、コード も含まれます。catch()メソッドを呼び出して、例外を処理します。
IoT Platform の API 操作の詳細については、「関数別の操作リスト」をご参照ください。各 API 操作のリクエストパラメーターとレスポンスパラメーターの詳細については、API リファレンスをご参照ください。
次の例は、Pub 操作を呼び出して Topic にメッセージをパブリッシュする方法を示しています。リクエストパラメーターの詳細については、「Pub」をご参照ください。
次のサンプルコードでは、${iotInstanceId} はインスタンスの ID を指定します。 IoT Platform コンソール の [概要] ページでインスタンスの [ID] を表示できます。
インスタンスに ID がある場合は、このパラメーターに ID を指定する必要があります。指定しないと、呼び出しは失敗します。
インスタンスに [概要] ページまたは ID が生成されない場合は、このパラメーターを構成する必要はありません。 IotInstanceId パラメーターに関連付けられているリクエストコードを削除するか、パラメーターに空の文字列(
"")を指定する必要があります。指定しない場合、呼び出しは失敗します。
IoT Platform インスタンスの詳細については、「概要」をご参照ください。インスタンスの購入方法の詳細については、「Enterprise Edition インスタンスの購入」をご参照ください。詳細については、「IoT Platform インスタンスに関するよくある質問」をご参照ください。
try {
let client = Client.createClient("${accessKey}", "${accessKeySecret}");
let request = new $Iot.PubRequest({
// IoT Platform インスタンスの ID。
iotInstanceId: "${iotInstanceId}",
// プロダクトの ProductKey。
productKey: "${productKey}",
// 送信されるメッセージ本文。 Base64 でエンコードする必要があります。
messageContent: "eyJ0ZXN0IjoidGFzayBwdWIgYnJvYWRjYXN0In0=",
// メッセージをパブリッシュするために使用されるカスタム Topic。
topicFullName: "/${productKey}/${deviceName}/user/get",
// メッセージ送信モード。 IoT Platform SDK は QoS 0 と QoS 1 をサポートしています。
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 {
/**
* アクセスキー ID とアクセスキーシークレットを使用して、クライアントを初期化します。
* @param accessKeyId
* @param accessKeySecret
* @param regionId
* @return Client
* @throws Exception
*/
static createClient(): Iot {
let config = new $OpenApi.Config({ });
// アクセスキー ID。
config.accessKeyId = process.env.ACCESS_KEY_ID;
// アクセスキーシークレット。
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({
// IoT Platform インスタンスの ID。
iotInstanceId: "${iotInstanceId}",
// プロダクトの ProductKey。
productKey: "${productKey}",
// 送信するメッセージ本文。 "hello world" を Base64 で文字列としてエンコードします。
messageContent: "eyJ0ZXN0IjoidGFzayBwdWIgYnJvYWRjYXN0In0=",
// メッセージをパブリッシュするために使用されるカスタム Topic。
topicFullName: "/${productKey}/${deviceName}/user/get",
// メッセージ送信モード。 IoT Platform SDK は QoS 0 と QoS 1 をサポートしています。
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));付録: サンプルコード
IoT Platform SDK サンプルセンター で、API 操作のサンプルコードを表示またはダウンロードできます。 Java、Python、PHP、Node.js、Go、C++、.NET 用の SDK のサンプルコードが提供されています。
Alibaba Cloud OpenAPI Explorer は、API 操作のオンラインデバッグツール を提供します。 API デバッグサンプルコードデバッグ結果 ページで、API 操作を検索し、API 操作を呼び出し、さまざまな SDK の API 操作のサンプルコードを生成できます。ページの右側にある タブで、SDK のサンプルコードを表示できます。 タブで、JSON 形式の実際のリクエスト URL とレスポンスを表示できます。