Agentic AI、具身智能、强化学习框架、端侧大模型……来QCon上海站,感受AI的未来! 了解详情
写点什么

利用 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:57896

评论

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

华为帐号服务学习笔记(三):10分钟完成Authorization Code模式客户端Demo开发

Coding狙击

android HMS

SumSwap在市场上的强大突破是否会成为DEX领域最大的黑马?

币圈资讯

Dubbo 学习笔记(三) Spring Boot 整合 Dubbo(官方版)

U2647

Spring Boot dubbo 4月日更

「免费开源」基于Vue和Quasar的前端SPA项目crudapi后台管理系统实战之业务数据增删改查(七)

crudapi

Vue API crud crudapi quasar

派出所重点人员管控系统开发,建设智慧警务

13828808769

智慧组工

智慧公安情报综合研判平台开发,助推公安信息化发展

13828808769

智慧城市

区块链电子合同技术方案,区块链电子合同存证

13828808769

区块链 区块链+

一文带你剖析LiteOS互斥锁Mutex源代码

华为云开发者联盟

mutex LiteOS 互斥锁 互斥锁结构体

亿网嘉元是做什么的?

飞亚科技

systemctl的使用

箭上有毒

linux运维 4月日更

【LeetCode】子集二Java题解

Albert

算法 LeetCode 4月日更

划重点丨详解Java流程控制语句知识点

华为云开发者联盟

Java 流程控制语句

技术人如何调研和选型第三方 SDK?全文干货

融云 RongCloud

css网页布局小结

Darren

CSS

云数据库时代的新思考,这位90后大咖想邀你聊聊

华为云开发者联盟

数据库 开源 opengauss GaussDB 华为云数据库

MySQL 事务隔离

Sakura

4月日更

数据分析与数据增长核心逻辑杂谈

小飞象@木木自由

数据分析

云小课 | 不了解EIP带宽计费规则?看这里!

华为云开发者联盟

带宽 弹性公网IP 带宽变更 计费模式

将本地maven仓库的数据恢复到Nexus仓库

白粥

工作笔记

大意!6行代码,“报废”5片单片机!

不脱发的程序猿

程序人生 嵌入式软件 单片机 4月日更 国产MCU

Cloudreve 自建云盘实践,我说了没人能限得了我的容量和速度!

小傅哥

Java 小傅哥 Cloudreve 自建云盘

公有云成本节省神器!京东云共享带宽包正式上线

京东科技开发者

公有云 带宽

OKR实践中的痛点(5):战略缺失怎么玩OKR?

大叔杨

团队管理 OKR 敏捷 敏捷绩效

NA(Nirvana)公链“为应用而生” NAC公链领跑公链新格局!

区块链第一资讯

你的数仓函数结果不稳定,可能是属性指定错了

华为云开发者联盟

函数 GaussDB(DWS) 函数属性 函数下推 易失性级别

线上服务 CPU 100% ?一键定位 so easy!

Java小咖秀

性能 cpu 服务器 负载 紧急问题

2D+1D | vivo官网Web 3D应用开发与实战

vivo互联网技术

大前端 WebGL 3D数据可视化 Draco 3D

创建索引,这些知识应该了解

Simon

MySQL 索引

Linux rmdir 命令

一个大红包

linux命令 4月日更

装双系统?不需要!教你在iMac上流畅使用Windows

懒得勤快

Mac 虚拟机 苹果 crossover

进来看看是不是你想要的效果,Android吸顶效果,并有着ViewPager左右切换

第三女神程忆难

Java android kotlin 安卓 移动开发

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