イベントは非同期で、 Projectごとに 1 つのトピックで Google Cloud Pub/Sub によって管理されます。イベントはすべてのデバイスと構造の更新情報を提供します。アクセス トークンがユーザーによって取り消されず、イベント メッセージの有効期限が切れていない限り、イベントの受信は保証されます。
イベントは SDM API のオプション機能です。Google Cloud プロジェクトを使用して簡単に実装して検証できます。
イベントを有効にする
イベントは Device Access コンソールで有効にできます。まだ選択していない場合は、コンソールでプロジェクトを選択します。
Device Access コンソールに移動します。
イベントをすでに有効にしている場合(プロジェクトの作成時など)、[プロジェクト情報] セクションの [Pub/Sub トピック] フィールドに、トピック ID という値がすでに含まれています。この値の形式は次のとおりです。
projects/sdm-prod/topics/enterprise-project-id
イベントを有効にしていない場合:
- Pub/Sub トピックの アイコンをクリックし、[編集] を選択します。
- [イベントを有効にする] をオンにして、[保存] をクリックします。
- 上記の形式でトピック ID が生成されます。
トピック ID をコピーします。トピックのサブスクリプションを作成してイベント メッセージを取得するために必要になります。
pull サブスクリプションを作成する
pull サブスクリプションでは、サブスクライバーがキューに登録されたイベント メッセージに対して Pub/Sub サーバーへのリクエストを開始します。これにより、承認済みデバイスでイベントが生成されていることを簡単に確認できます。
Google Cloud プロジェクトの Cloud Shell を開きます。
Cloud Shell プロンプトで次のコマンドを実行して、任意の subscription-id と一意のトピック ID を使用して、トピックへの pull サブスクリプションを作成します。
gcloud pubsub subscriptions create subscription-id --topic=projects/sdm-prod/topics/enterprise-project-id
Created subscription [projects/gcp-project-name/subscriptions/subscription-id].
イベントを開始する
Pub/Sub サブスクリプションが作成されたら、イベントを初めて開始するには、デバイスを一時的なトリガーとして一覧表示するように呼び出します。
curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer access-token'
すべての構造とデバイスのイベントは、この API 呼び出し後に公開されます。
イベントを生成する
イベントは、すべての特徴フィールドの変更に対して生成されます。一部のイベントは自動で、一部のイベントは手動で生成されます。
たとえば、Google Nest Thermostat の周囲温度が変化すると、Temperature トレイトのイベントが、新しい ambientTemperatureCelsius
値とともに自動的に送信されます。
手動で生成するには、次のいずれかを行います。
- Google Nest Thermostat のモードの変更など、デバイスの状態を物理的に変更する。
- Google Nest Cam Indoor で、モーション、人物、音などのアクティビティをトリガーします。
- SDM API を使用してデバイス コマンドを実行する。
メッセージを表示する
イベント メッセージは、Google Cloud プロジェクトの [Pub/Sub サブスクリプション] セクションで確認できます。
Google Cloud Pub/Sub サブスクリプションに移動
- 前に作成したサブスクリプション ID をクリックします。
- [サブスクリプションの詳細] 画面に、[未確認メッセージ数] グラフのアクティビティが表示されます。これは、サブスクリプションにイベント メッセージが届いたことを示します。アクティビティが表示されない場合は、しばらく待つか、イベントをさらに生成します。
- [ メッセージを表示] をクリックして [メッセージ] パネルを表示します。
- [PULL] をクリックしてメッセージを表示します。イベントの生成に使用したアクションに対応している必要があります。
メッセージは、基本的な pull
コマンドを使用して Cloud Shell で表示することもできます。
gcloud pubsub subscriptions pull subscription-id
サブスクリプション タイプ、SDM API によって送信されるイベントのタイプ、およびそれらの使用方法の詳細については、イベントをご覧ください。
メッセージを管理する
サブスクリプションをクリーンな状態に保ち、他のサブスクライバーへのメッセージの重複配信を回避するには、メッセージを定期的に確認応答してパージする必要があります。サブスクリプション メッセージはすべて、[Pub/Sub サブスクリプション] セクションで手動でパージできます。
Google Cloud Pub/Sub サブスクリプションに移動
- サブスクリプション ID をクリックします。
- 確認とパージを行う方法はいくつかあります。
- [ メッセージを表示] をクリックして [メッセージ] パネルを表示します。[確認応答メッセージを有効にする] チェックボックスをオンにして [PULL] をクリックし、すべてのメッセージを表示して確認応答を行います。
- [ メッセージをパージ] をクリックすると、既存のすべてのメッセージを表示せずに肯定応答してパージできます。[パージ] をクリックして確定します。
Cloud Shell でメッセージをパージするには、基本的な pull
コマンドに --auto-ack
フラグを指定します。
gcloud pubsub subscriptions pull subscription-id --auto-ack
サブスクリプションを管理
サブスクリプションは、サブスクリプション プロパティの使用で説明されているように、さまざまな方法で構成できます。
サブスクリプションとメッセージを管理する方法は任意ですが、本番環境のアプリケーションでは、このクイックスタート ガイドでこれまで使用してきたユーザー アカウントではなく、認証にサービス アカウントを使用することをおすすめします。サービス アカウントは、ユーザーではなくアプリケーションまたは仮想マシンで使用され、独自のアカウントキーを持ちます。
Device Accessを使用したサービス アカウント認証の詳細については、イベントをご覧ください。