訂閱活動

事件由 Google Cloud Pub/Sub 非同步管理,並由 Google Cloud Pub/Sub 管理,並遵守每個 Project的單一主題。只要存取權杖未遭到使用者撤銷,且事件訊息尚未過期,事件就能提供所有裝置和結構的更新,以及接收事件。

事件是 SDM API 的選用功能。您只要使用 Google Cloud 專案,就能輕鬆實作及驗證這些檔案。

啟用活動功能

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

前往 Device Access Console

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

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

如果尚未啟用事件:

  1. 按一下「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. 在「Subscription details」(訂閱詳細資料) 畫面上,您應該會看到「Unacked message count」(未確認訊息數量) 圖表的活動。這表示訂閱項目已送出事件訊息。如果沒有看到任何活動,請稍待片刻,或是產生更多事件。
  3. 按一下 VIEW MESSAGES (查看訊息) 以開啟「Messages」面板。
  4. 按一下「PULL」即可查看訊息。這些動作應該與您用來產生事件的動作相對應。

您也可以在 Cloud Shell 中使用基本的 pull 指令查看訊息:

gcloud pubsub subscriptions pull subscription-id

如要進一步瞭解訂閱類型,以及 SDM API 傳送的事件類型及其使用方法,請參閱「事件」。

管理訊息

訊息應定期確認並清除,以便清理訂閱,避免將訊息重複傳送給其他訂閱者。您可以在「Pub/Sub 訂閱項目」專區中手動清除所有訂閱訊息:

前往 Google Cloud Pub/Sub 訂閱項目

  1. 按一下訂閱 ID。
  2. 您可以透過以下幾種方式確認及清除資料:
    1. 按一下 VIEW MESSAGES (查看訊息) 以開啟「Messages」面板。勾選「Enable ack message」核取方塊,然後點選「PULL」來查看並確認所有訊息。
    2. 按一下 「PURGE MESSAGES」,藉此清除所有現有訊息,而不查看訊息。按一下「PURGE」確認操作。

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

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

管理訂閱

你可以按照「使用訂閱屬性」一文所述,以多種方式設定訂閱項目。

雖然管理訂閱項目和訊息的方式由您決定,但針對正式版應用程式,我們建議您使用服務帳戶進行驗證,而不要使用本快速入門指南內目前為止的使用者帳戶。服務帳戶是由應用程式或虛擬機器 (而非個人) 使用,且擁有專屬的帳戶金鑰。

如要進一步瞭解 Device Access的服務帳戶驗證,請參閱事件