gpt4 book ai didi

amazon-web-services - 将 AWS IOT 用于间接连接的设备

转载 作者:行者123 更新时间:2023-12-03 23:23:41 25 4
gpt4 key购买 nike

我正在考虑将 AWS IoT 用于一个应用程序,其中在(可能数百个)分布式网关(PC 或 Raspberry Pi)后面有数千个小型位图显示器(与专有无线协议(protocol)连接)。

到目前为止,我提出了以下概念:

  • 网关 PC 终止 MQTT session 。它没有自己的设备表。
  • thingname = <gatewayId>_<displayId>
  • 显示位图存储在 S3 上(文件名 = 事物名)
  • 更新显示只是替换 S3 文件,然后更新设备阴影所需状态的位图版本(例如 SHA)。
  • 网关必须订阅更新,如 /update/<gatewayId>/#
  • 将有一条从 /update/<gatewayId>_<displayId> 重新发布的规则至/update/<gatewayId>/<displayId> (因为thingnames不能包含斜杠,MQTT中的通配符必须是完整的路径组件)
  • 对于每条收到的消息,网关将从 S3 下载位图,将其发送到显示器,然后将报告的状态更新为新版本。

  • 如何处理断开连接的网关,然后重新联机?

    订阅不是持久的,所以我需要找到所有东西(从那个网关),其中期望的状态!=报告状态并再次更新它们。

    可以有一个规则来做到这一点吗?这个想法是让网关在重新联机时发布重新连接消息(如 /reconnect/<gatewayId> )。该规则必须找到该网关的所有设备影子,其中期望状态!= 报告状态并发布它们。

    注意:我知道我可以在没有设备影子的情况下使用自己的数据库对机制进行编程。但这个想法是为此使用物联网机制。

    另一个问题:
    创建位图非常快(可能是每秒 1000 个),发送到显示器可能非常慢(尤其是发送一堆的第一个位图可能需要一分钟)。因此,在确认第一条消息之前,可能会创建数千个位图(用于一个网关)。这是一个问题吗?

    最佳答案

    如果我正确理解您的用例,我认为您的概念可能需要进行一些更改以使其更好地工作。我将尝试回答您的问题,将它们分解成更小的部分。

  • 状态同步:由于您的显示器与 AWS IoT 没有直接通信,因此最好将网关视为 things。并且每个显示作为相应网关的属性(例如 <display_id> )thing .这样,无论何时必须将新图像上传到显示器,您都可以简单地更新 desired statenested attribute到相应的显示属性(例如 <bitmap_version> 嵌套到 <display_id> )。您可以使用 thing shadow UPDATE主题(例如 $aws/things/<gateway_id>/shadow/update )。您可以向 UPDATE 发送消息使用 Lambda 检测新版本的显示位图何时上传到 S3 的主题。
  • 图片下载:每当新版本的位图上传到 S3 时,网关都会收到新的 desired state通过 thing 获取显示属性的特定位图版本的ACCEPTED UPDATE主题(例如 $aws/things/<gateway_id>/shadow/update/accepted ),下载新位图,通过您的专有无线协议(protocol)更新显示并更新 reported state thing shadow 上的属性UPDATE话题。
  • 处理断开连接的网关 :是的,订阅不是持久的,但是如果您将网关视为 things并且每个显示都作为 thing 的一个属性,只要它重新上线,它就可以向 GET 发布消息主题(例如 $aws/things/<gateway_id>/shadow/get ),检查 thing ACCEPTED GET 上的当前状态主题( $aws/things/<gateway_id>/shadow/get/accepted ),然后继续下载新的位图以防出现新版本。
  • 处理大数据量:如果您需要每秒使用多个位图更新网关的每个显示,考虑到每个网关有数千个显示,我认为您可能遇到的问题是带宽瓶颈以及将所有这些 MQTT 消息与您的 thing shadow 同步。话题。如果您只需要偶尔更新每个显示,我认为您的概念可以很好地工作。

  • 需要考虑的一些事项:
  • AWS IoT MQTT 实现无法保证 order in which messages are received .如果您需要按特定顺序接收消息,则必须在您的应用程序中实现它。
  • AWS IoT 仍然是 beta service ,所以很多实现细节可能会改变。
  • 关于amazon-web-services - 将 AWS IOT 用于间接连接的设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33677179/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com