伙计们,我将通过 Telegraf 通过 MQTT 获得的温度信息存储 7 天,并将其存储到我的 RapsberyyPI InfluxDB 上的信息中。当我想象我的温度时,我看到的温度值在 -200 到 +200 之间,这似乎是随机的。所以大多数时候我确实得到了正确的价值。只是想知道是否有办法告诉 Telegraf 只接受 -30 和 +40 之间的值,这样我就可以在将这些值插入到我的 Influx DB 之前过滤这些值。有任何想法吗?数据源来自在我的 Rapsi 上运行的 RTL_433 嗅探器,并将它得到的任何内容作为 JSON 发送。看起来这些数据并不总是像我需要的那样准确。
问问题
304 次
2 回答
2
您可以尝试创建一个只接受您范围内的值的连续查询。为此,您需要在数据库中有两个测量值,我将它们称为 raw_temp 和 temp。也许是这样的:
CREATE CONTINUOUS QUERY "temp_filter" ON "my_db"
RESAMPLE EVERY 30s FOR 30s
BEGIN
SELECT "temperature" INTO "temp" from "raw_temp" where "temperature" > -40 and
"temperature" < 40 GROUP BY *
END
然后创建一个连续查询,删除 raw_temp 中超过一小时的任何内容。或者你可以安装 Kapacitor,它可以很容易地进行数据操作。
于 2018-08-29T12:58:34.763 回答
1
使用 kapacitor 来解决这个问题。
首先创建一个具有短期保留策略的数据库来存储原始数据。第二步,创建tick DSL脚本以获取您想要的内容,然后将其写回新数据库,例如
batch
|query('''
...
''')
.period(5m)
.every(5m)
.groupBy(time(1m))
|influxDBOut()
.database('some_database')
.retentionPolicy('autogen')
.measurement('some_measurement')
于 2018-08-30T12:52:26.237 回答