when multiple pulses per second are received for a single sensor, rrdtool will reject the new series of measurements: minimum one second step. introduce a fix in the Flukso daemon
This commit is contained in:
parent
25c49be892
commit
5f516e2fed
|
@ -79,12 +79,14 @@ function buffer(child, interval)
|
||||||
return coroutine.create(function(meter, timestamp, value)
|
return coroutine.create(function(meter, timestamp, value)
|
||||||
local measurements = data.new()
|
local measurements = data.new()
|
||||||
local threshold = os.time() + interval
|
local threshold = os.time() + interval
|
||||||
|
local old_timestamp = 0
|
||||||
|
|
||||||
while true do
|
while true do
|
||||||
if meter ~= nil and timestamp > 1234567890 then measurements:add(meter, timestamp, value) end
|
if meter ~= nil and timestamp > math.max(1234567890, old_timestamp) then measurements:add(meter, timestamp, value) end
|
||||||
if timestamp > threshold and next(measurements) then --checking whether table is not empty
|
if timestamp > threshold and next(measurements) then --checking whether table is not empty
|
||||||
coroutine.resume(child, measurements)
|
coroutine.resume(child, measurements)
|
||||||
threshold = timestamp + interval
|
threshold = timestamp + interval
|
||||||
|
old_timestamp = timestamp
|
||||||
end
|
end
|
||||||
meter, timestamp, value = coroutine.yield()
|
meter, timestamp, value = coroutine.yield()
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue