Google 物联网核心连接状态

Google iot core connection status

我正在使用 Google IOT 核心和 mongoose os。我想将设备连接状态更新为 firestore。但是我无法找到将 mqtt 连接状态报告给 pub/sub 的事件,例如设备断开连接或重新连接时,即设备是否离线。

我被困在这个问题上 days.Any 帮助将不胜感激

遗憾的是,目前没有内置方法可以执行此操作,因为此状态下没有事件。

但是,您可以通过在 connect/disconnect 上从您订阅了 Pub/Sub 主题侦听的 Cloud Function 的设备发送消息来实施黑客攻击。它并不完美,因为在设备意外断开连接的情况下它会失败。

更新

如@devunwired 所述 现在可以监控 Stackdriver 日志中的断开连接事件。您必须在 IoT Core > Registries > [your registry] > Edit Registry > Select "Info" log level > 单击 save 中至少启用 INFO 级别的项目日志记录。

原始回复

您可以查看在设备配置元数据中跟踪的一些值,您可以使用这些值来了解设备上次在线的时间:

  1. 上次配置发送时间 - 设备连接时发送/ 配置已发布
  2. 上次事件时间 - 上次从设备发送事件的时间
  3. 上次状态时间 - 上次从设备发送状态的时间
  4. Last Heartbeat time - 上次发送 MQTT 心跳的时间

为了帮助您入门,here is an example using API explorer 您可以填写您的项目 ID、区域、注册表和设备以查询特定设备的元数据。

对于 1...3,您可以通过设备管理器和发布数据来控制这些。如果您的设备在 "ping period" 期间发送 MQTT_PINGREQ 消息而没有发送其他消息,则会更新 MQTT 心跳。

无论如何,您可以使用这些更新时间值中的任何一个来查看设备上次在线/运行的时间。在注册表中列出设备后,您可以查询设备的状态,如果您希望这样报告(例如使用 AppEngine TaskQueue),则可以定期更新 Firebase RTDB。请注意,您也可以从 Google Cloud Console.

中获取这些 "last connected" 值

前面说了但是我们没有断开连接的事件,只有配置ack,一般是连接事件。如果您想在设备和设备管理器之间共享状态,请使用 state messages.

当您的设备 connects/disconnects 时,AWS IoT 平台会在特殊的 MQTT 主题(前缀为 $aws)上发布消息。您可以轻松地使用它们来监视这些事件——但是,您应该知道,MQTT 协议旨在稳健地应对较差的网络条件,并且 AWS 端的代理可能认为断开客户端连接没什么大不了的.经纪人希望客户端在该过程中仅重新连接并将消息排队一段时间(这在微控制器上可能很重要)。

综上所述,您要观看的 AWS 主题是:

$aws/events/presence/connected/{clientId}

$aws/events/presence/disconnected/{clientId}

这些(和其他)生命周期事件的文档位于:https://docs.aws.amazon.com/iot/latest/developerguide/life-cycle-events.html

目前没有办法做到这一点,我已经找到了(在最初 post 一年后)。我也post在这里就 SO 提出了一个问题,其中包含更多详细信息和 link 我必须用于处理此问题的示例代码: