首页 > 解决方案 > 如何使用 MQTT 和 C 代码订阅遥测事件?

问题描述

如何使用 MQTT 和 C 代码订阅遥测事件?(这是一个微控制器代码)我可以将数据发送到指定的主题,但是当我尝试订阅这个主题时,我收到了错误消息

这是来自日志“mqttTopic”的消息:“/devices/my-device/events/my_telem_topic1”,

这是来自日志
“消息”的错误消息:“订阅:订阅主题失败:'/devices/my-device/events/my_telem_topic1'。”

标签: google-cloud-pubsubgoogle-cloud-iot

解决方案


添加到 Kamal 发布的内容:

这里的部分混淆是 MQTT 和 Pub/Sub(IoT Core 放置设备遥测事件的地方)都称为“主题”。

有 4 个 MQTT 主题可供设备使用(这都在设备端,而不是云端):

/devices/<device-id>/commands
/devices/<device-id>/config
/devices/<device-id>/state
/devices/<device-id>/events

前两个是供设备订阅的,以便从 IoT Core Admin SDK 获取更新,后两个是设备将数据发布到云的主题。

为了让设备订阅另一个设备的遥测数据,它需要能够订阅从其他设备接收遥测数据的 Pub/Sub 主题。这不会作为 MQTT 实现的一部分完成,而是需要在您的设备上实现 Pub/Sub API。这也需要一个单独的身份验证路径,可能是您添加到 GCP 项目中的服务帐户密钥,然后下载到您的设备。如果您想沿着这条路线走,Kamal 答案中的链接应该可以帮助您入门。

但是,正如他们所说,根据您正在做的事情,您可能可以处理来自云功能或类似设备中的一个设备的传入遥测,然后为想要响应该遥测的设备设置配置。这样,如果设备在线,它会立即获取它,或者如果它不在线,它会在重新连接到 IoT Core 时获取它。


推荐阅读