在这篇文章中,我们将继续探讨如何利用AWS IoT Greengrass V2开发边缘的用户界面 (UI) 应用,该应用由AWS合作伙伴TensorIoT和AWS专业服务共同开发。它的主要功能包括: 在本系列博文的第二部分中,我们将继续展示一个边缘用户界面 (UI) 应用,该应用利用AWS IoT Greengrass V2构建。此UI应用包含多个自定义的AWS IoT Greengrass V2组件,能够实现灵活的IoT数据采集、数据流分析和可视化。 第一部分介绍了如何通过JSON文件上传组件和UI应用来摄取IoT工作元数据,包括: 在第二部分中,我们将继续构建此UI应用的用例2。 操作者需要以几乎实时的方式对流式IoT数据进行判断。如果能够通过一个低延迟的交互UI应用展示这些数据,运营商将能做出更为明智的决策。通过这个应用,运营商可以迅速在现场做出决策,从而提高工厂的运营效率。 在这个边缘UI应用中,有一个虚拟发布者组件,模拟风力涡轮设施的输出。该发布者的发布频率为每10秒一次。一个WebSocket组件通过与AWS IoT Greengrass V2的进程间通信IPC pubsub订阅来自虚拟发布者的流式数据,并通过WebSocket通信将数据发送到边缘UI应用。由于前端应用不支持IPC pubsub通信,我们选择使用WebSocket通信,以便通过asyncio不断从后端服务器流式传输实时IoT数据到边缘托管的前端应用。为了处理从发布者组件接收到的高速流数据,使用Python模块queue来以先进先出的方式存储消息,在提供给后端服务器之前。此外,除了WebSocket通信外,还可以使用本地代理,例如JavaScript的MQTT客户端库,用于你的Web应用。 值得注意的是,此虚拟发布者组件仅用于演示目的。在工业厂房环境中,它将被适当的工业数据连接器取代例如SCADA系统。 在本博文中,我们还将展示如何使用AWS IoT Greengrass V2预构建的日志管理器组件以及Amazon CloudWatch来管理此AWS IoT Greengrass V2组件的健康状态。 以下步骤6到9将指导您: 要构建用例2的UI应用,您需要在边缘设备上安装AWS IoT Greengrass V2及其依赖,如第一部分所述。同时需要在边缘设备上启动第一部分中的客户UI组件。如果尚未完成这些步骤,请在继续之前先检查第一部分的步骤1至5。 以下步骤将提供边缘实时IoT工作监控UI应用开发的详细指引。请注意,本篇文章重点展示关键解决方案里程碑,读者可以访问GitHub代码库获取更多细节及源代码。 为了模拟风力涡轮的输出,虚拟发布者组件将发布与以下测量相关的一些随机数据:质量控制、工具状态、操作参数、电力曲线、LV有功功率、风速和风向。请按照以下步骤启动此组件: 进入到components/comexamplePublisher/awsggdeploy目录,这是您克隆GIT代码库到的Amazon Elastic Compute CloudAmazon EC2实例的目录。 修改部署脚本deployedgesh,在setEnv()区块中将以下占位符替换为您的自定义值: YOURAWSACCOUNTNUMBER YOURAWSREGION S3BUCKET 用于边缘组件的工件 ROLEARN 按CtrlX,然后按Y保存修改后的deploy3edgesh文件。 运行以下脚本以部署此组件: bashexport AWSACCESSKEYID=REPLACEWITHYOURAWSACCESSKEYIDexport AWSSECRETACCESSKEY=REPLACEWITHYOURAWSSECRETACCESSKEYexport AWSSESSIONTOKEN=REPLACEWITHYOURAWSSESSIONTOKENchmod 744 deployedgesh/deployedgesh 该Bash脚本大约需要10秒完成。完成后,请通过检查AWS IoT Greengrass组件的日志文件确认虚拟发布者组件正在发布消息: bashsudo tail 200f /greengrass/v2/logs/comuipublisherlog 您会看到日志随着每10秒的频率更新新的JSON消息。这些消息将发送到一个IPC主题:runscreen/topic,供WebSocket组件订阅。 WebSocket组件订阅IPC主题:runscreen/topic,接收有关测量的消息。该组件将通过asyncio服务器提供消息数据,从而使UI能够接收来自WebSocket服务器的数据。 要启动WebSocket组件: 进入到components/comwebsocketApp/awsggdeploy目录,这是您克隆GIT代码库到的Amazon EC2实例的目录。 修改部署脚本deployedgesh,在setEnv()区块中将以下占位符替换为您的自定义值: YOURAWSACCOUNTNUMBERYOURAWSREGIONS3BUCKET 用于边缘组件的工件ROLEARN 按CtrlX,然后按Y保存修改后的deploy3edgesh文件。 运行以下脚本以部署此组件: bashexport AWSACCESSKEYID=REPLACEWITHYOURAWSACCESSKEYIDexport AWSSECRETACCESSKEY=REPLACEWITHYOURAWSSECRETACCESSKEYexport AWSSESSIONTOKEN=REPLACEWITHYOURAWSSESSIONTOKENchmod 744 deployedgesh/deployedgesh 该Bash脚本大约需要10秒完成。完成后,请确认您在AWS IoT核心控制台中创建了以下组件: 日志管理器组件awsgreengrassLogManager将AWS IoT Greengrass核心设备的组件日志上传到Amazon CloudWatch日志。这个预构建的组件能够有效监控自定义组件的状态,开发者的工作量较少。可以通过AWS IoT Core选择公共组件列表中的日志管理器组件,添加到当前部署中。 选择日志管理器组件并选择配置组件以修改其配置。 在配置合并中,添加以下个别组件日志的配置: json{ logsUploaderConfiguration { componentLogsConfigurationMap { comexamplePublisher { minimumLogLevel INFO diskSpaceLimit 20 diskSpaceLimitUnit MB deleteLogFileAfterCloudUpload false } comWebsocketApp { minimumLogLevel INFO diskSpaceLimit 20 diskSpaceLimitUnit MB deleteLogFileAfterCloudUpload false } comfileUploader { minimumLogLevel INFO diskSpaceLimit 20 diskSpaceLimitUnit MB deleteLogFileAfterCloudUpload false } } }} 重新部署日志管理器后,可以在Amazon CloudWatch日志中找到组件日志。 在第一部分中,您可以上传JSON文件以提供IoT工作元数据。在通过UI页面http//localhost8080/Job上传JSON文件后,UI应用将自动切换到第二个UI页面:http//localhost8080/Job。该页面展示了从WebSocket服务器获取的流式数据,包括传感器数据,如电力曲线、风速、风向及LV有功功率。当检查作业状态显示为正常时,UI页面以绿色字体显示相关作业信息。 如果检查作业状态异常,UI页面将以红色显示,质量控制结果将显示为需要采取行动。 该http//localhost8080/Job UI页面允许检查员进行远程作业监控,并实时获取流式传感器数据。他们还可以从UI中获得质量控制信息,以帮助进行详细诊断。 打开AWS IoT核心控制台,按照以下步骤清理资源: 以上步骤完成了为本文创建的资源的清理。 在本博文中,风力涡轮数据源由虚拟发布者模拟,仅用于演示目的。当此应用应用于工业环境时,可以使用各种数据源,例如PLC、控制器、常规数据服务器等。社区中有多种Greengrass组件可用作数据源连接器,可以通过AWS IoT Greengrass v2部署到边缘设备。 本文中所述的WebSocket组件可以进一步扩展以包括自定义数据分析工作流,从而丰富风力涡轮数据,产生更多操作洞察。 在本系列的两部分中,我们回顾了远程IoT工作监控的优势和挑战。为了解决这些挑战,我们提出了一个边缘的UI应用解决方案。这一解决方案由AWS专业服务与AWS合作伙伴TensorIoT共同开发。在解决方案开发阶段,两家公司开发者利用最新的AWS IoT Greengrass V2运行时显著加速了IoT边缘应用程序的开发。本文中开发的模块化组件可以使用AWS IoT设备管理和AWS IoT Greengrass轻松部署和更新到数千个IoT设备。在未来,TensorIoT将能够基于在开发此IoT UI应用过程中所学的经验,为各种用例构建更多自定义应用。 作者信息: 标签: aws iot greengrass v2 边缘的数据处理与分析 边缘的UI应用AWS IoT Greengrass边缘远程工作监控应用开发
关键要点
引言
用例2解决方案概述
先决条件
用例2的详细步骤

第9步:测试IoT工作监控UI页面
清理工作
(1) AWS IoT号召行动
结论