将数据从 Arduino 写入 InfluxDB v2

导航至

随着 InfluxData 越来越接近发布 v2.0,能够将数据写入 InfluxDB v2 当然变得越来越重要。 这很合理,对吧? 由于我的绝大多数数据(几乎 100%)来自物联网设备,因此我决定是时候开始使这些设备能够兼容 InfluxDB v2 了。

我很高兴地说,朝着这个方向迈出的第一步现已完成! 我最喜欢的传感器之一是颗粒物传感器,它可以测量空气中非常小的颗粒物含量(直径从 2.5 微米到 100 微米)。 事实证明,这东西对你非常非常有害。 所以知道空气中有多少是个好主意。 为此,我从 Adafruit 订购了其中一个传感器。

 

它体积小巧,易于连接到几乎任何东西,因为它只是通过 UART 输出数据。 因为我手头有一大堆 ESP8266 开发板(我通常一次订购几十个,因为它们非常便宜且易于处理),所以我将它连接到其中一个。 由于 Adafruit 提供了代码,因此代码很简单,并且有一个用于写入数据的 InfluxDB 库,但它仅支持 InfluxDB v1.x。 我做的第一件事(因为我很着急)是获取 1.x 库并将其重写为 2.x。 这花了我大约半小时或更短的时间,而且效果很好!(如果您愿意,可以在此处使用该版本)。 但这真的不是正确的解决方案。 所以今天我返回并创建了原始存储库的正确分支,并将其更新为支持 InfluxDB 的 1.x 或 2.x 版本。 我当然已经针对原始库提交了一个适当的拉取请求,并希望它能很快被接受/合并。

让我们来看看使用这个新库需要什么。 它真的非常简单。 至少对于 Arduino 来说,您所要做的就是添加库,然后将其包含在您的草图中

#include <InfluxDb.h>
//#include <InfluxDataV2.h> // if you want to use the other library I built and that's in my GitHub 
#define INFLUXDB_HOST "myhost.com"
Influxdb influx(INFLUXDB_HOST);

这就让您开始了。 接下来,您将需要从您的 InfluxDB v2.0(仍为 alpha 版!)安装中获取一些特定信息。 值得注意的是,您将需要与您的帐户关联的 organization、bucket 和 token。 您可以通过将 Web 浏览器指向您的 InfluxDB 服务器,端口 9999,输入您的用户名和密码,然后转到配置页面来找到这些信息。

 

然后您可以将它们输入到 Arduino 草图中

influx.setBucket("myBucket");
influx.setVersion(2);
influx.setOrg("myOrg");
influx.setPort(9999);
influx.setToken("myToken");

完成此操作后,在您的 setup() 函数中,您可以开始将数据写入您的 v2.0 Influx 服务器了!

void loop() {
    loopCount++;
    InfluxData row("temperature");row.addTag("device", "alpha");
    row.addTag("sensor", "one");
    row.addTag("mode", "pwm");
    row.addValue("loopCount", loopCount);
    row.addValue("value", random(10, 40));
    influx.write(row);delay(5000);
}

看到了吗? 我告诉过你这很简单!