訂閱活動

事件是由 Google Cloud Pub/Sub 以非同步的方式管理和管理,每個主題都以 Project為單位。只要使用者未撤銷存取權杖,且事件訊息尚未過期,則系統會保證所有裝置、結構和事件的接收更新。

事件是 SDM API 的選用功能。只要使用 Google Cloud 專案,就能輕鬆導入並進行驗證。

啟用活動功能

您可以在 Device Access 管理中心啟用事件。如果您尚未選取主控台中的專案,請先選取。

前往 Device Access 控制台

如果您已啟用事件 (例如在建立專案期間),專案資訊部分的「Pub/Sub 主題」欄位應已有稱為「主題 ID」的值,格式如下:

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

如果您尚未啟用事件:

  1. 按一下「Pub/Sub topic」(Pub/Sub 主題) 圖示,然後選取「Edit」(編輯)
  2. 勾選「啟用事件」,然後按一下「儲存」
  3. 系統會為上述格式產生主題 ID。

複製主題 ID 後,您需要在主題中建立訂閱項目,才能擷取事件訊息。

建立提取訂閱項目

提取訂閱是指訂閱者向 Pub/Sub 伺服器發出排入佇列事件訊息的要求。這個快速又簡單的方法,可以確認授權裝置是否已產生事件。

開啟 Google Cloud 專案的 Cloud Shell:

前往 Google Cloud Shell

在 Cloud Shell 指令列提示中,使用您偏好的 subscription-id 和不重複的主題 ID,建立主題的提取訂閱項目:

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 呼叫後發布。

產生事件

系統會針對所有特徵欄位產生事件,但有些為自動執行,有些是手動的。

舉例來說,如果 Nest Thermostat 附近的環境溫度發生變化,溫度 事件也會自動以新的 ambientTemperatureCelsius 值傳送。

如要手動產生報表,請採取下列其中一種做法:

  1. 變更裝置狀態,例如變更 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. 按一下 「查看訊息」 開啟「訊息」面板。勾選「Enable ack messages」(啟用確認訊息) 核取方塊,然後按一下「PULL」以查看並確認所有訊息。
    2. 按一下 「清除訊息」即可確認所有現有訊息,而不查看這些訊息。按一下 [發布] 加以確認。

您也可以透過基本 pull 指令,使用 --auto-ack 旗標清除 Cloud Shell 中的訊息:

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

管理訂閱

訂閱項目的設定方式有很多種,詳情請參閱「使用訂閱屬性」一文。

管理訂閱項目與訊息的方式完全由您決定,但如果是正式版應用程式,建議您使用服務帳戶進行驗證,而非使用本快速入門指南中的使用者帳戶。服務帳戶為應用程式或虛擬機器 (而非使用者) 使用,且有專屬的帳戶金鑰。

如要進一步瞭解如何透過 Device Access進行服務帳戶驗證,請參閱事件一節。