【问题标题】:How to check if device is offline in AWS IoT Core如何在 AWS IoT Core 中检查设备是否离线
【发布时间】:2021-06-20 07:42:25
【问题描述】:

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

对于许多人来说,能够查询 AWS IoT 事物的状态将是其应用程序的重要组成部分。 Lucky 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 表,每次发生连接或断开事件时都会立即更新该表。但必须有更智能的方法来确定设备是否仍处于离线状态?

【问题讨论】:

  • 嗨 - 事物索引是否解决了这个问题?我确实在尝试实现相同的功能,但我发现事物索引可能需要几秒钟才能更新,所以我可能需要将 SQS 延迟增加到 10 秒以上。

标签: amazon-web-services aws-iot aws-iot-core


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 看起来好多了,我现在去看看,谢谢!
    • 看起来不错,但是超级贵。如果您仅将队列索引用于连接状态,那么您使用 DynamoDB 的想法要便宜得多。
    • 对于定价考虑,车队指数以 2.25 美元的价格为我提供 100 万次状态更改,而 Dynamodb 以 1.25 美元的价格为我提供 100 万次写入。在查询状态方面,我将使用车队索引以 0.05 美元获得 10.000 次,而 dynamodb 将以 0.25 美元获得 100 万次查询。但是,这是加上执行代码的 lambda 函数的成本。所以你的观点很好——这里的价格有很大的不同。我考虑的另一件事是您还不能使用 CDK 配置队列索引。
    猜你喜欢
    • 2021-09-04
    • 1970-01-01
    • 2019-07-03
    • 1970-01-01
    • 2015-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多