【发布时间】:2020-07-30 21:29:15
【问题描述】:
在我的应用程序中,消息通过 MQTT 从设备接收(和发送)到 GC。 我想从 Pubsub 检索(和发送)消息(然后将该数据放入 Firebase RTDB)但我不知道我必须订阅哪个主题:我的设备发送到 /devices/[deviceID]/state 但不可能在 GC Console 中为此主题创建一个 Sub。
谢谢。 J
【问题讨论】:
标签: cloud mqtt iot publish-subscribe
在我的应用程序中,消息通过 MQTT 从设备接收(和发送)到 GC。 我想从 Pubsub 检索(和发送)消息(然后将该数据放入 Firebase RTDB)但我不知道我必须订阅哪个主题:我的设备发送到 /devices/[deviceID]/state 但不可能在 GC Console 中为此主题创建一个 Sub。
谢谢。 J
【问题讨论】:
标签: cloud mqtt iot publish-subscribe
您的设备应该发送到 /events MQTT 主题,而不是 /state。
执行此操作后,消息将转到您在保存设备的注册表中设置的 Pub/Sub 主题。
因此,当您创建注册表时,您为其分配了一个 Pub/Sub 主题。为了响应来自设备的消息,您需要在某处创建关于该主题的订阅。设置它的最简单/最快的方法是拥有一个在 Pub/Sub 消息上触发的 Google Cloud 函数。因此,对于您的设备发送的每条消息,GCF(云功能)都会触发。
如果有很多消息进来(很多,我的意思是,在很短的时间内有数千条消息),那么您可能想要查看其他内容,例如 Cloud Run 容器,它有一个正在运行的订阅进程改为 Pub/Sub 主题并在它们进入时对其进行处理。
另一方面,Cloud -> 回到您的设备,您正在查看 IoT Core Admin SDK。因此,无论启动消息的是什么,您都需要实现 IoT Core Admin SDK。根据您的工作,您还需要考虑配置消息与命令。
配置消息保留在云端。因此,即使设备在发送消息时处于离线状态,最终也会在它们连接到云端时获得它。命令是一劳永逸的。一旦你发送它,它就消失了,所以如果设备不在线并且在发送时正在收听,那么消息就会丢失。权衡是命令要快得多。
我已经编写了一些关于如何使用 Raspberry Pis 和 Python 执行此操作的分步教程,第一个在这里:
https://medium.com/GabeWeiss/cloud-iot-step-by-step-connecting-raspberry-pi-python-2f27a2893ab5
这是关于连接到云的全部内容,所以您可能已经过去了,但我在底部链接到下一个,它正在逐步将消息从云发送回设备,这听起来很有帮助.
【讨论】: