1

在使用 Google Cloud IoT Core 平台时,它似乎是围绕将配置发送到设备并从设备接收状态的想法构建的。

谷歌自己的文档建议使用这种方法,而不是围绕向下发送命令(作为配置)和获取响应(作为状态)进行构建。

然而,在文档的最后,他们展示了一个例子。

我很难理解如何支持这两种方法?我可以看到它的设计方式带来的好处,但我也很难理解如何使用配置值和结果这样的习语来与设备对话。

有人实施了命令/响应流程吗?是否可以订阅状态主题以在我自己的应用程序中检索设备的状态?

4

2 回答 2

2

根据以下澄清评论进行编辑:

我们有一个我们称之为“命令”的测试版功能,它将执行您正在谈论的重启。因此,配置消息(对于您希望在启动/连接到 IoT Core 时发送设备的持久配置)和用于触发和忘记的命令(如重启消息)的组合可以完成您所说的。当前状态有点棘手,因为您可以有一个回调机制,您可以在其中发送命令进行询问,并在事件/通道上侦听响应,或者让设备报告状态(/state/ MQTT 主题)并且只是询问 IoT Core 的管理 SDK 而不是设备。

Commands 刚刚进行了公测,您现在应该可以访问它了。如果您从命令行使用 gcloud SDK,您需要执行 agcloud components update然后gcloud beta iot devices --help将显示命令组。如果您使用控制台,当您深入到单个设备时,您现在应该会在顶部栏上的“更新配置”旁边看到“发送命令”。

旧答案:作为回答的尝试,听起来您可以/应该只使用标准的 /events/ 主题并订阅设备进入的 Pub/Sub 主题,而不是使用状态主题?

在保持状态机同步方面,这实际上取决于我们正在谈论的设备的数量和数量。

在不知道你具体实现了什么的情况下,我可能会做一些事情,比如发送配置,从设备上响应 /events/ 主题,并拥有一个跟踪 Pub/Sub 主题并更新类似 Firestore 实例的云函数设备的状态,而不是使用 /state/ 主题。特别是如果您正在做某事以直接响应设备的状态报告。

于 2018-10-02T14:54:14.387 回答
1

向设备发送命令

要将命令发送到设备,您需要使用sendCommandToDevice API 调用

从设备接收命令

要从设备接收命令,请订阅该/devices/<your-device-d>/commands/#主题。

完整示例最终将发布到 Google Cloud IoT Core 示例存储库:

于 2018-10-16T19:14:57.153 回答