为 AWS IoT Greengrass 配置和部署 Lambda 函数
选择之前创建的 Greengrass 组,在配置页面上,选择 Lambdas,然后点击两次 Add Lamba,分别将 wfSensor 和 wfSwitch 加入,添加时注意以下要点:
选择 Use existing Lambda
在选择版本时,不要选择具体版本号,而是选择 Alias:xxx
在加入的函数右上角点击省略号(…),选择 Edit Configuration(编辑配置)
对于“Run as”,请选择 Another user ID/group ID,在下方输入两个 0,对于“containerization”,选择 No container(always)。这个修改只是针对第二种交互模式,对于第一种交互模式,无需修改。
Timeout 超时值改为 10 秒
对于 Lamba 生命周期,wfSensor 需要改为 long-lived;wfSwitchLambda 不用修改。
配置如下订阅:
针对本文的第二种交互模式,需要在树莓派上修改 AWS IoT Greengrass 的参数。打开 /greengrass/config/config.json,在 “runtime”部分,增加:
Python
在 AWS IoT 控制台上,在相应 greengrass 组中,点击 Deploy 部署,将云配置部署到树莓派设备。第一次部署可能需要几分钟。当部署完成后,您应该在部署页面上的状态列中看到已成功完成。
您可以验证 Lambda 函数是否在设备上运行,详细步骤参见:https://docs.aws.amazon.com/zh_cn/greengrass/latest/developerguide/lambda-check.html。
创建和配置****Amazon Elasticsearch
在 Amazon Elasticsearch 控制台上,创建一个新域,名称为 waterflower,网络配置选择“Public access”,并输入以下 Access policy(访问策略):
Python
上面“x.x.x.x”请输入您的电脑对应的公网 IP 地址,您可以输入https://checkip.amazonaws.com获得。
访问 Kibana 界面,创建 index,命名为 wf-sensor:
Python
创建 index pattern:
名称:wf-sensor*
时间过滤器字段名称:datetime
配置 IoT 规则引擎
在 AWS IoT 控制台中,点击 Act->Rules,创建规则:
规则查询条件:SELECT * FROM ‘waterflower/sensor/telemetry’
添加 Action,选择 Send a message to the Amazon Elasticsearch Service
选择 Domain(域)waterflower
ID: ${newuuid()}
Index: wf-sensor
Type: _doc
创建可视化报表
在 Kibana 界面,点击左边菜单栏的 Discover(发现),您现在可以看到上传的设备状态数据,它们按时间顺序显示在屏幕上。
点击左边菜单栏的 Visualize,您现在可以创建可视化图表,并可以添加到仪表板中,以远程监控和查看传感器状态和继电器/水泵工作情况。如下图示例:
测试和验证
您可以通过以下几个方法验证自动浇花效果:
利用 AWS IoT 控制台的 test 功能发布消息到 waterflower/setting,修改湿度阈值,测试水泵工作情况
通过 Amazon Elasticsearch 的 Kibana 界面,查看传感器数据变化情况和水泵工作情况
关闭树莓派的互联网连接,验证连接丢失的条件下,自动浇花是否正常工作
资源清理
在您成功搭建了本文介绍的自动浇花系统后,根据您的使用需求,可以按照如下两种情况对创建的资源进行清理,以免产生不必要的费用。
如果您想继续使用自动浇花功能,但不再需要进行远程监控,请按以下步骤删除资源:
打开 AWS IoT 控制台,依次选择 Act -> Rules,点击之前创建的规则 waterflower 的右上角省略号(…),点击删除并确认
打开 Amazon Elasticsearch 控制台,可以看到之前创建的域 waterflower,点击进入。然后,点击最上面一排的“Delete domain(删除域)”按钮,在弹出窗口中,选中 checkbox 框,然后点击删除
如果您不再使用整个自动浇花系统,请先按上面步骤删除远程监控相关的资源,然后按以下步骤继续清理所有资源:
SSH 到树莓派,输入以下命令停止 greengrass 进程:
Python
打开 AWS IoT 控制台,点击左边菜单栏中的 Greengrass -> Groups,点击之前创建的组 waterflower,进入组管理界面,点击右上角的 Actions -> Reset Deployments,在弹出窗口中,选中 checkbox 框,点击 Reset deployment
接着点击右上角的 Actions -> Delete Group,在弹出窗口中,点击“Yes, Continue to delete”按钮,确认删除
继续在 AWS IoT 控制台,点击左边的 Manage -> Things,点击 waterflower_Core 的右上角省略号(…),点击删除并确认
小结
根据上面的方案实现,您可能会发现在 树莓派系统上运行 AWS IoT Greengrass 可以构建更多的 IoT 解决方案。从基本的遥测到执行机器学习推理,我们的客户正在构建多种多样的 AWS IoT Greengrass 解决方案,以便不断创新并扩展解决方案的价值。
在本文中,您学习了如何利用 AWS IoT Greengrass DIY 一个自动浇花系统。现在,您可以扩展这个方案,增加手机 App 实现对浇花参数控制和远程监控自动浇花工作状况,并利用 AWS IoT Greengrass 不断改进您的边缘功能。
作者介绍:
本文转载自 AWS 技术博客。
评论