植物伙伴第 4 部分:使用 UI

导航到

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

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

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

非常感谢 Rick Spencer 为构建一个管理他的成长花园(以及监视我的植物)的非常酷的物联网应用程序所做的努力。

InfluxDB Cloud 的物联网应用程序开发入门

Rick 已经创建了一个 InfluxDB Cloud 账户,所以我请他邀请我加入他的账户,这样我们就可以使用相同的数据。一旦我接受了邀请,我就可以开始设置了,并且能够登录他的账户。由于我需要为每个我想访问的 InfluxDB Cloud 账户使用不同的电子邮件地址,我在这篇示例中使用[email protected]

Organization tab

我需要一个令牌才能将我的数据写入这个账户。Rick 已经有了令牌,但因为我需要专用的令牌,所以我也需要一个新的。Rick 创建了一个名为 plantbuddy 的存储桶,所以我要一个读写令牌才能将我的数据写入他的存储桶。就像 Rick 所做的那样,我在界面中导航到 数据 -> 令牌 来生成我的令牌。

点击 生成令牌,为 plantbuddy 存储桶选择 读写令牌,并给它命名为 plantbuddy 读写令牌

Load Data

上传一些行协议

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

行协议格式有很好的文档。以下是我数据的示例

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

我使用 Python 脚本的 write 端点来写入我的数据。我也可以通过界面上传我的数据,但鉴于我使用 Python 脚本来生成测试数据,直接调用 write 端点同样简单,而不是将数据写入文件然后通过界面上传文件。

没有报告错误,所以看起来它已经成功了,所以我运行了一个查询来确认。

运行查询

数据探索器让我可以轻松确认我的数据在 plantbuddy 存储桶中。

Data Explorer

或者,我可以在笔记本界面的指标选择器中查看存储桶中的指标。我确认了我的数据在那里,准备好被分析和执行。

Barbara's data

下采样

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

Querying the downsampled bucket

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

创建下采样任务

一旦我确认下采样已经正确工作,我将我的笔记本注册为任务,每 15 分钟运行一次,通过添加 schedule 面板并配置它每 15 分钟运行一次。我还将范围更改为只查看最后 15 分钟的数据,这样就不会对数据进行多次下采样。

Create a downsampling task

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

Export as task tab

并且我可以看到它运行成功,以及一些其他有用的信息,比如Flux实际上运行了什么。

Downsample Barbaras data - runs

通知

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

阈值检查

我进入UI中的警报选项来设置我的检查。它分为三个部分

  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还是它们的任何组合,你应该能够构建自己的应用程序来获取智能并对你的时间序列数据进行操作。