Google Cloud IoT Coreに登録されている端末の一覧をC#で取得する

概要

Google Cloud IoT Coreに登録されている端末の一覧をC#で取得する方法をまとめます。

Cloud IoT Coreに端末を登録する

Quickstart を参考にClout IoT Coreを作成して、端末を作成します。この記事の範囲では以下を行えばよいです。

  • Before you begin
  • Create a device registry
  • Add a device to the registry
  • Clean up

今回はTestDevice1TestDevice2という2つの端末を作成しました。

f:id:LocaQ:20190117230922p:plain:w800

また、それぞれの端末のメタ情報にNameを追加しました。

f:id:LocaQ:20190117230953p:plain:w900

認証

以下のページを参考にサービスアカウントというものを作成します。

認証の概要

作成するアカウントは以下を選びました。

  • サービスアカウント:Compute Engineのデフォルトのサービスアカウント
  • キーのタイプ:JSON

f:id:LocaQ:20190117231023p:plain:w600

※もしかしたらCompute EngineVMを作成していないとデフォルトのサービスアカウントは出てこないかもしれません。

「作成」ボタンを押すとJSONファイルがダウンロードされます。

サンプルプログラム

コード

Cloud IoT Coreに登録されている端末の一覧と、各端末の情報を表示するサンプルプログラムです。

Google Cloud IoT Coreに登録されている端末の一覧を取得するプログラム

プログラム中のPROJECT_ID, REGION, REGISTRY_IDは各自置き換えます。PROJECT_IDはClout IoT Coreを作成したプロジェクトのID、REGIONus-central1など、REGISTRY_IDはCloud IoT CoreのレジストリIDです。

端末の情報として以下の2つを表示しています。

  • ID
  • メタ情報のName

cloudIotService.Projects.Locations.Registries.Devices.List(parent).ExecuteAsync()で取得できる端末は、IDなどの限られた情報のみ設定されているようで、メタ情報は取得できません。

そこで、さらに各端末毎にcloudIotService.Projects.Locations.Registries.Devices.Get(name).ExecuteAsync()を呼び出して詳細な端末情報を取得します。このメソッドで取得した端末情報にはメタ情報なども含まれています。

必要な設定

このプログラムは環境変数GOOGLE_APPLICATION_CREDENTIALSが必要です。値はサービスアカウントの作成でダウンロードしたJSONファイルのパスです。 この環境変数GoogleCredential.GetApplicationDefault()で参照しているようです。

また、このプログラムでは Google.Apis.CloutIot.v1 を使っているので、プロジェクトに追加します。

参照