0

检查 AWS IoT Core 事物是否仍处于离线状态的最佳实践是什么?

对于许多人来说,能够查询 AWS IoT 事物的状态将是其应用程序的重要组成部分。幸运的 AWS 有一个关于如何在此处获取生命周期事件的最佳实践: https ://docs.aws.amazon.com/iot/latest/developerguide/life-cycle-events.html

在文档中,有一节描述了如何处理生命周期事件,在这里他们提到在收到断开生命周期事件后,您应该等待一段时间,然后再检查设备是否仍处于离线状态。

当该消息可用并被处理(由 Lambda 或其他服务)时,您可以先检查设备是否仍处于离线状态,然后再采取进一步操作。

这里的问题是如何检查设备是否仍处于离线状态?

文档中建议的基础设施是订阅主题“$aws/events/presence/disconnected/clientId”的 IoT 规则,它将在 SQS 队列上创建一条消息。SQS 队列将使用该deliveryDelay属性延迟消息,然后 lambda 函数将使用该消息。正是在这个 lambda 函数中,我们应该检查设备是否仍然离线。

我可以简单地实现一个带有设备状态和时间戳的 dynamodb 表,每次发生连接或断开事件时都会立即更新该表。但是必须有更智能的方法来确定设备是否仍处于离线状态?

4

2 回答 2

1

您可以使用Thing Indexing。它可以选择索引设备的连接状态 ( thingConnectivityIndexingMode)。

于 2021-03-23T16:05:09.683 回答
1

你已经有了答案。触发断开连接事件后,您将假定客户端保持离线状态,除非 IoT Core 为主题“$aws/events/presence/connected/clientId”的同一客户端发送更新。

显然,您需要订阅这两个主题。

如果您从一开始就考虑为什么需要物联网,那么在大多数情况下,事物索引是一个坏主意。它只对亚马逊有好处,但不会给你任何价值。

于 2021-10-25T16:26:10.110 回答