イベントに登録する

イベントは非同期で、 Projectごとに 1 つのトピックで Google Cloud Pub/Sub によって管理されます。イベントはすべてのデバイスと構造の更新を提供します。アクセス トークンがユーザーによって取り消されず、イベント メッセージの有効期限が切れていない限り、イベントの受信は保証されます。

イベントは SDM API のオプション機能です。Google Cloud プロジェクトを使用して簡単に実装して検証できます。

イベントを有効にする

イベントは Device Access コンソールで有効にできます。コンソールでプロジェクトを選択します(まだ選択していない場合)。

Device Access コンソールに移動します。

イベントをすでに有効にしている場合(プロジェクトの作成時など)、[イベントの Pub/Sub トピックを有効にする] セクションの [Pub/Sub トピック] フィールドには、Topic ID という値が古い形式ですでに設定されているはずです。

projects/sdm-prod/topics/enterprise-project-id

このトピック形式は Google がホストします。Google がホストする Pub/Sub トピックを無効にしない限り、プロジェクトに保持されます。後で再度有効にすると、セルフホストの Pub/Sub トピックに切り替わります。

セルフホストの Pub/Sub トピックは、デベロッパー独自の Google Cloud プロジェクトで作成または変更できます。デベロッパーは、Pub/Sub の使用に関連するすべての費用も負担します。詳細については、Pub/Sub の料金をご覧ください。

Pub/Sub トピックを作成します。

gcloud pubsub topics create {topic} --message-retention-duration=0s

プロジェクトのトピック ID のイベントデータにアクセスして公開するために必要な SDM API 権限を付与します。

gcloud pubsub topics add-iam-policy-binding projects/{project}/topics/{topic} \
--member="group:sdm-publisher@googlegroups.com" \
--role="roles/pubsub.publisher"

新しく作成されたトピック ID の形式は次のようになります。

projects/gcp-project-name/subscriptions/topic-id

トピック ID をメモしておいてください。イベントの有効化を完了する際に必要になります。詳細については、トピックを作成するをご覧ください。

イベントを有効にするには:

  1. [イベントを有効にする] をオンにして、[プロジェクトを作成] をクリックします。
  2. [Pub/Sub トピック] の アイコンをクリックし、[Pub/Sub トピックでイベントを有効にする] を選択します。
  3. 前に指定した、または作成した Pub/Sub トピック ID を入力します。

トピック ID をコピーします。トピックのサブスクリプションを作成してイベント メッセージを取得するために必要になります。

pull サブスクリプションを作成する

pull サブスクリプションでは、サブスクライバーがキューに登録されたイベント メッセージに対して Pub/Sub サーバーへのリクエストを開始します。これにより、承認済みデバイスでイベントが生成されていることを簡単に確認できます。

Google Cloud プロジェクトの Cloud Shell を開きます。

Google Cloud Shell に移動

Cloud Shell プロンプトで次のコマンドを実行して、任意の subscription-id と一意のトピック ID を使用して、トピックへの pull サブスクリプションを作成します。

gcloud pubsub subscriptions create subscription-id --topic=projects/gcp-project-name/subscriptions/topic-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 値とともに自動的に送信されます。

手動で生成するには、次のいずれかを行います。

  1. Google Nest Thermostat のモードの変更など、デバイスの状態を物理的に変更する。
  2. Google Nest Cam Indoor で、モーション、人物、音などのアクティビティをトリガーします。
  3. SDM API を使用してデバイス コマンドを実行する

メッセージを表示する

イベント メッセージは、Google Cloud プロジェクトの [Pub/Sub サブスクリプション] セクションで確認できます。

Google Cloud Pub/Sub サブスクリプションに移動

  1. 前に作成したサブスクリプション ID をクリックします。
  2. [サブスクリプションの詳細] 画面に、[未確認メッセージ数] グラフのアクティビティが表示されます。これは、サブスクリプションにイベント メッセージが届いたことを示します。アクティビティが表示されない場合は、しばらく待つか、さらにイベントを生成します。
  3. [ メッセージを表示] をクリックして [メッセージ] パネルを表示します。
  4. [PULL] をクリックしてメッセージを表示します。イベントの生成に使用したアクションに対応している必要があります。

メッセージは、基本的な pull コマンドを使用して Cloud Shell で表示することもできます。

gcloud pubsub subscriptions pull subscription-id

サブスクリプション タイプ、SDM API によって送信されるイベントのタイプ、およびそれらの使用方法の詳細については、イベントをご覧ください。

メッセージを管理する

サブスクリプションをクリーンな状態に保ち、他のサブスクライバーへのメッセージの重複配信を回避するには、メッセージを定期的に確認応答してパージする必要があります。サブスクリプション メッセージはすべて、[Pub/Sub サブスクリプション] セクションで手動でパージできます。

Google Cloud Pub/Sub サブスクリプションに移動

  1. サブスクリプション ID をクリックします。
  2. 確認とパージを行う方法はいくつかあります。
    1. [ メッセージを表示] をクリックして [メッセージ] パネルを表示します。[確認応答メッセージを有効にする] チェックボックスをオンにして [PULL] をクリックし、すべてのメッセージを表示して確認応答を行います。
    2. [ メッセージをパージ] をクリックして、既存のすべてのメッセージを表示せずに肯定応答してパージします。[パージ] をクリックして確定します。

Cloud Shell でメッセージをパージするには、基本的な pull コマンドに --auto-ack フラグを指定します。

gcloud pubsub subscriptions pull subscription-id --auto-ack

サブスクリプションを管理

サブスクリプションは、サブスクリプション プロパティの使用で説明されているように、さまざまな方法で構成できます。

サブスクリプションとメッセージを管理する方法は任意ですが、本番環境のアプリケーションでは、このクイックスタート ガイドでこれまで使用してきたユーザー アカウントではなく、認証にサービス アカウントを使用することをおすすめします。サービス アカウントは、ユーザーではなくアプリケーションまたは仮想マシンで使用され、独自のアカウントキーを持ちます。

Device Accessを使用したサービス アカウント認証の詳細については、イベントをご覧ください。