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

2020 年 1 月 09 日

利用 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 1 col 2 col 3
Source 源 Target 目标 Topic 主题
wfSensor IoT Cloud waterflower/sensor/telemetry
wfSensor wfSwitch waterflower/sensor/telemetry
wfSwitch IoT Cloud waterflower/relay
IoT Cloud wfSwitch waterflower/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 不断改进您的边缘功能。

作者介绍:

!
复制代码
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 年 1 月 09 日 15:57 40

评论

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

两年Java开发经验赶上金九招聘季涨到23K,这究竟是怎么做到的?

Java架构师迁哥

Java面试史上最全的JAVA专业术语面试100问 (前1-50)

Java架构师迁哥

架构师训练营第 0 期 期末大作业

无名氏

血的教训!千万别在生产使用这些 redis 指令

楼下小黑哥

Java redis 生产事故

滴滴基于 Flink 的实时数仓建设实践

Apache Flink

flink

在Ubuntu 20.04 搭建 Django 开发环境 以及 快速构建一个简单的 Blog

Matrix Chan

Python django 后端开发 Ubuntu20.04

百度大脑6.0重磅升级 不断进阶中的中国AI底座实力尽显

脑极体

架构师训练营-第1周学习总结(1期)

阿甘

UML

Golang领域模型-资源库

奔奔奔跑

go 微服务架构 领域驱动设计 DDD 微服务拆分

读书笔记之《普罗普:故事形态学》

深度码农

哈哈,成为作者了

大海

架构师训练营 - 大作业

张明森

介绍

剑心

学习路线

繁星计划将成为引领全球币值管理的带动计划!

InfoQ_967a83c6d0d7

甲方日常 15

大橘子

工作 随笔杂谈 日常

Week 13 命题作业

Jeremy

anyRTC RTSP转WebRTC方案

anyRTC开发者

音视频 WebRTC 直播 RTC 安卓

Week 13 学习总结

Jeremy

USDT跑分承兑系统开发,区块链支付平台搭建

13823153121

我写了一个TypeScript虚拟机。

渔子长

JavaScript typescript 前端 deno Node

服务质量分析:腾讯会议&腾讯云Elasticsearch玩出了怎样的新操作?【>>戳文章免费体验Elasticsearch服务30天】

小小的一朵云

大数据

Clickhouse在大数据分析平台-留存分析上的应用

小小的一朵云

大数据

应对高并发系统有没有通用的解决方案呢?

架构师修行之路

架构 高并发 异步

面试常考算法题之 Top K 问题

码农田小齐

数据结构 算法

随想之UI+API

云杉

Apache Pulsar 在腾讯 Angel PowerFL 联邦学习平台上的实践

Apache Pulsar

机器学习 Apache 开源 联邦学习 Apache Pulsar

LeetCode题解:206. 反转链表,双指针,JavaScript,详细注释

Lee Chen

LeetCode 前端进阶训练营

Netty之旅三:Netty服务端启动源码分析,一梭子带走!

一枝花算不算浪漫

Netty

金融企业敏捷转型大咖风采 | 中国出口信用保险公司的 DevOps 落地之道

Atlassian速递

项目管理 DevOps 敏捷 Atlassian 金融行业

架构师训练营-第1周课后作业(1期)

阿甘

oeasy 教您玩转 linux 010215 随机谚语 fortune

o

众安黑客马拉松大赛总决赛-InfoQ小编探班

众安黑客马拉松大赛总决赛-InfoQ小编探班

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