【问题标题】:google cloud Iot / MQTT / pubsub sending and receivinggoogle cloud Iot / MQTT / pubsub 收发
【发布时间】:2020-07-30 21:29:15
【问题描述】:

在我的应用程序中,消息通过 MQTT 从设备接收(和发送)到 GC。 我想从 Pubsub 检索(和发送)消息(然后将该数据放入 Firebase RTDB)但我不知道我必须订阅哪个主题:我的设备发送到 /devices/[deviceID]/state 但不可能在 GC Console 中为此主题创建一个 Sub。

谢谢。 J

【问题讨论】:

    标签: cloud mqtt iot publish-subscribe


    【解决方案1】:

    您的设备应该发送到 /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

    这是关于连接到云的全部内容,所以您可能已经过去了,但我在底部链接到下一个,它正在逐步将消息从云发送回设备,这听起来很有帮助.

    【讨论】: