Plant Buddy 第 4 部分:使用 UI

导航至

我的同事 Rick Spencer 一直在从事一个有趣的物联网项目 Plant Buddy。这个项目需要将一些传感器焊接到 Arduino 上,并教导该设备如何直接与 InfluxDB Cloud 通信,以便他可以监控他的植物。然后他开发了一个应用程序,允许用户在自定义用户体验中可视化和创建来自其上传的 Plant Buddy 设备数据的警报。

要了解有关 Rick 项目的更多信息,您可以查看第 1 部分,其中他设计了设备的基本原理,并教导它进行通信并添加一些通知;第 2 部分,其中他添加了降采样和仪表板;以及第 3 部分,其中他为 plantbuddy.com 构建了一个应用程序。

当我阅读 Rick 的博客时,我对我们的 CLI 的强大功能印象深刻,它使 Rick 可以轻松创建存储桶、生成令牌、写入数据、查询数据以及设置检查和通知。对于熟悉在命令行工作的人来说,这非常直观。但作为 UI 团队的负责人,我想看看对于想要使用 UI 而不是 CLI 来实现相同功能的人来说,体验会是怎样的。因此,以下是第 3 部分的配套博客,针对我们这些更以 UI 为中心的人,使用 UI 而不是 CLI。

非常感谢 Rick Spencer 所做的工作,他构建了一个非常酷的物联网应用程序来管理他不断增长的花园(并关注我的植物)。

InfluxDB Cloud 的物联网应用程序开发引导

Rick 已经创建了一个 InfluxDB Cloud 帐户,所以我请他邀请我加入他的帐户,以便我们可以使用相同的数据。一旦我接受邀请,一切就绪,我就能够登录他的帐户。由于我想要访问的每个 InfluxDB Cloud 帐户都需要不同的电子邮件地址,因此在本示例中我使用 [email protected]

Organization tab

我需要一个令牌才能将我的数据写入此帐户。Rick 已经有一个令牌,但我需要一个供我使用,因为令牌特定于每个用户。Rick 已经创建了一个存储桶 plantbuddy,所以我需要一个读/写令牌才能将我的数据写入他的存储桶。就像 Rick 所做的那样,我在 UI 中导航到 Data -> Tokens 以生成我的令牌。

我单击 Generate Token,为 plantbuddy 存储桶选择 Read-Write Token,并为其提供名称 plantbuddy read-write token

Load Data

上传一些 Line Protocol

现在我已经可以访问存储桶了,我可以向其中上传一些数据,以便我可以立即开始测试。Rick 给了我一个可以使用的 Python 脚本,所以我将 user 字段设置为 barbara,将 device_id 设置为 02,以便我的指标可以从 Rick 的指标中过滤出来。我复制了我刚刚生成的读/写令牌到我的客户端环境,并运行我的 Python 脚本来生成和上传一些测试数据。

line protocol 格式是有详细文档记录的。以下是我的数据外观的摘录

soil_moisture,user=barbara,device_id=02 reading=157i 1623622366752460032
humidity,user=barbara,device_id=02 reading=69i 1623622366752460032
soil_temp,user=barbara,device_id=02 reading=66i 1623622366752460032
light,user=barbara,device_id=02 reading=36i 1623622426752460032
soil_moisture,user=barbara,device_id=02 reading=153i 1623622426752460032
humidity,user=barbara,device_id=02 reading=68i 1623622426752460032
soil_temp,user=barbara,device_id=02 reading=67i 1623622426752460032

我使用 write 端点从 Python 脚本写入我的数据。我可以使用 UI 上传我的数据,但考虑到我正在使用 Python 脚本生成测试数据,直接调用 write 端点同样容易,而不是将我的数据写入文件,然后通过 UI 上传文件。

没有报告错误,因此看起来它工作正常,所以我运行了一个查询以确保。

运行查询

Data Explorer 让我可以轻松确认我的数据位于 plantbuddy 存储桶中。

Data Explorer

或者,我可以使用 notebooks UI 中的指标选择器来查看存储桶中包含哪些指标。我确认我的数据在那里,已准备好进行分析和操作。

Barbara's data

降采样

降采样 需要计算低分辨率数据以从高分辨率数据进行显示,并将预先计算的数据保存下来以供显示或进一步计算。除了提供更流畅的用户体验外,它还可以节省您的存储成本,因为您可以将降采样数据保存在保留期比原始数据更长的存储桶中。Rick 使用 CLI 创建降采样存储桶,编写他的降采样脚本,并创建一个任务来运行脚本。我采取了一种更简单的方法,并使用 notebooks UI 创建将对我的数据进行降采样的任务。我选择了我的指标,然后添加了一个“降采样”面板,每 10 分钟聚合一次数据,并配置了一个输出面板,将结果写入降采样存储桶。

Querying the downsampled bucket

查询降采样存储桶,我可以看到所有数据都在那里。

创建降采样任务

一旦我确认降采样工作正常,我就拿走了我的 notebook,并将其注册为每 15 分钟运行一次的任务,方法是添加一个 schedule 面板,并将其配置为每 15 分钟运行一次。我还更改了范围,使其仅回溯最近 15 分钟,这样我就不会多次降采样数据。

Create a downsampling task

当我导出为任务时,我可以看到生成的 Flux 代码

Export as task tab

我可以看到它已成功运行,以及一些其他有用的信息,例如实际运行的 Flux 代码。

Downsample Barbaras data - runs

通知

Rick 添加的最后一个功能是 plantbuddy.com 能够在土壤过于干燥时通知用户。使用 InfluxDB,您可以使用任务创建状态检查和通知规则,这些规则将在您定义的任何条件下向您的应用程序发送消息。我决定使用 UI 设置我的状态检查和通知规则。

阈值检查

我转到 UI 中的 Alerts 选项来设置我的检查。它分为三个部分

  1. 定义检查
  2. 配置通知端点
  3. 定义通知规则

要定义检查,我所要做的就是选择我要检查的字段以及我要检查它的频率。我选择我的 soil_moisture 字段。

Check for soil moisture

我将检查配置为每 10 分钟运行一次。如果 soil_moisture 值低于 35,我将状态设置为 CRIT,如果 soil_moisture 水平高于 35,则将状态设置为 OK。

Configure the check

第二步是设置一个通知端点,以便在植物需要浇水时可以通知它。由于 Rick 已经配置了一个 HTTP 端点,我将只使用这一个,以便提醒他为我的植物浇水。 :-)

我选择 HTTP 作为端点,提供 URL,一切就绪。

Edit a Notification Endpoint

现在我有了检查和通知端点,我可以定义我的通知规则。我将规则设置为每 10 分钟检查一次状态,并在我的植物的 soil_moisture

水平为危急时通知 Rick。

为了测试一切是否正常运行,我写入了一些 soil_moisture 值较低的测试数据,我可以看到警报触发了。

Write test data

每当水平为危急时,都会向 Rick 的 HTTP 端点发送通知。

check statuses

我希望您发现这篇博客对您展示 InfluxData 平台的强大功能很有用。无论您选择使用 UI、CLI、API 或它们的任何组合,您都应该能够构建自己的应用程序来获取智能并对您的时间序列数据采取行动。