<div dir="auto">A far simpler solution is; it's just a counter that resets every hour.<div dir="auto"><br></div><div dir="auto">Provided you set sensible min and max rates, rrd will just see the hourly reset as a counter reset and record an UNKNOWN rate (NaN) for that 5min (since rrd cannot know how much rain fell between the reset and the sample taken before it). </div><div dir="auto"><br></div><div dir="auto">If you want to reduce or eliminate the NaNs you can sample at a faster rate (at least 2x faster) and set the xff on your rra's to a reasonable 0.5. This will "average out" the small unknown period using the known periods to give you a reasonably accurate estimated rate for the 5min period.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On 13 Jun. 2017 8:18 pm, "Alex van den Bogaerdt" <<a href="mailto:alex@vandenbogaerdt.nl">alex@vandenbogaerdt.nl</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">> So, I want to use rrdtool to manage my weather station data. I read data<br>
> in 5 minute intervals, but my station only tells me the rain counter for<br>
> the last hour. So the number I get is a summation of my rain counter<br>
> deltas for the last 12 intervals.<br>
><br>
> For instance, suppose in the last 5 hours I get the values the first line<br>
> below (one char for each 5-min interval), it means that, for every 5<br>
> minutes, actual rainfall has been as in the second line.<br>
><br>
> 011111244445678888889998767777<wbr>765555553444335888889899987677<br>
> 010000120001121000121000012000<wbr>110000010100012300011010001210<br>
><br>
> Is there a way to specify that the values to store in the RRD would be<br>
> calculated as:<br>
><br>
> stored[now] = input[now] - input[now - 1] + stored[now - 12]<br>
<br>
This is not a complete answer but hopefully it helps you to tackle this<br>
problem.<br>
<br>
Short answer: no, unless something can be done with the COMPUTE DS type,<br>
which I do not know enough.<br>
<br>
RRDtool does not work with values. It works with rates. After processing<br>
its input, the resulting rate may be further processed. The original input<br>
is not kept.<br>
<br>
This said: your 'values' are actually rates: rainfall in the past hour. It<br>
probably means you will have to use the GAUGE data source type. And then<br>
your 'values' are in the database, as rates.<br>
Make sure you understand rates are <something> per second. Just multiply<br>
by 3600 if your rates are per hour.<br>
<br>
Before anything else:<br>
You will probably end up in some trial and error. It would be of a very<br>
big help both to you and to the members of this list to have actual values<br>
being given to rrdtool, the time that these happened, so that you can<br>
recreate the same conditions.<br>
This also means you will have to use real time stamps, not 'now'.<br>
<br>
To make things easier, it would be a very good idea to query your weather<br>
station not just every 5 minutes, but more precise at time stamps which<br>
are whole multiples of 300 seconds.  Thus: 12:05, 12:10, 12:15 and not<br>
12:07, 12:12, 12:17. Again this means using real time stamps, not 'now'.<br>
Read about normalization and consolidation:<br>
<a href="http://rrdtool.vandenbogaerdt.nl/process.php" rel="noreferrer" target="_blank">http://rrdtool.vandenbogaerdt.<wbr>nl/process.php</a> to understand why this helps.<br>
<br>
Your graphs should also start and end on nice numbers. That means you will<br>
have a known number of intervals in your graph. Beware: there have been,<br>
are, and probably will be off-by-one errors. Sometimes they are fixed,<br>
sometimes they pop up again. While debugging your solution always keep<br>
this in mind and modify your times accordingly.<br>
One example: start of graph is 12:00, end of graph is 13:00, number of<br>
5-minute intervals should be 12, but actually was 13 because the interval<br>
13:00 to 13:05 was also included. Another time with the same start and end<br>
times the last interval, 12:55 to 13:00, was not included and I ended up<br>
with only 11 intervals.<br>
<br>
<a href="https://en.wikipedia.org/wiki/Off-by-one_error#Fencepost_error" rel="noreferrer" target="_blank">https://en.wikipedia.org/wiki/<wbr>Off-by-one_error#Fencepost_<wbr>error</a><br>
<br>
You may need to change your start, or end time for the graph to compensate<br>
for this.<br>
<br>
<br>
Some ideas to investigate:<br>
<br>
* just write a program (C, bash, perl, whatever suits you) that does the<br>
processing as you described above. Feed the result to RRDtool.<br>
* use CDEFs with some PREVs and see where that leads you<br>
* what happens if you just record the data as is, and look at long term<br>
stats, e.g. one hour per pixel column, after RRDtool has averaged 12<br>
5-minute rates into 1 1-hour rate. You can have more than one RRA in your<br>
database. Define an RRA which collects 12 5-minute intervals per bucket,<br>
consolidation function AVERAGE.<br>
<br>
Some random tips I can think of right now:<br>
<br>
* start with an empty database and fill the first 12 time slots with zero.<br>
This helps when using PREV.<br>
You can do so by specifying a start time at least one hour before your<br>
first entry. Then feed rate 0 to RRDtool. Either set heartbeat high enough<br>
to allow you to do this with a single update rate 0, or actually to 12<br>
updates 5 minutes apart.<br>
<br>
* keep it simple. Your task is hard enough without all those extra<br>
features. Add those later when so desired. Focus now on getting the<br>
numbers right.<br>
<br>
* make your graphs big. E.g. 400 pixels, showing just 40 slots of 5<br>
minutes worth of data (--width 400 --end <some timestamp> --start<br>
end-12000). Are the rates the same as you put in? If not, investigate.<br>
Logic error, or fencepost problem?<br>
<br>
* In your first few tries, send a rate, dump the database, make sure that<br>
the resulting rate is what you expect. Unless you find a bug (which I<br>
doubt, at this point for this part in the process) there is an error in<br>
your reasoning.<br>
<br>
* make sure to use <a href="http://oss.oetiker.ch/rrdtool/doc/index.en.html" rel="noreferrer" target="_blank">http://oss.oetiker.ch/rrdtool/<wbr>doc/index.en.html</a> and so on.<br>
<br>
* keep discussions/questions on-list.<br>
<br>
HTH<br>
Alex<br>
<br>
<br>
______________________________<wbr>_________________<br>
rrd-users mailing list<br>
<a href="mailto:rrd-users@lists.oetiker.ch">rrd-users@lists.oetiker.ch</a><br>
<a href="https://lists.oetiker.ch/cgi-bin/listinfo/rrd-users" rel="noreferrer" target="_blank">https://lists.oetiker.ch/cgi-<wbr>bin/listinfo/rrd-users</a><br>
<br>
</blockquote></div></div>