使用 InfluxDB 和 IFTTT 监控您的智能家居

导航至

您是否拥有智能家居和物联网设备,如开关、摄像头、门铃、警报系统或电器?您是否想在零代码的情况下监控这些设备并将事件发送到 InfluxDB?借助 IFTTT Webhooks,您可以做到!

让我们深入了解。

什么是 IFTTT?

IFTTT 代表 “If This, Then That”(如果这样,那么就那样)。它是一项云服务,允许您连接物联网设备和服务。这是一项非常强大的服务,可以帮助您自动化您的智能家居。

Do more with the things you love

我使用 IFTTT 来

  • 当我靠近家时打开我的车库门
  • 通过运动检测打开我家中的灯
  • 当我冰箱门打开太久时,给我的手机发送通知
  • 当我的家庭警报被触发时,开始录制摄像头视频。

然而,如果我想做更多事情,例如

  • 跟踪来自我的所有摄像头的运动和声音事件
  • 或者记录冰箱温度随时间的变化
  • 了解哪些灯被打开的时间最长
  • 跟踪我家中的温度波动频率

我该如何做所有这些?这就是 InfluxDB 的用武之地。

什么是 InfluxDB?

InfluxDB 是一个时间序列数据库,允许您随时间跟踪来自设备和服务的指标和事件。InfluxDB 接受 Line Protocol 格式的数据。它旨在扩展和流式传输来自您所有设备的数据。InfluxDB 是一个 开源项目。但是,它也提供一个免费的 云服务,我将在本次练习中使用它。

不仅仅是监控 Wyze 摄像头的运动和声音事件

Wyze 应用程序让我看到我的 Wyze 摄像头的运动和声音事件。但它没有提供一种方法来组合数据并回答我的摄像头每分钟捕获运动事件的频率。为了解决这个问题,我将为我的 Wyze 摄像头使用 IFTTT + InfluxDB 集成。

最好的部分是这个集成不需要任何代码!这是它的工作原理。

创建 IFTTT 和 InfluxDB 集成

首先,创建 IFTTTInfluxDB Cloud 帐户。两者都是免费的!

完成后,进入您的 IFTTT 帐户并“连接” Wyze。

接下来,登录到您的 InfluxDB Cloud 帐户并创建一个存储桶。“存储桶”是您存储时间序列数据的地方。您可以通过访问 “Load Data”(加载数据)页面并选择 “Buckets”(存储桶)选项卡来创建存储桶。将此存储桶命名为您喜欢的任何名称。我将其命名为 “wyze”。

当您在此页面上时,点击 “API Tokens”(API 令牌)选项卡。创建一个新的 “read/write”(读/写)令牌,并授予对其新创建的存储桶的写入权限。此令牌将授予 IFTTT 写入您的 InfluxDB 存储桶的权限。

Generate Read-Write API token

创建新令牌后,将该令牌复制到您的剪贴板。

最后,您需要找到您的 InfluxDB 组织 ID。点击导航栏上的首字母图标并选择 “About”(关于)。

Find your InfluxDB Organization ID

您将在此页面上找到您的组织 ID。也将其复制到某个地方,以便稍后引用。

创建 IFTTT 集成

好了,现在开始有趣的部分了!返回 IFTTT 登录。

点击右上角的 “Create”(创建)按钮。然后您将看到 “If this…”(如果这样…),“…then that”(…那么就那样)屏幕。

点击 “If this…”(如果这样…),然后搜索 Wyze 服务。

Create your own - if this - then that

您将看到您可以订阅的事件。在我们的例子中,我们对来自摄像头的运动事件感兴趣。

选择 “Motion detected”(检测到运动),然后在下拉列表中选择 “Any camera”(任何摄像头)。

点击 “Create Trigger”(创建触发器)后,您应该看到此屏幕。这意味着您已经完成了一半的工作!

Create Trigger

现在,您猜对了,点击 “…Then that”(…那么就那样)按钮!

发起 Webhook Web 请求

现在搜索 Webhooks,然后选择 “Make a web request”(发起 Web 请求)。您应该最终看到一个亮蓝色的屏幕,如下所示

Make a web request

以下是我们将要填写的每个字段的内容

  • URL:这将取决于您注册的 InfluxDB 区域。您可以通过在登录 InfluxDB Cloud 后,从浏览器地址栏中复制域名来找到您的区域。在我的例子中,我的区域是 https://us-west-2-1.aws.cloud2.influxdata.com/。找到您的区域后,将 “/api/v2/write?orgID=[[your org id]]&bucket=[[your bucket name]]” 附加到 URL。
  • 方法:选择 “POST”
  • 内容类型:选择 “text/plain”
  • 附加标头:输入 “Authorization: Token [[your InfluxDB API token]]”

正文:输入 activity,type=motion message=”{{MotionDetected}}”and 转义消息,以便双引号正确传递。IFTTT 将使用您的 API 令牌向 InfluxDB Cloud 发出 API 请求进行授权。

在请求的正文中,您正在发送一些非常基本的 Line Protocol。您将 “activity” 设置为 measurement(测量),将值 “motion” 设置为字段 “type”,并创建标签 “message”,其值为来自您的 Wyze 摄像头的任何内容。在本例中,它将是消息 “Motion detected on [[camera name]]”(在 [[摄像头名称]] 上检测到运动)。因为此 Line Protocol 中没有时间戳,所以 InfluxDB 会在收到您的消息时自动附加当前时间。

点击保存按钮!您完成了!在您的 Wyze 摄像头前跳个舞,开始将这些运动事件发送到 InfluxDB。

sending motion events to InfluxDB

在您收集了一些运动事件后,您可以重新登录到 InfluxDB 开始分析。我将在 InfluxDB 中创建一个 Notebook 来探索这些数据。您可以通过从导航树中选择 “Notebooks”(笔记本)选项来执行相同的操作。

InfluxDB 将在新 Notebook 中向您展示查询构建器和下方的几个可视化面板。

在查询构建器中选择您的存储桶和 measurement(测量)“activity”。

接下来,点击 Notebook 顶部的 “Run”(运行)按钮来运行查询。

Build a Query

您应该看到一些数据。

Validate the Data

为运动事件编写 Flux 查询

我有两个摄像头:Door Cam 和 Pan Cam。我想知道哪个摄像头每 10 分钟接收到更多的运动事件。这是我编写的一个 Flux 查询,可以帮助我们可视化这一点

import "strings"
from(bucket: "wyze")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["_measurement"] == "activity")
|> filter(fn: (r) => strings.containsStr(v: r["_value"], substr: "Door Cam"))
|> aggregateWindow(every: 10m, fn: count, createEmpty: false)
|> yield(name: "count")

此 Flux 查询查找消息 “Motion detected on Door Cam”(在 Door Cam 上检测到运动)出现的所有事件,并通过计算 10 分钟内发生的事件数来编译这些事件。

将 Flux 查询添加到您的 Notebook 中

您可以通过点击底部的 + 按钮并选择 “Script”(脚本)将此查询添加到您的 Notebook 中。然后,粘贴查询。

接下来,再次点击 + 按钮并选择 “Graph”(图表)。

最后,点击 “Run”(运行)按钮以再次重新运行整个 Notebook。您应该看到一个可视化图表。

如果您没有看到,请务必检查 Notebook 右上角的时间窗口——我将其设置为 “Past 24 hours”(过去 24 小时)。我的可视化图表如下所示

Door Cam activity

Door Cam 最多每 10 分钟看到两个运动事件。如果我重复相同的过程并为 Pan Cam 生成另一个可视化图表,它看起来非常相似。似乎通常情况下,两个摄像头都检测到相同的事件。我应该检查以确保它们的可见视野没有重叠。

check there is not any overlap in their visible field

就是这样!

我给您留一个挑战:重复此练习,但也要捕获来自您的 Wyze 摄像头的 “Sound detected”(检测到声音)事件!您应该能够在可视化图表中重叠运动和声音数据。您将看到当您的摄像头也看到某些东西时,它们听到某些东西的频率。这是我的两个摄像头组合在一起的预览

both cameras combined

亲自尝试一下

此处演示的与 Wyze 的集成只是您可以使用 IFTTT 和 InfluxDB 创建的众多潜在集成之一!IFTTT 还有其他 IFTTT 服务,拥有数百种设备和服务。您可以使用上述 IFTTT Webhooks 将来自其中任何一个的数据发送到 InfluxDB。

通过加入 InfluxDB 社区 Slack 与我分享您的智能家居项目。我很想看看您是如何使用 IFTTT 和 InfluxDB 监控您的智能家居的

常见问题解答

IFTTT 是否与 Wyze 兼容?

是的,Wyze 与 IFTTT 兼容。您只需在手机或桌面设备上打开 IFTTT 应用程序并搜索 WYZE。到达那里后,您可以使用 Wyze 的众多小程序中的任何一个。

如何将 Wyze 添加到 IFTTT?

要开始使用 IFTTT,您必须首先创建一个帐户。您可以从 Google PlayApp Store 下载 IFTTT 应用程序。按照提示创建用户帐户。

要在 IFTTT 中链接您的 Wyze 帐户,请搜索 Wyze。按 “Connect”(连接)。它将要求您登录您的 Wyze 帐户。

Wyze 小程序
一旦您在 IFTTT 中拥有帐户并将其连接到 Wyze 应用程序,您就可以开始使用 Wyze 小程序。您可以先试水,尝试一个小程序来熟悉一下。您也可以 在此处 搜索小程序。

Wyze 是亚马逊旗下的公司吗?

不是,亚马逊不拥有它。Wyze Labs, Inc. 及其所有相关商标和徽标是一家美国公司,总部位于华盛顿州西雅图。它由四名前亚马逊员工——Yun Zhang、Dongsheng Song、Elana Fishman 和 Dave Crosby 创立。

Wyze 可以触发 Alexa 吗?

Alexa(在亚马逊 Echo 设备中)和相关徽标是 amazon.com inc. 的商标。Wyze 可以触发 Alexa,但您必须在您的 Alexa 应用程序中使用 Voice Monkey Skill 才能实现此目的。点击 此链接 查看教程。