首先,我希望我有一个亚马逊物联网按钮。我认为这样简单的解决方案对人们的日常生活很有用。物联网应该是这样的——任何人都可以使用;这不是人们必须处理的另一种技术,而是可以简化和丰富人们的生活的东西。
对于这个项目,我使用了一块英特尔 Edison 迷你板和一个按钮来模拟物联网按钮。但这几乎可以通过任何具有连接性的硬件来完成。
现在的项目.. 去一家餐馆只是为了发现我们必须等待 20、30 分钟是一个常见的问题。更糟糕的是,如果您必须在午餐后赶回工作开会。在我们进入餐厅之前,我们知道每家餐厅要等待多长时间会好得多。该项目设想了一种简单的方法,让餐厅向其尊贵的顾客提供该信息。服务器只需按下 IoT 按钮即可将预计等待时间增加或减少预设数量,具体取决于等待的客户数量。例如,按一次按钮可将等待时间增加 5 分钟,或双击可将时间减少 5 分钟。该餐厅的网站将轮询数据库以在其主页上显示等待时间。一个应用程序也可以做到这一点。用户可以通过多种方式获取该信息。
演示系统如下图所示:
为了在硬件中实现这一点,我使用了 Intel Edison。一个按钮连接到 GPIO 引脚。设置按钮中断以检测它是单击还是双击。如果是单击,则发送 MQTT 消息以增加等待时间。如果是双击,请发送消息以减少等待时间。
Edison 上运行的代码基于 Intel 的iot devkit 和AWS IoT Embedded C SDK 。英特尔开发套件在 MRAA 库中提供 GPIO 功能;并且选择了嵌入式 C SDK,因此可以轻松地将其移植到其他平台。
谈到这一点,我对 AWS DynamoDB、AWS Lambda 和 AWS IoT 不是很熟悉。AWS IoT的快速入门当然很有帮助。但这并不完全直观。
但是,AWS 控制台的 Web 界面非常出色。
首先创建一个 DynamoDB 并添加主键、属性。主要属性是当前等待时间的“Wait”和时间戳的“LastUpdate”。
现在创建 lambda 函数来添加/更新表中的数据。注意为了最小化演示的范围,我将继续使用一项来更新等待时间。实际上,您可能会在表格中添加更多项目,而客户端可能会使用多个项目来显示等待时间的趋势。
选择简单的移动后端 (node.js) 来创建 Lambda 函数。代码会先读取表中的等待时间,然后根据输入加减时间来更新表中的等待时间。有一些处理可以确保等待时间不会变成负数;并且每天的等待时间都是从0开始的,具体请参考源码。
为了调试 lambda 代码,我打开了 3 个浏览器点击以监控 Lambda 代码、DynamoDB 表数据和 CloudWatch 中的日志输出。我发现这很方便。
Lambda 函数正常工作后,创建 AWS IoT 规则以触发 Lambda 函数。
可以选择使用 MQTT.fx 测试 Lambda 函数的 AWS IoT 触发。您可以检查 DynamoDB 表或 Cloudwatch 日志以确认操作。
一旦这正常工作,将代码添加到嵌入式 C 代码以发送 MQTT 消息以触发更新。详情请参考源代码。
使用适用于 JavaScript 的 AWS 开发工具包,Web 客户端可以查询 DynamoDB 并向客户显示等待时间。下面是一个非常简单的演示 -
应在客户端 Javascript 中创建和使用只读 AWS 用户 ID。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !