使用Google Cloud IoT Core平台时,它似乎是围绕将配置发送到设备并从设备接收状态的想法构建的。
Google自己的文档建议使用这种方法,而不是围绕向下发送命令(作为配置)和获取响应(作为状态)来构建。
但是,在文档的最后,他们只是一个例子。
我正在努力了解一个人如何同时支持这两种方法?我可以看到它设计的好处,但是我也很难理解如何使用诸如config这样的值和结果的习语来与设备对话。
有人执行过命令/响应流程吗?可以订阅状态主题以在我自己的应用程序中检索设备的状态吗?
答案 0 :(得分:2)
根据以下澄清的评论进行编辑:
我们有一个称为“命令”的beta功能,它将执行您正在谈论的重新启动。因此,配置消息(对于要在启动/连接到IoT Core时发送设备的持久性配置)和触发并忘记重启命令之类的命令的组合可以满足您的要求。当前状态有些棘手,因为您可能具有回调机制,可以在其中发送命令进行询问,并在事件/通道上侦听响应,也可以具有设备报告状态(/ state / MQTT主题),仅问IoT Core的管理SDK而不是设备。
命令刚刚进入公开测试阶段,您现在应该可以使用它。如果您从命令行使用gcloud SDK,则需要执行gcloud components update
,然后gcloud beta iot devices --help
将显示命令组。如果您使用的是控制台,则在向下钻取到单个设备时,现在应该在顶部栏的“更新配置”旁边看到“发送命令”。
旧答案:听起来像是在回答问题,而不是使用状态主题,您可以/应该只使用标准的/ events /主题并订阅设备要进入的发布/订阅主题?>
从保持状态机同步的角度来看,这实际上取决于我们正在讨论的设备的数量和数量。
在不知道具体要实现什么的情况下,我可能会做一些类似的事情,例如向下发送配置,在/ events /主题上从设备进行响应以及具有跟踪发布/订阅主题并更新诸如具有设备状态的Firestore实例,而不是使用/ state /主题。特别是如果您要直接对设备的状态报告做出响应。
答案 1 :(得分:1)
要将命令发送到设备,您将需要使用sendCommandToDevice API call。
要从设备接收命令,请订阅/devices/<your-device-d>/commands/#
主题。
完整的示例最终将发布到Google Cloud IoT Core示例存储库: