以 GET/“拉” 方式从 Google Cloud IoT 设备检索实时数据?

问题描述

我需要从 Web 应用程序轮询串行设备(使用 ESP32)的近乎实时读取。我目前正在使用 Particle Photons 和 Particle Cloud API 执行此操作,并且想知道是否有使用 Google Cloud IoT 实现类似功能方法

从阅读文档来看,执行此操作的常用方法似乎是通过 PubSub,然后通过 Cloud Functions 通过 DataFlow 或 Firebase 发布到 BigQuery。但是,为了减少定价开销,我希望仅在设备收到外部请求时触发数据交换

似乎有一种方法可以send commands连接到物联网设备 - 我是否在正确的轨道上?我似乎在这里找不到文档,但是在收到命令后,它会使用 PubSub 发布到一个主题,这可以触发 Cloud Function 更新 Firebase?

最后,似乎还有一种方法可以向设备的 GET 发出 DeviceState 请求,但这只能每秒更新一次(这也可能有效,尽管听起来像他们通常不鼓励为此目的使用 state)。

如果有另一种低延迟、低成本的方式允许客户端轮询我错过的 IoT 设备的实时值,请告诉我。谢谢!

解决方法

乐鑫集成了 Google's Cloud IoT Device SDK,可在设备和 IoT Core 之间创建经过身份验证的双向 MQTT 管道。正如您已经发现的那样,您可以将任何内容从云端发送到设备(这称为“命令”,但它只是一个 MQTT 有效负载,因此您几乎可以将任何您想要的内容放入其中),反之亦然(称为“遥测”)但同样,它只是一个 MQTT 负载)。一旦来自设备的传入消息到达云端,pubsub 就可以将它们路由到任何你想要的地方。我不知道我是否将其称为实时,但良好的 WiFi 网络中的延迟往往不到一秒。