从Swift向InfluxDB发布数据
作者:David G. Simmons / 产品,用例,开发者
2019年3月28日
导航到
我非常忙碌。就在几天前,我刚刚写了关于一个用于从Arduino设备向InfluxDB v2写入数据的InfluxDB新库的文章,现在我又在这里,写关于一个新库的文章,这次是用于向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。不用说,我使用了这个库,并且一直在愉快地收集和存储这些数据。
我很想听听你打算如何使用 Swift 库的 2.0 版本,所以请务必在推特上关注我 [Follow me] 并告诉我你在做什么!