【问题标题】:Google IoT Core - How to subscribe to a topicGoogle IoT Core - 如何订阅主题
【发布时间】:2022-01-04 18:49:43
【问题描述】:

我开发了一个能够通过 MQTT 协议连接到 Google IoT Core 的设备,我可以发布遥测主题的 MQTT 消息 (/devices/DEVICE_ID/events)。

但我不知道如何为我的设备订阅一个通用主题并通过该主题将消息从云发送到设备。 通过控制台我创建了主题MyTestTopic 和订阅MyTestTopic-sub,我想我必须以某种方式订阅我的设备订阅MyTestTopic-sub,但我不知道我必须订阅哪个主题我的设备。

我尝试为我的设备订阅以下主题:

  • projects/PROJECT_ID/topics/MyTestTopic
  • projects/PROJECT_ID/topics/MyTestTopic-sub
  • /devices/DEVICE_ID/events/MyTestTopic
  • /devices/DEVICE_ID/events/MyTestTopic-sub

订阅这些主题似乎成功了,但是设备没有收到我从控制台发送的消息。

有什么建议吗?

我从 4 年前发现了这个线程 (Google Cloud IoT - Invalid MQTT publish topic),从中我了解到可以只订阅一些预定义的主题,也可以从我阅读的各种文档中了解到 Google IoT Core 允许设备只订阅两个主题:/devices/{device-id}/config/devices/{device-id}/commands/#

从那以后有什么变化吗?

【问题讨论】:

标签: google-cloud-platform mqtt publish-subscribe google-cloud-iot


【解决方案1】:

所以要清楚,这里有两个不同的“主题”。您找到的文档、配置和命令中描述了 MQTT 主题。这些是使用 MQTT 客户端(例如 Paho MQTT)在设备上订阅的,并通过 IoT Core Admin API 从其他地方发送到设备。然后是 Pub/Sub 主题。开箱即用,使用 IoT Core 的设备根本不直接与 Pub/Sub 交互。他们仅通过 MQTT 主题发布/接收。因此,如果您使用 IoT Core 注册设备,所有消息都会通过 MQTT 网桥(或 HTTPS)来来回回。

在该 github 存储库中链接到的 Gambit 支持是对 Pub/Sub 主题(不是 MQTT)的直接订阅。如果您查看 Python 代码,它正在通过设备或代理设备上需要存在的 json 令牌(服务帐户持有者令牌)建立适当的 Google Cloud 凭据。根据您使用的设备,这当然可能是不可能的(在微控制器上实现 GCP API 充其量是困难的)。

我见过的最简单的方法是实现一个订阅您要使用的 Pub/Sub 主题的云函数,并实现适当的 IoT Core 管理员调用以将 Pub/Sub 消息推送到设备根据需要。但是,当然,这完全取决于您要做什么。

【讨论】:

  • 感谢您的回复。您的意思是有两种方法可以从 Pub/Sub 服务接收消息吗? 1. 使用 Google API(在嵌入式设备上实现可能很复杂) 2. 使用外部网关,设备通过该网关连接到 Pub/Sub 服务
  • 基本上,是的。要与 Pub/Sub 交互,您需要使用 Gambit 发布的内容:github.com/gambitcomminc/gcp-iot。该代码将允许能够实现 GCP SDK 的东西从 Pub/Sub 主题接收消息。 IoT Core 的特点是它不使用 API,它使用一个简单的端点与 GCP 通信。因此没有额外的服务帐户/授权要求。当您直接与 IoT Core 以外的 GCP 资源通信时,您必须通过 GCP 身份验证,而不仅仅是 IoT Core 所需的 JWT 身份验证。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-02-17
  • 1970-01-01
  • 2016-08-23
  • 2019-01-30
  • 2017-11-28
  • 2018-08-23
  • 1970-01-01
相关资源
最近更新 更多