2

我正在使用带有猫鼬操作系统的 Google IOT 核心。我想将设备连接状态更新到 Firestore。但是我找不到将 mqtt 连接状态报告给 pub/sub 的事件,例如设备断开连接或重新连接时,即设备是否离线。

我被困在这个问题上好几天了。任何帮助将不胜感激

4

4 回答 4

1

不幸的是,目前没有内置的方法来执行此操作,因为此状态没有事件。

但是,您可以通过在连接/断开连接的设备上发送一条消息来实现 hack,您有一个订阅了 Pub/Sub 主题的云函数。它并不完美,因为在设备意外断开连接的情况下它会失败。

于 2018-02-02T20:04:25.673 回答
0

目前没有办法做到这一点,我已经能够找到(在这个原始帖子之后一年)。我在 SO 上也发布了一个关于此问题的问题,其中包含更多详细信息和指向我必须用于处理此问题的示例代码的链接: Google Core IoT Device Offline Event or Connection Status

于 2019-02-09T19:12:00.503 回答
0

更新

正如@devunwired在此响应中提到的那样,现在可以监控 Stackdriver 日志中的断开连接事件。您必须在 IoT Core > 注册表 > [您的注册表] > 编辑注册表 > 选择“信息”日志级别 > 单击保存中的项目中至少启用 INFO 级别日志记录。

原始回复

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

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

为了帮助您入门,这里有一个使用 API 资源管理器的示例,您可以填写您的项目 ID、区域、注册表和设备以查询特定设备的元数据。

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

无论如何,您可以使用这些更新时间值中的任何一个来查看设备上次在线/运行的时间。您可以在注册表中列出设备后查询设备的状态,并且可以定期更新 Firebase RTDB,如果这是您想要报告的方式(例如使用 AppEngine TaskQueue)。请注意,您也可以从Google Cloud Console获取这些“最后连接”值。

之前说过但是我们没有disconnect的事件,只是配置ack,一般是connection事件。如果要在设备和设备管理器之间共享状态,请使用状态消息

于 2018-02-06T21:47:08.113 回答
-1

The AWS IoT platform publishes messages on a special MQTT topic (prefixed with $aws) when your device connects/disconnects. You can easily use these to monitor these events - however, you should be aware that the MQTT protocol is designed to be robust to a poor networking conditions and the broker on the AWS side probably doesn't think it's a bit deal to disconnect a client. The broker expects that the client will just reconnect and queue messages for a moment during that process (which can be a big deal on a microcontroller).

All that being said, the AWS topics you would watch are:

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

and

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

and the documentation for these (and other) lifecycle events are located: https://docs.aws.amazon.com/iot/latest/developerguide/life-cycle-events.html

于 2018-02-13T03:22:41.430 回答