该项目是罗马第一大学物联网课程作业的一部分。目的是构建一个基于亚马逊网络服务 (AWS) 的人群感知应用程序,该应用程序通过智能手机的加速度计确定用户活动。加速度计提供的数据分析将以两种方式进行:
知道我基于 AWS 构建了另一个项目很有用。在之前的项目中,由三个部分组成,我解释了一些 AWS 基础知识,例如如何在 IoT Core 中创建事物以及如何创建 DynamoDb 表,我假设您已经了解了这个项目。你可以在这里找到第一部分。
此应用程序设计用于使用 Google Chrome 在 Android 设备上工作。
另一件有用的事情是,如果您在虚拟机中运行此项目所需的服务器,则必须检查 VM 的网络配置!必须将其设置在“桥接网络”上,以便您可以轻松访问本地托管服务器。
最后,请记住,我用于这个项目的所有代码都可以在我的Github 存储库中找到。
服务器是通过Node.js构建的,您可以在此处找到文档。
您需要创建一些 SSL 自签名证书。在您选择的文件夹中输入终端:
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365
当然,您可以更改代表证书持续时间的-days的值。系统可能会要求您提供其他信息:提供或发明它们,这对我们的目的并不重要。然后,您可以在您选择的文件夹中找到您的证书和密钥:在代码中必要的地方复制它们的路径。
关于 AWS IoT Core Thing 的 AWS 密钥和证书的问题,如果您不知道如何获取,建议查看我之前的项目。当您配置了所有需要的参数后,只需使用您的终端运行您的服务器,显然进入正确的文件夹:
node server.js
在基于边缘的部署中,加速度计提供的数据将在智能手机本身上进行分析(以非常简单的方式),然后将它们发送到 AWS 并最终显示在网页上。
通过 HTML5 应用程序,使用通用传感器 API ,我们能够获取加速度计的 xyz 数据。
然后,使用极其简单的模型(您显然可以改进它)在设备上分析数据,该模型确定用户的活动,并将其传递到将它们转发到 AWS IoT Core 的服务器。如果一切正常,您应该在运行服务器的终端和 AWS IoT Core 上看到数据,并在“测试”选项卡中订阅服务器正在发布的同一主题。
当数据到达 AWS IoT Core 时,它们会触发将它们存储在 AWS DynamoDB 中的规则。
创建规则非常简单,您必须进入 AWS IoT Core 的Act选项卡,然后选择Rules子选项卡;然后点击创建。本质上,您必须填写必填字段,选择从中读取数据的主题,并选择在调用规则时要执行的操作。在这种情况下,您必须选择“在 DynamoDB 表中插入”。当然,您必须首先创建一个结构合理的 DynamoDB 表。
最后,这个项目在 localhost 中运行的网页(您可能还记得我以前的项目中的...)从数据库中检索数据。该网页将显示最后一小时的检测和存储的数据。
在基于云的部署中,加速度计提供的数据将被发送到 AWS,通过AWS Lambda函数(以非常简单的方式)进行分析,最后显示在网页上。
通过 HTML5 应用程序,使用通用传感器 API ,我们能够获取加速度计的 xyz 数据。
界面非常相似,但是这次我们有一个Expected状态,只是作为一个测试,因为真正的数据分析将发生在云服务上。然后,数据被传递到将它们转发到 AWS IoT Core 的服务器。如果一切正常,您应该在运行服务器的终端和 AWS IoT Core 上看到数据,并在“测试”选项卡中订阅服务器正在发布的同一主题。
当数据到达 AWS IoT Core 时,它们会触发两条规则。触发的第一个规则将原始数据存储在 AWS DynamoDB 中,与您看到的基于边缘模式的表相同;触发的第二个规则从 DynamoDB 表中检索它们,分析它们以提供结果活动,并将它们存储在第二个 DynamoDB 表中。也许使用两个不同表的决定有点棘手,但我这样做是为了有两个单独的表:一个用于基于边缘模式和基于云模式的原始数据,另一个用于基于云模式处理的数据。您可以根据需要修改 Lambda 函数。
使用 AWS Lambda 非常简单。当您要创建新函数时,请转到 AWS Lambda 控制台,然后单击创建函数:
为您的函数命名,然后选择您喜欢的语言。在Permission部分,您必须为您的函数选择一个执行角色,并为其提供必要的策略。请注意,您可以在AWS Identiy & Access Management (IAM)中创建个性化角色,为每个角色创建个性化策略。在这种情况下,我创建了一个具有完整 DynamoDB 权限的角色。
和以前一样,同一个网页从数据库中检索数据。该网页将显示最后一小时的检测和存储的数据。
当然,如果您不想使用两个不同的 DynamoDB 表但想直接获取 Lambda 处理的数据,还有其他可能的解决方案,例如AWS API Gateway 。
该代码在我的 Github 存储库中可用,显然如果您想使用它,您必须更改一些参数,正如我在前面几节中解释的那样。如果一切都已正确完成,您可以按以下方式运行系统(我希望不必说您必须在每个步骤中都位于正确的文件夹中:-)):
>
python3 manage.py runserver
>
node
server.js
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !