从 Arduino 写入数据到 InfluxDB v2

导航至

随着 InfluxData 越来越接近发布 v2.0 版本,能够将数据 导入 InfluxDB v2 显得越来越重要。这合乎逻辑,对吧?鉴于我的大部分数据(比如,几乎无法区分于 100%)都来自物联网设备,我认为现在是时候让这些设备具备 InfluxDB v2 的兼容性了。

我很高兴地说,这个方向的第一步现在已经完成了!我最喜欢的传感器是测量空气中 非常微小 的颗粒物(直径从 2.5µM 到 100µM)的颗粒物传感器。事实上,这种东西对你的健康非常有害。因此,了解空气中有多少这种物质是个好主意。为此,我从 Adafruit 订购了一个这样的传感器。

 

体积小巧,易于连接到各种设备,因为它仅通过UART输出数据。由于我手头有一大堆ESP8266板(我通常按打购买,因为它们又便宜又容易处理),我就把它连接到了其中一块。代码很简单,多亏了Adafruit提供的代码,还有一个用于写入数据的InfluxDB库,但它只支持InfluxDB v1.x。我首先做的事情(因为我当时很匆忙)是抓取1.x库,然后仅用不到半小时的时间重新编写它以支持2.x。这花了大约半小时,效果很好!(如果你想要这个版本,可以在这里找到)。但这并不是真正正确的解决方案。所以今天我回到原版仓库,并更新它以支持InfluxDB的1.x或2.x版本。我当然已经向原始库提交了一个正式的Pull Request,并希望它能很快被接受/合并。

现在我们来了解一下如何使用这个新库。它非常简单。至少对于Arduino,你只需添加库,然后在你的草图(sketch)中包含它。

#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版本!)安装中获得一些具体信息。值得注意的是,你需要获取与你的账户相关的组织buckettoken。你可以通过将你的网络浏览器指向InfluxDB服务器,端口9999,输入你的用户名和密码,然后转到配置页面来找到这些信息。

 

然后你可以将它们输入到Arduino草图(sketch)中

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);
}

看吧?我告诉过你,这很简单!