朋友们,我把我从MQTT得到的温度残留物保存了7天,通过Telegraf把它们存入我的RapsberyyPI InfluxDB上。当我可视化我的温度时,我看到的是,我得到的温度值在-200到+200之间,这似乎是随机的。所以大多数情况下,我确实得到了正确的值。我想知道是否有一种方法可以告诉telegraf只接受-30到+40之间的值,这样我就可以在将这些值插入到Influx DB之前过滤它们。有什么想法吗?数据的来源是运行在我的Rapsi上的aRTL_433嗅探器,并以JSON的形式发送它得到的任何东西。看起来数据并不总是像我所需要的那样准确。
发布于 2018-08-29 20:58:35
您可以尝试创建一个连续查询,该查询只接受您范围内的值。要做到这一点,您的数据库中需要有两个度量,我将它们称为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-30 20:52:26
使用kapacitor来解决这个问题。
首先,使用短保留策略创建一个数据库来存储原始数据。第二步,创建tick DSL脚本以获取所需内容,然后将其写回新数据库,如下所示
batch
|query('''
...
''')
.period(5m)
.every(5m)
.groupBy(time(1m))
|influxDBOut()
.database('some_database')
.retentionPolicy('autogen')
.measurement('some_measurement')https://stackoverflow.com/questions/52043315
复制相似问题