0

我想要做的是将消息从一个注册表中的设备发布到另一个注册表中的设备。

我发现您只能发布到您的设备所在的注册表中的主题,如果您尝试发布到另一个注册表中的主题,您会得到一个EOFException并且您与 MQTT 服务器断开连接。

我试图实现的流程是我有一个registry移动设备(电话),它们有自己的主题来做事,但他们还需要与一个hub registry与物联网设备通信的设备(获取/更新设备信息)进行通信,这些设备也有他们的自己的IoT registry

正如我所说,我可以将消息发布到注册表中的主题而不会出错,但是一旦我尝试在注册表之外执行此操作,我就会收到错误消息。

没有办法进行注册表间通信吗?

如果您不能进行跨注册表,那么通过不同主题在设备之间进行通信的“标准”方式是什么?

4

1 回答 1

1

您可以使用 Cloud Functions 来实现您的目标,这些 Cloud Functions 处理通过注册表 A 中的 Cloud IoT Core 和 PubSub 接收到的数据,然后将此数据作为配置消息发送到注册表 B 上的设备。

流程类似于:设备 1 > MQTT 服务器注册表 A > Pub/Sub 主题注册表 A > 云功能 > HTTP 配置消息到 > 注册表 B > MQTT 服务器注册表 B > 设备 2

您可以在本教程中看到我写的关于 Cloud IoT Core 的文章,并展示了如何将配置消息发送到设备。在您的情况下,您需要的唯一更改是配置消息将发送到不同注册表中的设备。

教程链接:https ://medium.com/google-cloud/gps-cellular-asset-tracking-using-google-cloud-iot-core-firestore-and-mongooseos-4dd74921f582

发送配置消息的代码部分,但在我的代码中,注册表是一个常量变量:https ://github.com/alvarowolfx/asset-tracker-gcp-mongoose-os/blob/master/functions/index.js#L22

希望这可以帮助你。

于 2018-03-15T20:51:51.590 回答