【发布时间】:2019-08-21 09:16:36
【问题描述】:
我开发了一个通过 MQTT 协议连接到 AWS IoT Core 服务的电子设备。现在我可以连接、发布和订阅主题了。 该设备有一些输入(即按钮)和输出(即继电器)。
现在我想开发一个移动或网络应用程序,让授权用户读取输入状态和读/写输出。可以授权多个用户控制一台设备。
我不清楚,但我不了解后端技术,是如何管理用户,即移动/网络应用程序。
一种策略是为每个用户创建一个具有自己证书的新事物。 Web/移动应用程序使用 MQTT 协议作为电子设备。主题可用作聊天频道:用户要求输入状态,设备以更新状态回答。
另一种策略可能是创建 Web/移动应用程序使用的 HTTP API(可能使用 AWS Gateway API)。 API 被编程为发布和订阅主题。用户应具有 IAM 访问权限。
我知道我可以使用 Device Shadow,但我认为在我的用例中这不是一个好的解决方案。输入的状态可能会经常变化(可能一天 1000 次),但用户只是偶尔想通过移动/网络应用程序检索状态(一天一次或更频繁)。发送这么多消息来保持影子更新似乎是没有用的。
【问题讨论】:
-
您可以使用 aws-amplify 框架将您的前端(例如 angular 或 react)与后端连接起来。您将在 aws 控制台中设置一个认知用户池。然后在您的前端代码中,您将使用 Amplify Auth 进行登录,并使用 Amplify PubSub 与您的 MQTT 消息进行通信。这将为您的 MQTT 消息获取实时更新。如果您想检索未登录时发生的消息,您可以将所有 mqtt 消息保存在 dynamodb 表中,然后使用 lambda 和 api gateqway 检索它们
标签: amazon-web-services iot aws-iot