influxdb:计算布尔事件的持续时间?

lar*_*sks 7 influxdb

我有来自门传感器的 influxdb 数据库中的数据。这是一个布尔传感器(门打开(值为false)或关闭(值为true)),表格如下所示:

name: door
--------------
time            value
1506026143659488953 true
1506026183699139512 false
1506026751433484237 true
1506026761473122666 false
1506043848850764808 true
1506043887602743375 false
Run Code Online (Sandbox Code Playgroud)

我想计算在给定的时间内门打开的时间。在已播放功能让我接近,但我不知道如何可以(一)限制它,只有那些间隔将初使值false,或(b)从类似的输出确定“开放”的时间间隔select elapsed(value, 1s) from door

我希望我能做这样的事情:

select elapsed(value, 1s), first(value) from door
Run Code Online (Sandbox Code Playgroud)

但这并没有让我得到任何有用的东西:

name: door
--------------
time            elapsed first
0               true
1506026183699139512 40  
1506026751433484237 567 
1506026761473122666 10  
1506043848850764808 17087   
1506043887602743375 38  
Run Code Online (Sandbox Code Playgroud)

我希望有更多类似的东西:

name: door
--------------
time            elapsed first
1506026183699139512 40  true
1506026751433484237 567 false
1506026761473122666 10  true
1506043848850764808 17087   false
1506043887602743375 38  true
Run Code Online (Sandbox Code Playgroud)

没有自己提取数据并在例如 python 中处理它,有没有办法通过 influxdb 查询来做到这一点?

小智 0

我也遇到了这个问题,我想对标志打开的时间持续时间进行求和,这在时间序列库的信号处理中很常见,但 influxdb 似乎并不能很好地支持这一点。我尝试使用值为 1 的标志进行 INTEGRATE,但它似乎没有给我正确的值。最后,我只计算数据源中的间隔,将它们作为单独的字段发布到 influxdb 中并对它们进行求和。这样效果会好得多。