×

基于AWS的人群感知应用程序

消耗积分:0 | 格式:zip | 大小:0.00 MB | 2023-06-19

哈哈哈

分享资料个

描述

概述

该项目是罗马第一大学物联网课程作业的一部分。目的是构建一个基于亚马逊网络服务 (AWS) 的人群感知应用程序,该应用程序通过智能手机的加速度计确定用户活动。加速度计提供的数据分析将以两种方式进行:

  • 在智能手机本身(基于边缘)
  • 在云端(基于云)

在开始之前...

知道我基于 AWS 构建了另一个项目很有用。在之前的项目中,由三个部分组成,我解释了一些 AWS 基础知识,例如如何在 IoT Core 中创建事物以及如何创建 DynamoDb 表,我假设您已经了解了这个项目。你可以在这里找到第一部分

此应用程序设计用于使用 Google Chrome 在 Android 设备上工作。

另一件有用的事情是,如果您在虚拟机中运行此项目所需的服务器,则必须检查 VM 的网络配置!必须将其设置在“桥接网络”上,以便您可以轻松访问本地托管服务器。

最后,请记住,我用于这个项目的所有代码都可以在我的Github 存储库中找到

服务器

服务器是通过Node.js构建的,您可以在此处找到文档

poYBAGOYMY6Ad4MdAAB8277vvsQ471.png
部分服务器代码
 

您需要创建一些 SSL 自签名证书。在您选择的文件夹中输入终端:

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365

当然,您可以更改代表证书持续时间的-days的值。系统可能会要求您提供其他信息:提供或发明它们,这对我们的目的并不重要。然后,您可以在您选择的文件夹中找到您的证书和密钥:在代码中必要的地方复制它们的路径。

关于 AWS IoT Core Thing 的 AWS 密钥和证书的问题,如果您不知道如何获取,建议查看我之前的项目。当您配置了所有需要的参数后,只需使用您的终端运行您的服务器,显然进入正确的文件夹:

node server.js
pYYBAGOYMZSAXF37AABDrJf7NPE726.png
服务器运行
 

基于边缘的部署

在基于边缘的部署中,加速度计提供的数据将在智能手机本身上进行分析(以非常简单的方式),然后将它们发送到 AWS 并最终显示在网页上。

poYBAGOYMZeAEdEsAAB89aRklDc777.png
基于边缘的部署
 

通过 HTML5 应用程序,使用通用传感器 API ,我们能够获取加速度计的 xyz 数据。

 
 
 
pYYBAGOYMZqAOf39AACdAloHbQ0636.jpg
 
1 / 2HTML5 页面视图
 

然后,使用极其简单的模型(您显然可以改进它)在设备上分析数据,该模型确定用户的活动,并将其传递到将它们转发到 AWS IoT Core 的服务器。如果一切正常,您应该在运行服务器的终端和 AWS IoT Core 上看到数据,并在“测试”选项卡中订阅服务器正在发布的同一主题。

当数据到达 AWS IoT Core 时,它​​们会触发将它们存储在 AWS DynamoDB 中的规则。

 
 
 
pYYBAGOYzOmARCjiAACDZhhITNI664.png
 
1 / 2规则概述
 

创建规则非常简单,您必须进入 AWS IoT Core 的Act选项卡,然后选择Rules子选项卡;然后点击创建。本质上,您必须填写必填字段,选择从中读取数据的主题,并选择在调用规则时要执行的操作。在这种情况下,您必须选择“在 DynamoDB 表中插入”。当然,您必须首先创建一个结构合理的 DynamoDB 表。

最后,这个项目在 localhost 中运行的网页(您可能还记得我以前的项目中的...)从数据库中检索数据。该网页将显示最后一小时的检测和存储的数据。

 
 
 
poYBAGOYzOuAGpynAABalomFzpA405.png
 
1 / 2最后检测
 

基于云的部署

在基于云的部署中,加速度计提供的数据将被发送到 AWS,通过AWS Lambda函数(以非常简单的方式)进行分析,最后显示在网页上。

pYYBAGOYzO6ASJZuAACuRx-d6_g407.png
基于云的部署
 

通过 HTML5 应用程序,使用通用传感器 API ,我们能够获取加速度计的 xyz 数据。

poYBAGOYzPCAeIFIAACYKO8I_TM995.jpg
HTML5 页面视图
 

界面非常相似,但是这次我们有一个Expected状态,只是作为一个测试,因为真正的数据分析将发生在云服务上。然后,数据被传递到将它们转发到 AWS IoT Core 的服务器。如果一切正常,您应该在运行服务器的终端和 AWS IoT Core 上看到数据,并在“测试”选项卡中订阅服务器正在发布的同一主题。

当数据到达 AWS IoT Core 时,它​​们会触发两条规则。触发的第一个规则将原始数据存储在 AWS DynamoDB 中,与您看到的基于边缘模式的表相同;触发的第二个规则从 DynamoDB 表中检索它们,分析它们以提供结果活动,并将它们存储在第二个 DynamoDB 表中。也许使用两个不同表的决定有点棘手,但我这样做是为了有两个单独的表:一个用于基于边缘模式和基于云模式的原始数据,另一个用于基于云模式处理的数据。您可以根据需要修改 Lambda 函数。

pYYBAGOYzPKAW5gJAAClTGwrBsw377.png
我的 Lambda 函数
 

使用 AWS Lambda 非常简单。当您要创建新函数时,请转到 AWS Lambda 控制台,然后单击创建函数:

pYYBAGOYzPWAWFsnAAEW0Qh2nfE219.png
创建函数
 

为您的函数命名,然后选择您喜欢的语言。Permission部分,您必须为您的函数选择一个执行角色,并为其提供必要的策略。请注意,您可以在AWS Identiy & Access Management (IAM)中创建个性化角色,为每个角色创建个性化策略。在这种情况下,我创建了一个具有完整 DynamoDB 权限的角色。

和以前一样,同一个网页从数据库中检索数据。该网页将显示最后一小时的检测和存储的数据。

当然,如果您不想使用两个不同的 DynamoDB 表但想直接获取 Lambda 处理的数据,还有其他可能的解决方案,例如AWS API Gateway 。

系统如何运作

该代码在我的 Github 存储库中可用,显然如果您想使用它,您必须更改一些参数,正如我在前面几节中解释的那样。如果一切都已正确完成,您可以按以下方式运行系统(我希望不必说您必须在每个步骤中都位于正确的文件夹中:-)):

  • (可选)在一个终端中运行 localhost 页面:该文件位于crowd_sensing/django_web文件夹中> python3 manage.py runserver
  • 在不同的终端中运行您的服务器:该文件位于crowd_sensing文件夹中> node server.js
  • 使用您的智能手机,使用 Google Chrome 和运行服务器的机器上使用的相同 Wi-Fi,转到您的 localhost:3000 Web 应用程序。选择您的模式:基于边缘或基于云。
  • (可选)您可以看到您的数据通过服务器和您的 AWS IoT Core
  • (可选)您可以在 localhost:8000 网页中查看最后一次检测和最后一小时的数据

 


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !