以 GET / "pull" 方式从 Google 云物联网设备检索实时数据?

Retrieving real-time data from Google Cloud IoT device in GET / "pull" fashion?

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

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

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

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

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

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