Amazon web services 间接连接设备使用AWS物联网
我正在考虑将AWS IoT用于一个应用程序,其中在(可能数百个)分布式网关(PC或Raspberry Pi)后面有数千个小型位图显示器(通过专有无线协议连接) 到目前为止,我提出了以下概念:Amazon web services 间接连接设备使用AWS物联网,amazon-web-services,aws-iot,Amazon Web Services,Aws Iot,我正在考虑将AWS IoT用于一个应用程序,其中在(可能数百个)分布式网关(PC或Raspberry Pi)后面有数千个小型位图显示器(通过专有无线协议连接) 到目前为止,我提出了以下概念: 网关PC终止MQTT会话。它没有自己的设备表 thingname=\uu 显示位图存储在S3上(文件名=thingname) 更新显示器只是替换S3文件,然后在设备阴影的所需状态下更新位图版本(例如SHA) 网关必须订阅更新,如/update/# 将有一条规则从/update/重新发布到/update/(因
thingname=\uu
/update/#
/update/
重新发布到/update/
(因为thingnames不能包含斜杠,MQTT中的通配符必须是完整的路径组件)/reconnect/
)。该规则必须找到该网关的所有设备阴影,其中包含所需的状态!=报告状态并发布它们
NB:我知道我可以在没有设备阴影的情况下使用自己的数据库对机制进行编程。但这一想法是利用物联网机制实现的
另一个问题:
创建位图的速度非常快(可能是每秒1000次),发送到显示器的速度可能非常慢(尤其是发送一组位图中的第一个位图可能需要一分钟)。因此,在确认第一条消息之前,可能会创建数千个位图(对于一个网关)。这是一个问题吗?如果我正确理解您的用例,我认为可能需要对您的概念进行一些更改,以使其更好地工作。我将试着回答你们的问题,把它们分成几个小部分
事物
,并将每个显示器视为相应网关事物
的属性(例如
)。这样,每当需要将新图像上载到显示器时,只需将图像的所需状态
更新到相应的显示属性(例如,嵌套到
的
)。您可以使用thing shadow
UPDATE
主题(例如$aws/things//shadow/UPDATE
)完成此操作。您可以使用Lambda触发一条消息到UPDATE
主题,以检测何时已将新版本的显示位图上载到S3对象的接受更新主题(例如$aws/things//shadow/UPDATE/ACCEPTED
)接收特定位图版本的显示属性的新的所需状态,下载新位图,通过专有无线协议更新显示,并更新thing shadow
更新
主题中属性的报告状态
事物
,并将每个显示作为该事物
的一个属性,每当它重新联机时,它都可以将消息发布到获取
主题(例如$aws/things//shadow/GET
),检查ACCEPTED GET
主题($aws/things//shadow/GET/ACCEPTED
)上的对象的当前状态,然后继续下载新版本的位图
主题同步。如果您只需要每隔一段时间更新一次每个显示,我认为您的概念可以很好地工作
谢谢你的回复。2个问题:我可以在一个网关后面有几千个显示器。但是设备阴影只有8KB。第二个问题:我不是每秒钟都更改一次显示,但我可能会在短时间内更改一个网关后面的多个/所有显示(此后数小时内不再更改)。哎呀,我忘记了设备阴影大小的8 KB限制。如果我能想出另一个解决方案,我会更新我的答案。考虑到8KB的限制,您可以将网关的显示器分组到设备集群中,而不是将网关的每个显示器嵌套到单个
thing shadow
。每个集群都有自己的阴影
。这不是一个理想的解决方案,但我认为它比您最初的概念更容易实现。