イベントは非同期で、 Projectごとに 1 つのトピックで Google Cloud Pub/Sub によって管理されます。イベントは、ユーザーがアクセス トークンを取り消さず、イベント メッセージが期限切れでなければ、すべてのデバイスと構造をアップデートして、イベントの受信が保証されます。
イベントは SDM API のオプション機能です。これらは、Google Cloud プロジェクトを使用して簡単に実装と検証ができます。
イベントを有効にする
イベントは Device Access コンソールで有効にできます。Console でプロジェクトを選択します(まだ選択していない場合)。
すでにイベントを有効にしている場合(プロジェクトの作成中など)、Pub/Sub トピック プロジェクト情報フィールドの ID は、あらかじめ a という値を持つ必要があります。
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 サブスクリプションの作成後に初めてイベントを開始するには、呼び出しを行い、デバイスを 1 回限りのトリガーとしてリストします。
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] をクリックして、すべてのメッセージを表示し、確認します。
- 既存のメッセージを表示せずに確認メッセージを消去するには、[ パージ メッセージ] をクリックします。[削除] をクリックして確定します。
基本的な pull
コマンドで --auto-ack
フラグを使用して、Cloud Shell でメッセージを削除することもできます。
gcloud pubsub subscriptions pull subscription-id --auto-ack
サブスクリプションを管理
定期購入は、定期購入プロパティの使用で説明されているように、さまざまな方法で構成できます。
サブスクリプションとメッセージを管理する方法は任意ですが、本番環境のアプリケーションでは、このクイック スタートガイドのこれまでのユーザー アカウントではなく、サービス アカウントを使用して認証することをおすすめします。サービス アカウントは、ユーザーではなくアプリケーションや仮想マシンによって使用され、一意のアカウントキーを持ちます。
Device Accessによるサービス アカウントの認証の詳細については、イベントをご覧ください。