Google IoT Core - 如何订阅主题
Google IoT Core - How to subscribe to a topic
我开发了一个能够通过 MQTT 协议连接到 Google IoT Core 的设备,我可以在遥测主题 (/devices/DEVICE_ID/events
) 上发布 MQTT 消息。
但我不知道如何为我的设备订阅通用主题并通过该主题将消息从云端发送到设备。
通过控制台我创建了主题 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 IoT Core 只允许设备订阅两个主题:/devices/{device-id}/config
和 /devices/{device-id}/commands/#
从那时起有什么变化吗?
明确地说,这里有两个不同的“主题”。您找到的文档、配置和命令中描述了 MQTT 主题。这些是使用 MQTT 客户端(例如 Paho MQTT)在设备上订阅的,并通过 IoT Core Admin API 从其他地方发送到设备。然后是 Pub/Sub 个主题。开箱即用,使用 IoT Core 的设备根本不直接与 Pub/Sub 交互。他们 publish/receive 仅通过 MQTT 主题。因此,如果您使用 IoT Core 注册设备,则所有消息都通过 MQTT 桥(或 HTTPS)来来去去。
github 存储库中链接到的 Gambit 支持是对 Pub/Sub 主题(不是 MQTT)的直接订阅。如果您查看 Python 代码,它会通过 json 令牌(服务帐户持有者令牌)建立适当的 Google 云凭证,该令牌需要出现在设备或代理设备上。根据您使用的设备,这当然可能是不可能的(在微控制器上实现 GCP API 充其量是困难的)。
我见过的最简单的方法是实现一个 Cloud Function 来订阅您要使用的 Pub/Sub 主题,并实现适当的 IoT Core Admin 调用以推送 Pub/Sub 根据需要向设备发送消息。但是,当然,这完全取决于您要做什么。
我开发了一个能够通过 MQTT 协议连接到 Google IoT Core 的设备,我可以在遥测主题 (/devices/DEVICE_ID/events
) 上发布 MQTT 消息。
但我不知道如何为我的设备订阅通用主题并通过该主题将消息从云端发送到设备。
通过控制台我创建了主题 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 年前发现了这个线程 (/devices/{device-id}/config
和 /devices/{device-id}/commands/#
从那时起有什么变化吗?
明确地说,这里有两个不同的“主题”。您找到的文档、配置和命令中描述了 MQTT 主题。这些是使用 MQTT 客户端(例如 Paho MQTT)在设备上订阅的,并通过 IoT Core Admin API 从其他地方发送到设备。然后是 Pub/Sub 个主题。开箱即用,使用 IoT Core 的设备根本不直接与 Pub/Sub 交互。他们 publish/receive 仅通过 MQTT 主题。因此,如果您使用 IoT Core 注册设备,则所有消息都通过 MQTT 桥(或 HTTPS)来来去去。
github 存储库中链接到的 Gambit 支持是对 Pub/Sub 主题(不是 MQTT)的直接订阅。如果您查看 Python 代码,它会通过 json 令牌(服务帐户持有者令牌)建立适当的 Google 云凭证,该令牌需要出现在设备或代理设备上。根据您使用的设备,这当然可能是不可能的(在微控制器上实现 GCP API 充其量是困难的)。
我见过的最简单的方法是实现一个 Cloud Function 来订阅您要使用的 Pub/Sub 主题,并实现适当的 IoT Core Admin 调用以推送 Pub/Sub 根据需要向设备发送消息。但是,当然,这完全取决于您要做什么。