イベントは非同期で、 Projectごとに 1 つのトピックで Google Cloud Pub/Sub によって管理されます。イベントはすべてのデバイスと構造にアップデートを提供し、ユーザーがアクセス トークンを取り消さず、イベント メッセージの有効期限が切れていない限り、イベントの受信は保証されます。
イベントは、SDM API のオプション機能です。これらは、Google Cloud プロジェクトを使用して簡単に実装および検証できます。
イベントを有効にする
イベントはコンソールで 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 サブスクリプションの作成後に初めてイベントを開始するには、呼び出しを行い、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 の周囲の温度が変化した場合、温度 トレイトのイベントが新しい ambientTemperatureCelsius
値で自動的に送信されます。
手動で生成するには、次のいずれかを行います。
- Google Nest Thermostat のモードを変更するなど、デバイスの状態を物理的に変更します。
- Google Nest Cam Indoor で動き、人物、音などのイベントをトリガーする。
- SDM API を使用してデバイス コマンドを実行します。
メッセージを表示する
イベント メッセージは、Google Cloud プロジェクトの Pub/Sub サブスクリプション セクションで表示できます。
Google Cloud Pub/Sub の [サブスクリプション] に移動
- 先ほど作成したサブスクリプション ID をクリックします。
- [サブスクリプションの詳細] 画面で、[未確認メッセージ数] グラフのアクティビティが表示されます。これは、サブスクリプションのイベント メッセージが到着したことを示します。アクティビティが表示されない場合は、しばらく待つか、さらにイベントをいくつか生成します。
- [ メッセージを表示] をクリックして、[メッセージ] パネルを開きます。
- [PULL] をクリックしてメッセージを表示します。イベントの生成に使用したアクションに対応している必要があります。
メッセージは、Cloud Shell で基本的な pull
コマンドを使用して表示することもできます。
gcloud pubsub subscriptions pull subscription-id
サブスクリプションのタイプ、SDM API によって送信されるイベントのタイプ、それらの使用方法について詳しくは、イベントをご覧ください。
メッセージを管理する
サブスクリプションをクリーンに保ち、他のサブスクライバーに重複してメッセージが配信されないように、メッセージの確認応答とパージを定期的に行う必要があります。すべてのサブスクリプション メッセージは、Pub/Sub の [サブスクリプション] セクションで手動で削除できます。
Google Cloud Pub/Sub の [サブスクリプション] に移動
- サブスクリプション ID をクリックします。
- 確認応答とパージを行うには、いくつかの方法があります。
- [ メッセージを表示] をクリックして、[メッセージ] パネルを開きます。[確認応答メッセージを有効にする] チェックボックスをオンにして [PULL] をクリックし、すべてのメッセージを表示して確認応答します。
- [ PURGE MESSAGES] をクリックすると、既存のすべてのメッセージを表示せずに、確認応答を行ってパージできます。[PURGE] をクリックして確定します。
Cloud Shell では、基本的な pull
コマンドで --auto-ack
フラグを使用してメッセージを削除することもできます。
gcloud pubsub subscriptions pull subscription-id --auto-ack
サブスクリプションを管理
定期購入はさまざまな方法で構成できます。詳しくは、定期購入プロパティの使用をご覧ください。
サブスクリプションとメッセージの管理方法は任意ですが、本番環境のアプリケーションでは、このクイックスタート ガイドのこれまでのユーザー アカウントではなく、サービス アカウントを使用して認証することをおすすめします。サービス アカウントは、ユーザーではなくアプリケーションや仮想マシンによって使用され、固有のアカウント キーがあります。
Device Accessを使用したサービス アカウント認証の詳細については、イベントをご覧ください。