訂閱活動

事件為非同步資料,由 Google Cloud Pub/Sub 管理,每個 Project都有一個主題。事件會為所有裝置和結構提供更新,只要使用者未撤銷存取權杖,且事件訊息未過期,系統就會確保收到事件。

事件是 SDM API 的選用功能,您可以使用 Google Cloud 專案輕鬆實作及驗證這些測試。

啟用活動功能

您可以在 Device Access 控制台啟用事件。如果尚未在控制台中選取專案,請立即選取。

前往 Device Access 控制台

如果您已啟用事件 (例如在建立專案時),則「啟用事件的 Pub/Sub 主題」部分的「Pub/Sub 主題」欄位應已包含一個值 (稱為主題 ID),格式如下:

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

這個主題格式由 Google 代管,除非您停用 Google 代管的 Pub/Sub 主題,否則會持續保留在專案中。如果您稍後重新啟用,系統會切換至自管 Pub/Sub 主題。

開發人員可以在自己的 Google Cloud 專案中建立或變更自行代管的 Pub/Sub 主題。開發人員也必須負責使用 Pub/Sub 的所有費用。詳情請參閱 Pub/Sub 定價

建立 Pub/Sub 主題:

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

授予必要的 SDM API 權限,以便存取及發布專案的 Topic ID 事件資料:

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,因為您需要這個 ID 才能完成事件啟用程序。詳情請參閱「建立主題」一文。

如要啟用事件,請按照下列步驟操作:

  1. 勾選「啟用事件」,然後按一下「建立專案」
  2. 按一下 Pub/Sub 主題 圖示,然後選取「啟用具有 PubSub 主題的事件」
  3. 輸入先前提供或建立的 Pub/Sub 主題 ID。

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

建立提取訂閱項目

提取式訂閱是指訂閱者向 Pub/Sub 伺服器發出要求,要求處理排入佇列的事件訊息。這是驗證授權裝置是否產生事件的快速簡便方法。

開啟 Google Cloud 專案的 Cloud Shell:

前往 Google Cloud Shell

在 Cloud Shell 提示中執行下列指令,使用您偏好的 subscription-id 和專屬主題 ID,建立主題的拉取訂閱項目:

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 呼叫之後發布所有結構體和裝置的事件。

產生事件

系統會針對所有特徵欄位變更產生事件,其中有些是自動產生,有些則是手動產生。

舉例來說,如果 Nest Thermostat 附近的環境溫度有所變動,系統會自動傳送Temperature 特徵的事件,並附上新的 ambientTemperatureCelsius 值。

如要手動產生這項資訊,請採用下列任一做法:

  1. 實體變更裝置狀態,例如變更 Nest Thermostat 的模式。
  2. 觸發 Google Nest Cam Indoor 的事件,例如動作、有人或聲響。
  3. 使用 SDM API 執行裝置指令

查看訊息

您可以在 Google Cloud 專案的 Pub/Sub 訂閱專區中查看事件訊息:

前往 Google Cloud Pub/Sub 訂閱項目

  1. 按一下先前建立的訂閱 ID。
  2. 在「Subscription detail」畫面上,您應該會看到「Unacked message count」圖表的活動。這表示訂閱項目已收到事件訊息。如果沒有看到任何活動,請稍候片刻,或產生更多事件。
  3. 按一下「查看訊息」,即可開啟「訊息」面板。
  4. 按一下「PULL」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. 按一下「清除訊息」,即可確認所有現有訊息並清除,而無須查看訊息內容。按一下「清除」確認。

您也可以在 Cloud Shell 中使用 --auto-ack 標記搭配基本 pull 指令,藉此清除訊息:

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

管理訂閱項目

如「使用訂閱屬性」一節所述,您可以透過各種方式設定訂閱項目。

雖然您可以自行決定如何管理訂閱項目和訊息,但對於實際應用程式,我們建議您使用服務帳戶進行驗證,而不是使用本快速上手指南中所述的使用者帳戶。服務帳戶由應用程式或虛擬機器使用,而非由人使用,且有專屬的帳戶金鑰。

如要進一步瞭解如何使用 Device Access驗證服務帳戶,請參閱「事件」一文。