すべてのプロダクト
Search
ドキュメントセンター

IoT Platform:Java SDK の使用

最終更新日:Mar 27, 2025

Alibaba Cloud が提供する Java SDK は、DataService Studio API を呼び出すプロセスを簡素化し、指定されたデータの取得を容易にします。 SDK は、Maven 依存関係を使用してプロジェクトに統合するか、インストールパッケージをダウンロードしてローカルに設定できます。 このトピックでは、Java SDK を使用してプリセットメトリックの API を呼び出す方法、メソッド、および例を紹介します。

前提条件

  • プリセットメトリック API を呼び出すには、プロダクトとデバイスが作成され、データバックアップが完了していることを確認してください。 詳細な手順については、「プリセットメトリック API」をご参照ください。

  • プロダクトデータ API を呼び出すか、サービス API をカスタマイズするには、対応する API が作成されていることを確認してください。 詳細な手順については、「プロダクトデータ API」および「サービス API のカスタマイズ」をご参照ください。

詳細については、「管理と使用」をご参照ください。

SDK のインストール

  1. Java 開発環境をセットアップします。

    公式 Java Web サイトから環境をダウンロードし、提供されているインストール手順に従います。

  2. Java 用 IoT Platform SDK をインストールします。

    1. 公式 Apache Maven Web サイトから Maven ソフトウェアを入手します。

    2. 次の 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 つのリクエストパラメーターがあり、それぞれ conditioncondition1condition2 に対応しています。

実行結果

  • 成功:

    返されるパラメーターの詳細な説明は、対応する 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__ に修正して、リクエストを再試行してください。