Hi Alex, ok, I did some more tests with artificial data. See script. testdata.sh <http://rrd-mailinglists.937164.n2.nabble.com/file/n7582385/testdata.sh>
Sorry for the confusion between heat_flag and pump_flag, both values follow the same concept (value 0 = off; value 1 = on; no other values allowed) and I want to calculate the total hours. I am not sure, if I should be more confused than before. First of all, thanks for the correct formula. If I use the CDEF:heattime2=heat_flag,24,* VDEF:totalheattime=heattime2,AVERAGE I get the desired value - most of the time. Then I played around with some scenarios: My timeframe is: -s 1408917600 -e 1409004000 Mon Aug 25 00:00:00 CEST 2014 Tue Aug 26 00:00:00 CEST 2014 I found out, that the very first value (1408917600) will NOT be taken into account for the calculation. This is probably by design. The very last value is taken into account (1409004000), this is also by design. My mistake was, that I did not always use a complete 24h timeframe for the graph creation. The other mistake was, that the calculation does not work, if you have missing values within the timeframe. For that reason, I substituted missing values with "0" using: CDEF:heattimeclean=heat_flag,UN,0,heat_flag,IF \ and then used the cleaned time series for the calculation. CDEF:heattime2=heattimeclean,24,* \ VDEF:totalheattimeclean=heattime2,AVERAGE \ Question (1): Unfortunately this introduces (rounding?) errors. In my artificial testdata I have 17 x "1" values for heat_flag; which corresponds to 4.25h of heattime. The totalheattime is calculated as "4.25" - perfect! But the totalheattimeclean is calculated as 4.21 - is this a rounding error? I do not understand this, because the heat_flag,UN,0,heat_flag,IF should not touch the original values, only unknowns. How do I avoid the rounding? Question (2) My other problem is: On my original "production" database, I have always the above described "rounding" error - but for both values! If I re-create the very same day in my artificial database, I get the rounding errors only for the cleaned values. We have 8.25h of heating time "Production" database: For this day (Aug. 21) with 8.25h heattime I get: totalheattimeclean = totalheattime = 8.16h "Artificial" database: For this day (Aug. 21) with 8.25h heattime I get: totalheattimeclean = 8.16; totalheattime = 8.25h I thought, well, I am comparing apples with oranges. I verified: - parameters are the identical (copy & paste any and all parameter into testdata script) - used same environment (e.g. export LANG=de_DE.UTF8) - used the same data I took the data from my "production" rrd database and wrote it with enclosed script into a new rrd database. I then did a fetch with rrdtool fetch /testtemp/temp_pool_debug.rrd -s 1408572000 -e 1408658400 AVERAGE on both databases and compared the resulting file - no difference except for the timestamp 1408659300, which is outside of the timeframe. Or is this the key? The resulting graphs from production and artificial database look completly identical - except for the calculated heattime. Do you have an explanation for that? --> Regards, Spock -- View this message in context: http://rrd-mailinglists.937164.n2.nabble.com/How-to-calculate-desired-value-tp7582375p7582385.html Sent from the RRDtool Users Mailinglist mailing list archive at Nabble.com. _______________________________________________ rrd-users mailing list [email protected] https://lists.oetiker.ch/cgi-bin/listinfo/rrd-users
