事件是异步的,并由 Google Cloud Pub/Sub 进行管理,每个 Project。事件为所有设备和结构提供更新,而事件的接收则是 只要用户未撤消访问令牌,且事件消息尚未 已过期。
事件是 SDM API 的可选功能。他们可以 可以轻松实现和验证 项目。
允许显示活动
事件可以在控制台中启用。 Device Access 在 控制台(如果您尚未执行此操作)。
如果您已经启用了事件(例如,在项目期间 创建)、 项目信息部分中的 Pub/Sub 主题字段应已填写 值(称为主题 ID),格式为:
projects/sdm-prod/topics/enterprise-project-id
如果您尚未启用事件:
- 点击 Pub/Sub 的 图标 主题,然后选择修改。
- 选中启用事件,然后点击保存。
- 系统会为您生成一个主题 ID(格式如上所示)。
复制您的主题 ID,您需要用它来创建对主题的订阅, 可检索事件消息。
创建拉取订阅
拉取订阅是订阅者向 Pub/Sub 发起请求 服务器。您可以通过这种方式快速、轻松地验证 系统正在为您授权的设备生成 个事件。
为您的 Google Cloud 项目打开 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
值。
要手动生成一个代码,请执行以下任一操作:
- 以物理方式更改设备状态,例如更改 Nest Thermostat。
- 触发事件,如动作、人物或声音 Google Nest Cam Indoor。
- 执行设备命令 使用 SDM API。
查看消息
您可以在 Google Cloud 项目、 Pub/Sub 订阅部分:
- 点击您之前创建的订阅 ID。
- 在订阅详情屏幕上,您应该会看到 未确认消息数图表。这表示事件消息来自 持续到订阅阶段如果您没有看到任何活动,请稍等片刻 或再生成几个事件
- 点击 查看消息即可执行以下操作: Messages 面板。
- 点击拉取以查看消息。它们应与 生成事件的方法
您还可以使用基本的 pull
命令在 Cloud Shell 中查看消息:
gcloud pubsub subscriptions pull subscription-id
如需详细了解订阅类型以及发送的事件类型 SDM API 及其使用方法,请参阅 事件。
管理邮件
应定期确认和清除消息,以保留订阅 清理消息,避免重复向其他订阅者传送消息。全部 订阅消息可以在 Pub/Sub 订阅中手动完全清除 部分:
- 点击订阅 ID。
- 您可以通过以下几种方式确认和完全清除这些数据:
<ph type="x-smartling-placeholder">
- </ph>
- 点击 查看消息即可执行以下操作: Messages 面板。选中 Enable ack messages(启用确认消息) 复选框,然后点击拉取以查看并确认所有消息。
- 点击 “清除” MESSAGES 以在不使用 查看。点击完全清除进行确认。
您还可以使用 --auto-ack
标志在 Cloud Shell 中完全清除消息
基本的 pull
命令:
gcloud pubsub subscriptions pull subscription-id --auto-ack
管理订阅
订阅可以通过多种方式进行配置,具体说明请参见 使用订阅属性。
虽然如何管理订阅和消息由您决定 建议您使用 服务账号: 而不需要像你现在那样使用 入门指南。服务账号由应用或虚拟机使用,而不是 且拥有自己的唯一账号密钥。
如需详细了解如何使用 Device Access进行服务账号身份验证,请参阅 事件。