伙计们, 我将通过Telegraf通过MQTT获得的温度信息存储到RapsberyyPI InfluxDB上的信息中,存储了7天。可视化温度时看到的结果是,我得到的温度值介于-200到+200之间,这似乎是随机的。因此,大多数时候我都能得到正确的价值。只是想知道是否有一种方法可以告诉telegraf只接受介于-30和+40之间的值,以便在将它们插入到Influx DB中之前可以过滤这些值。有任何想法吗? 数据的来源是c 从在我的Rapsi上运行的aRTL_433嗅探器中删除,并以JSON格式发送。看起来数据并不总是像我需要的那样准确。
答案 0 :(得分: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,这使得进行数据操作非常容易。
答案 1 :(得分:0)
使用kapacitor解决此问题。
首先创建一个具有短保留策略的数据库来存储原始数据。 第二步,创建 tick DSL脚本以获取所需内容,然后将其写回到新数据库中,例如
batch
|query('''
...
''')
.period(5m)
.every(5m)
.groupBy(time(1m))
|influxDBOut()
.database('some_database')
.retentionPolicy('autogen')
.measurement('some_measurement')