Alibaba Cloud が提供する Java SDK は、DataService Studio API を呼び出すプロセスを簡素化し、指定されたデータの取得を容易にします。 SDK は、Maven 依存関係を使用してプロジェクトに統合するか、インストールパッケージをダウンロードしてローカルに設定できます。 このトピックでは、Java SDK を使用してプリセットメトリックの API を呼び出す方法、メソッド、および例を紹介します。
前提条件
プリセットメトリック API を呼び出すには、プロダクトとデバイスが作成され、データバックアップが完了していることを確認してください。 詳細な手順については、「プリセットメトリック API」をご参照ください。
プロダクトデータ API を呼び出すか、サービス API をカスタマイズするには、対応する API が作成されていることを確認してください。 詳細な手順については、「プロダクトデータ API」および「サービス API のカスタマイズ」をご参照ください。
詳細については、「管理と使用」をご参照ください。
SDK のインストール
Java 開発環境をセットアップします。
公式 Java Web サイトから環境をダウンロードし、提供されているインストール手順に従います。
Java 用 IoT Platform SDK をインストールします。
公式 Apache Maven Web サイトから Maven ソフトウェアを入手します。
次の Maven 依存関係を使用して、Java 用 IoT Platform SDK を組み込みます。
<dependency> <groupId>com.aliyun</groupId> <artifactId>tea-openapi</artifactId> <version>0.0.11</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>iot20180120</artifactId> <version>1.1.0</version> </dependency>
リクエストの開始
以下は、[dataservice Studio] のプリセットメトリック API からデバイス数の履歴統計を呼び出すサンプルコードスニペットです。必要な API を呼び出すには、パラメーターの説明に基づいてコードを必要に応じて変更してください。
DataService Studio API を呼び出す際の 1 つの Alibaba Cloud アカウントあたりの 1 秒あたりの最大リクエスト数 (QPS) は 100 です。
// DataService Studio API を呼び出すサンプルコード
import com.aliyun.iot20180120.Client;
import com.aliyun.iot20180120.models.*;
import com.aliyun.teaopenapi.models.Config;
public class JavaDemo {
/**
* AccessKey ID と AccessKey Secret を使用してクライアントを初期化する
* @param accessKeyId
* @param accessKeySecret
* @return Client
* @throws Exception
*/
public static Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
Config config = new Config();
config.setAccessKeyId(accessKeyId);
config.setAccessKeySecret(accessKeySecret);
// アクセスドメイン名を設定する
config.setEndpoint("iot.cn-shanghai.aliyuncs.com");
return new Client(config);
}
public static void main(String[] args_) throws Exception {
// AccessKey ID と AccessKey Secret を入力する
Client client = JavaDemo.createClient("LTAI4FyDFmKN************", "WF3onkl8cq3cTyVW8n************");
ListAnalyticsDataRequest request = new ListAnalyticsDataRequest();
// API パスを指定する
request.setApiPath("/iot-cn-npk1v******/system/query/hist_dev_cnt_stat");
// API が配置されているインスタンス ID を示す
request.setIotInstanceId("iot-cn-npk1v******");
// ページングパラメーターを設定する: ページ番号
request.setPageNum(1);
// ページングパラメーターを設定する: ページサイズ
request.setPageSize(100);
List<ListAnalyticsDataRequest.ListAnalyticsDataRequestCondition> conditions = new ArrayList<>();
// ビジネス関連のリクエストパラメーターを定義する。Condition の構成については、以下の説明を参照してください。
ListAnalyticsDataRequest.ListAnalyticsDataRequestCondition condition = new ListAnalyticsDataRequest
.ListAnalyticsDataRequestCondition();
condition.setFieldName("__instance_id__");
condition.setOperate("=");
condition.setValue("iot-public");
conditions.add(condition);
ListAnalyticsDataRequest.ListAnalyticsDataRequestCondition condition1 = new ListAnalyticsDataRequest
.ListAnalyticsDataRequestCondition();
condition1.setFieldName("entityId");
condition1.setOperate("=");
condition1.setValue("all");
conditions.add(condition1);
ListAnalyticsDataRequest.ListAnalyticsDataRequestCondition condition2 = new ListAnalyticsDataRequest
.ListAnalyticsDataRequestCondition();
condition2.setFieldName("statDate");
condition2.setOperate("=");
condition2.setValue("20210221");
conditions.add(condition2);
request.setCondition(conditions);
// API 呼び出しを実行し、レスポンスをキャプチャする
ListAnalyticsDataResponse listAnalyticsDataResponse = client.listAnalyticsData(request);
// レスポンスを出力する
System.out.println(JSON.toJSONString(listAnalyticsDataResponse));
}
}システムリクエストパラメーター:
名前
タイプ
必須
値の例
説明
accessKeyId
String
はい
LTAI4FyDFmKN************
AccessKey ID と AccessKey Secret を取得するには、IoT Platform コンソールにログインし、アカウントプロファイル画像にカーソルを合わせて、[アクセスキー管理] をクリックします。
説明RAM ユーザーを使用する場合は、IoT Platform リソース管理を有効にするために、AliyunIOTFullAccess 権限ポリシーをアタッチします。 そうしないと、IoT Platform への接続に失敗する可能性があります。 権限付与方法については、「RAM ユーザーに IoT Platform へのアクセス権を付与する」をご参照ください。
accessKeySecret
String
はい
WF3onkl8cq3cTyVW8n************
エンドポイント
String
はい
iot.cn-shanghai.aliyuncs.com
Alibaba Cloud サービス API サーバーアドレス。 リージョンが IoT Platform プロダクトのリージョンと一致していることを確認してください。
この例では、リージョンは中国 (上海) (cn-shanghai) です。
apiPath
String
はい
/iot-cn-npk1v******/system/query/hist_dev_cnt_stat
API の操作パス。 [dataservice Studio] の API リストで、API の横にある [表示] をクリックして製品ページにアクセスし、API パスの値を見つけます。 詳細については、「API の管理」をご参照ください。
iotInstanceId
String
はい
iot-cn-npk1u******
API をホストしているインスタンスの ID。
pageNum
Integer
条件付き
1
ページネーションのページ番号。
pageSize
Integer
条件付き
100
1 ページあたりのエントリ数。最大 100。
ビジネス関連のリクエストパラメーター:
名前
タイプ
必須
説明
関連コード
fieldName
String
はい
リクエストのパラメーターの名前。
condition.setFieldName("entityId");operate
String
はい
パラメーターに使用される演算子。 オプションは次のとおりです。
完全一致の場合は
=。値の範囲の場合は
BETWEEN。複数の可能な値の場合は
IN。特定の値を除外する場合は
!=。
condition.setOperate("=");value
String
いいえ
パラメーターと一致させる値。
重要演算子が
BETWEENでない限り、このパラメーターは必須です。condition.setValue("all");betweenStart
String
いいえ
範囲パラメーターの開始値。
重要演算子が
BETWEENの場合は必須です。condition.setBetweenStart("0");betweenEnd
String
いいえ
範囲パラメーターの終了値。
重要演算子が
BETWEENの場合は必須です。condition.setBetweenEnd("100");各リクエストパラメーターは、特定の
conditionに関連付けられています。 これらの条件を構成するには、API の製品ページを参照して、必要な数のconditionを表示および設定します。 API リクエストパラメーターへのアクセスのガイダンスについては、「API の管理」をご参照ください。提供されているサンプルコードでは、API には __instance_id__、entityId、statDate の 3 つのリクエストパラメーターがあり、それぞれ
condition、condition1、condition2に対応しています。
実行結果
成功:
返されるパラメーターの詳細な説明は、対応する API の製品ページにあります。 特定の操作については、「管理と使用」をご参照ください。
以下の例は、成功した API レスポンスを示しています。これには、2021 年 2 月 21 日から API 呼び出し時までのパブリックインスタンスのデバイス数の統計が含まれています。
{ "body": { "data": { "hasNext": false, "pageNum": 1, "pageSize": 100, "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}]" }, "requestId": "6B78B8DB-EBDB-4451-BE30-893714******", "success": true }, "headers": { "access-control-allow-origin": "*", "date": "Mon, 15 Mar 2021 07:24:01 GMT", "content-length": "425", "access-control-max-age": "172800", "x-acs-request-id": "6B78B8DB-EBDB-4451-BE30-893714******", "access-control-allow-headers": "X-Requested-With, X-Sequence, _aop_secret, _aop_signature", "connection": "keep-alive", "content-type": "application/json;charset=utf-8", "access-control-allow-methods": "POST, GET, OPTIONS" } }失敗:
結果のエラーコードを調べることで、失敗の理由を理解できます。
以下の例は、無効なリクエストパラメーター
__instance_idd__が原因で API 呼び出しが失敗したことを示しています。__instance_id__に修正して、リクエストを再試行してください。