从 Swift 发布数据到 InfluxDB

导航至

我一直非常忙碌。就在几天前,我写了一篇关于新的 InfluxDB 库的文章,该库用于将数据从 Arduino 设备写入 InfluxDB v2,而现在我再次写关于一个新的库,用于将数据写入 InfluxDB。这次是用 Swift 编写的。现在,您的原生 Apple 应用程序可以轻松地将数据直接写入 InfluxDB v2.0。

这是一个非常简单的库,您可以从我的 GitHub 下载整个 Xcode 项目。您可以使用它将单个数据点写入数据库,或者进行任意大小的批量写入。这是一个关于如何使用它的快速教程。

let influxdb = InfluxData()

这将为您获取一个 InfluxData 类的实例。获得该实例后,您需要为其设置一些配置参数。

influxdb.setConfig(server: "serverName", port: 9999, org: "myOrganization", bucket: "myBucket", token: "myToken")

当然,您需要根据您的 InfluxDB v2.0 服务器的设置来设置所有这些值。您还可以使用以下命令设置时间精度

let myPrecision = DataPrecision.ms // for Milliseconds, 'us' for microseconds, and 's' for seconds
influxdb.setPrecision(precision: myPrecision)

此时,您已准备好开始收集数据并将其发送到 InfluxDB v2.0!对于您收集并想要存储的每个数据点,您将创建一个新的 Influx 对象来保存标签和数据。

let point: Influx = Influx(measurement: "myMeasurement")
point.addTag(name: "location", value: "home")
point.addTag(name: "server", value: "home-server")
if !point.addValue(name: "value", value: 100.01) {
    print("Unknown value type!\n)
}
if !point.addValue(name: "value", value: 55) {
    print("Unknown value type!\n)
}
if !point.addValue(name: "value", value: true) {
    print("Unknown value type!\n)
}
if !point.addValue(name: "value", value: "String Value" {
    print("Unknown value type!\n)
}

如您所见,它接受整数、浮点值、布尔值和字符串。如果它无法确定数据类型,它将返回布尔值 false,因此始终检查返回值是一个好主意。

为了获得最佳性能,我们建议将数据批量写入 InfluxDB,因此您需要准备要放入批处理中的数据。这可以通过调用以下命令轻松完成

influxdb.prepare(point: point)

当需要写入批处理时,只需调用

if influxdb.writeBatch() {
    print("Batch written successfully!\n)
}

同样,writeBatch() 在成功或失败时返回一个布尔值,因此检查这些值是一个好主意。

如果您想在每个数据点传入时立即写入,只需获取您上面创建的数据点并调用

influxdb.writeSingle(dataPoint: point)

您可以同时将数据写入多个测量,因为每个数据点都使用其测量进行初始化,并且您可以根据需要添加任意数量的标签和字段。

这实际上是 InfluxDB v2.0 Swift 库的第一个版本,因为我将在未来为该库添加查询、创建存储桶以及 Flux 语言 的许多其他功能,但由于大多数人最想立即做的是将数据写入数据库,因此我想我应该先发布这个。

我希望这对您有所帮助!我知道这对我有帮助!您看,我最近一直在使用我的 Mac 笔记本电脑从我构建的蓝牙 CO2 传感器中获取数据。为了做到这一点,我构建了一个小型 BLE 应用程序,该应用程序连接到传感器,订阅数据 ID,并不断将数据写入 InfluxDB。不用说,我使用了这个库,并且一直很高兴地抓取和存储这些数据。

我很想听听您计划如何使用 2.0 的 Swift 库,所以请务必在 Twitter 上 关注我,并告诉我您在做什么!