带有 Arduino、Yaler 和 IFTTT 的物联网仪表
组件和用品
![]() |
| × | 1 | |||
| × | 1 | ||||
| × | 3 | ||||
| × | 1 |
必要的工具和机器
| ||||
| ||||
|
应用和在线服务
![]() |
|
关于这个项目

(来自 http://www.instructables.com/id/IoT-Gauge-with-Arduino-Yaler-IFTTT/)
如何使用 REST API 构建支持 Web 的、基于 Arduino 的 IoT Gauge,并将其连接到 IFTTT.com 混搭平台,通过 Yaler.net 中继服务*。
这有什么令人兴奋的?通过 Maker Channel,IFTTT 支持自定义 Webhooks,以集成 DIY IoT 项目。自 2011 年以来一直在等待**。
受 DIY 物联网经典产品 WhereDial 的启发,IoT Gauge 显示其所有者的当前位置。有点像哈利波特中的韦斯莱钟。
IoT Gauge 的设计和代码是通用的,也可用于显示,例如天气状况。逻辑驻留在云端,仪表只是一个带有 API 的伺服器。
干杯,@tamberg
下载(Uno)
- Yaler Arduino 库,YalerEthernetServer.zip
- Arduino Uno 代码、IoTGaugeWebService.ino
*) 我是 Yaler 的创始人。
**) Zapier,另一个混搭平台,始终支持自定义 Webhooks。
第 1 步:激光切割和组装 IoT Gauge




生产零件
- 下载 IoT Gauge 设计文件
- 从 4 毫米胶合板上激光切割设计
- 雕刻位置名称(或您需要的任何名称),或用笔添加它们
组装物联网仪表
- 将以太网扩展板添加到 Arduino(用于 Uno)
- 将 Arduino 拧到底板上(注意其方向)
- 将大面板添加到伺服,然后是小面板
- 将底板粘在两个面板上,确保一切都对齐
- 将指示器粘在面板上,确保它们的方向正确
- 使用跳线将伺服器连接到 Arduino(或屏蔽)的引脚 9、5V 和 GND
- 添加时钟指针(稍后校准)
第 2 步:上传 IoT Gauge Web 服务 Arduino 代码

简单的网络服务
控制 IoT Gauge 非常简单。 Web 服务(或 REST API)正在侦听传入请求并相应地设置伺服位置。 IoT Gauge 只是一个“愚蠢”的伺服器。将逻辑保留在云中可以让您稍后交换“大脑”,例如显示天气状况而不是位置。
远程访问 Arduino
为了让 IFTTT Cloud 服务能够访问 IoT Gauge,我们的 Arduino REST API 需要可以从 Web 访问和寻址。专家可以为他们的防火墙或路由器添加一个例外。但由于这可能很麻烦,我们将使用中继服务*。
安装 Arduino Uno(对于 Yun,见下文)
- 安装 YalerEthernetServer.zip 库,如 https://yaler.net/arduino 所示
- 下载 IoTGaugeWebService.ino Arduino Uno 代码
- 确保您使用唯一的 MAC 地址
- 替换RELAY_DOMAIN 使用您的中继域。(要获得中继域,请在 Yaler.net 上注册一个免费试用帐户)
- 将代码上传到您的 Arduino Uno
安装 Arduino Yun(对于 Uno,见上文)
- 安装 YalerTunnel 并启用 Web 访问,如 https://yaler.net/arduino-yun 中所示
- 下载 IoTGaugeMailboxApi.ino Arduino Yun 代码
- 将代码上传到您的 Arduino Yun
为什么Yun代码与Uno代码不同?
Yun 提供了一个称为邮箱的内置 REST API。为了使该 API 可从 Web 访问,我们使用 YalerTunnel Linux 守护程序(与 Uno 不同,它还支持 SSL 加密)。通过建立在已有的基础上,您可以简化您的代码。
看看这两个程序并自己决定。 Yun 的邮箱 API 并不完美(也不是严格意义上的 RESTful,因为它允许 GET 更改值),但它基于运行在 Yun 的 Linux 端的脚本,它在 Arduino 端使用较少的宝贵内存。
*) 如果您对使用中继服务不满意,只需将其删除并(对于 Uno)取消注释本地服务器。
第 3 步:使用 Curl 测试 Arduino Web 服务

在您的计算机上安装 Curl 命令行工具
- 从 http://curl.haxx.se/ 下载并安装 Curl
- 在您的计算机上打开一个 shell 并使用
$ curl -v http://google.com/
测试 Curl
启用 Arduino Yun API(跳过 Uno)
- 为 Yun 提供动力,稍等片刻,然后访问 http://arduino.local/
- 登录并点击配置
- 向下滚动并将 REST API 访问权限设置为打开
- 点击配置并重启
使用 Curl 测试物联网仪表
- 确保 Arduino 已通电并已连接到 Internet
- 使用*
$ curl -vX POST http://RELAY_DOMAIN.try.yaler.io/mailbox/pos/3<将伺服位置设置为 3(或从 1 到 5 的任何其他位置) /em>
(替换RELAY_DOMAIN 与您之前使用的中继域) - 确保伺服将手移动到所需位置(必要时调整手)
- 确保你得到类似
200 的东西 好的 作为对 curl 调用的响应 - 如果你得到
504 Arduino 不在线或输入错误
为什么要使用 Curl 测试您的 API?
Curl 是一个标准的 HTTP 客户端。您的浏览器非常适合测试 GET 请求,并且有一些在线工具也可以测试 PUT 和 POST 请求。但有时浏览器会增加魔法,比如跟随重定向。因此,如果您想确保从 IFTTT 发送的基本客户端或 3rd 方 Webhook 调用可以访问您的 Web 服务 API,那么 Curl 非常棒。
*) 对于 Uno,POST /mailbox/pos/3 与 PUT /servo?pos=3 一样有效,因为解析请求的代码非常宽容。
第 4 步:将 Arduino 连接到 IFTTT Maker 频道



创建新的 IFTTT 配方(或跳过以添加现有配方)
IFTT 可让您创建将触发器连接到操作的配方。
- 访问 https://ifttt.com/myrecipes/personal/new(如果您还没有注册)
- 要选择触发通道,请搜索例如“Android 设备”或“iOS 位置”并选择频道图标
- 然后选择一个触发器,例如连接到特定的 WiFi 网络 (安卓)
- 输入网络名称或位置
- 选择行动渠道时,搜索Maker 频道并选择它
- 然后选择操作 Make a web request
- 输入 URL http://REAY_DOMAIN.try.yaler.io/mailbox/pos/3 (替换RELAY_DOMAIN 与您之前使用的中继域)
- 对于方法选择 P 原声
- 对于内容类型,选择application/x-www-form-urlencoded
- Body 可以为空
添加现有的 IFTTT 配方
IFTTT 允许用户发布食谱。以下是控制 IoT Gauge 的两个秘诀:
- 在此处打开“来自 Android WiFi 位置的物联网仪表位置”配方
- 或者这里的“来自 iOS 位置的 IoT Gauge 位置”配方
- 或搜索*“IoT Gauge”食谱,https://ifttt.com/recipes/search?q=IoT+Gauge
- 要将食谱实例添加到您的食谱中,请点击添加 按钮
- 输入 WiFi 网络名称或位置(或配方要求的任何内容)
- 替换RELAY_DOMAIN 在带有您之前使用的中继域的 URL 中
- 将 URL 中的 pos 参数从 1 调整为 5 以匹配您的位置
- 为每个位置添加另一个配方实例
*) IFTTT 似乎还没有将 Maker 频道配方添加到搜索结果中
第 5 步:为 IoT Gauge 创建 IFTTT 执行按钮

IFTTT 做应用
IFTTT 还提供Do 适用于 iOS 和 Android 的应用程序。该应用程序允许您手动触发操作。这对于测试您的其他 IFTTT 配方非常有用。
与普通的 IFTTT 食谱不同,Do 应用食谱不能(还?)共享或公开。所以你必须从头开始创建它们。
创建一个新的 IFTTT Do 按钮
- 在 https://ifttt.com/products/do/button 上获取 Do Button Android 或 iPhone 应用
- 完成相当烦人但强制性的 (?) 介绍屏幕
- 使用右下角的小图标调出食谱列表
- 点击标志,然后点击频道 并搜索Maker 频道
- 然后选择操作 Make a web request
- 输入 URL http://REAY_DOMAIN.try.yaler.io/mailbox/pos/3 (替换RELAY_DOMAIN 与您之前使用的中继域)
- 对于方法 选择POST
- 对于内容类型 选择 application/x-www-form-urlencoded
- 身体 可以留空
- 点按添加 创建按钮
- 创建后,可以在 https://ifttt.com/myrecipes/do 上在线编辑食谱
就是这样 - 感谢您的阅读,如果您有任何问题或建议,请告诉我。
代码
比特桶
定制零件和外壳
IoT_Gauge.zip示意图

制造工艺
- DIY 最简单的 IV9 Numitron 时钟与 Arduino
- Arduino Gyroscope Game with MPU-6050
- 利用物联网和人工智能拯救水生生物和防治水污染
- MotionSense
- 带旋转编码器的DIY简易测量轮
- Arduino 排斥电磁悬浮
- Arduino Powered Weather Balloon Datalogger
- ArduFarmBot - 第 2 部分:远程站和物联网实施
- 单 LED 矩阵 Arduino 翻转时钟
- 微控制器实验室
- 带有 Arduino Nano 的手持盖革计数器
- 带 WS2812 LED 灯条的 DIY Arduino 1D 乒乓球游戏