写点什么

利用 AWS IoT Greengrass 在边缘 DIY 自动浇花 | 手把手玩转物联网(四)

  • 2020-01-09
  • 本文字数:2648 字

    阅读完需:约 9 分钟

利用 AWS IoT Greengrass 在边缘 DIY 自动浇花 | 手把手玩转物联网(四)

为 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 不用修改。


配置如下订阅:


col 1col 2col 3
Source 源Target目标Topic 主题
wfSensorIoT Cloudwaterflower/sensor/telemetry
wfSensorwfSwitchwaterflower/sensor/telemetry
wfSwitchIoT Cloudwaterflower/relay
IoT CloudwfSwitchwaterflower/setting


针对本文的第二种交互模式,需要在树莓派上修改 AWS IoT Greengrass 的参数。打开 /greengrass/config/config.json,在 “runtime”部分,增加:


Python


"allowFunctionsToRunAsRoot" : "yes"
复制代码


在 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


{  "Version": "2012-10-17",  "Statement": [    {      "Effect": "Allow",      "Principal": {        "AWS": "*"      },      "Action": "es:*",      "Resource": "arn:aws-cn:es:<region>:<your-Account-ID>:domain/waterflower/*",      "Condition": {        "IpAddress": {          "aws:SourceIp": [            "x.x.x.x/32"          ]        }      }    }  ]}
复制代码


上面“x.x.x.x”请输入您的电脑对应的公网 IP 地址,您可以输入https://checkip.amazonaws.com获得。


访问 Kibana 界面,创建 index,命名为 wf-sensor:


Python


PUT /wf-sensor{  "mappings": {    "properties": {      "timestamp": { "type": "long", "copy_to":  "datetime" },      "datetime": { "type": "date", "store": true },      "clientId": { "type": "text" },      "temp":    { "type": "float" },      "moisture":  { "type": "integer"  },       "light":   { "type": "integer"  },      "switch":  { "type": "integer" },      "state":  { "type": "integer" }    }  }}
复制代码


创建 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


$sudo /greengrass/ggc/core/greengrassd stop
复制代码


  • 打开 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 不断改进您的边缘功能。


作者介绍:


!



### [](https://amazonaws-china.com/cn/blogs/china/tag/%E5%BC%A0%E7%BA%A2%E6%9D%B0/)
AWS解决方案架构师。 负责基于AWS的云计算方案架构咨询和设计,同时致力于 AWS 物联网服务和无服务器架构在国内和全球商业客户的应用和推广,推进企业服务迁移上云进程。有10年以上的数据中心基础架构设计,企业级应用系统设计开发等经验。
复制代码


本文转载自 AWS 技术博客。


原文链接:https://amazonaws-china.com/cn/blogs/china/diy-auto-watering-at-the-edge-with-aws-iot-greengrass-hand-to-hand-internet-of-things/


2020-01-09 15:57700

评论

发布
暂无评论
发现更多内容

week0-作业一

徐培

第一周架构总结

漫步云梯

架构总结

第一周总结

gen_jin

架构师训练Week1 - 学习总结

伊利是个圈

学习 极客大学架构师训练营

架构学习作业-食堂就餐卡系统架构

乐天

架构师训练营 第1周总结

Lingjun

极客大学架构师训练营

关于架构师的一点理解

石刻掌纹

作业二:根据当周学习情况,完成一篇学习总结

飞翔的风

食堂就餐卡系统设计

逍遥乐天

食堂就餐卡系统设计

yupi

读笔 | 为什么“杨丽萍”们的生活被指责

张鸱鸺

读书笔记 心灵圣经 生活方式

架构学习第一周总结

lwy

食堂就餐卡系统设计

跨域刀

极客大学架构师训练营

架构训练营第一周-作业

无心水

【架构师训练营 - week1 -2】学习总结

早睡早起

架构师训练营 第一周 作业

极客大学架构师训练营

关于架构师的理解(第一周学习总结)

就餐卡系统架构设计文档

gen_jin

极客时间-作业一-食堂就餐卡系统设计

刘柯

作业一:食堂就餐卡系统设计

飞翔的风

食堂就餐卡系统设计

weijin

架构师训练营第一周学习总结

JUN

week01-学习心得

强哥

极客大学架构师训练营

架构0期作业1

Nan Jiang

【架构课笔记-第一周】一般方法与设计文档

Nelson

第一周作业(1)

佳明

第一周作业

仪轩

食堂就餐卡系统架构设计⽂档

一点点..

学习总结

YY

「架构师训练营」学习笔记:第1周

Amy

学习 极客大学架构师训练营

《架构师训练营》--第一周命题作业

极客大学架构师训练营

利用 AWS IoT Greengrass 在边缘 DIY 自动浇花 | 手把手玩转物联网(四)_行业深度_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章