Hur bäst logga delta-T i RRD?

RRDTool är en Linuxmjukvara som kan användas för att lagra data i Round-Robin Databaser för att sedan generera grafer utifrån den lagrade datan.

Moderator: elf98

Kategoriregler
Vill du visa bilder i ditt inlägg? Använd funktionen "Ladda upp bilaga" nedanför textrutan!
joblo
Gillar hemautomation
Inlägg: 44
Blev medlem: 30 jan 2014, 14:07
Ort: Sverige

Hur bäst logga delta-T i RRD?

Inlägg av joblo » 13 nov 2018, 15:52

Hej
Jag har satt upp c:a 15 tempgivare i mitt pannrum som loggar via en R-Pi3 B+, allt m.h.a. m.nu's wiki för OWFS och RRDTool.
So far soo good, allt funkar och jag loggar temp i separata rrd filer för varje givare.
Nu skulle jag även vilja få koll på hur mycket värmeeffekt huset slukar och vill få till en kurva som är differensen mellan fram/retur tempen till radiator systemet. Jag har googlat som en galning men inte blivit mycket klokare för det.
Ska man skapa en till rrd file för denna delta-T eller kan man beräkna och plotta grafer direkt utifrån de fram/retur tempsfiler som jag redan har???
Gärna om någon kan länka till exempel...

Användarvisningsbild
motoz
Tar hemautomation på allvar
Inlägg: 100
Blev medlem: 02 feb 2015, 15:05
Ort: ostrobothnia

Re: Hur bäst logga delta-T i RRD?

Inlägg av motoz » 01 dec 2018, 18:06

Om du skulle ha alla dina mätvärden i en och samma rrd fil så skulle du kunna låta rrdtool generera en differens mellan två mätvärden och rita en kurva av den. Rrdtool är ganska bra på att göra beräkningar, men den kan bara hantera en databas åt gången. Nu då du har lagt allt i separata databaser så kan inte rrdtool hjälpa dig. Enklast nu är nog att du räknar ut den siffra du vill ha samtidigt som du matar in de ursprungliga mätvärdena i dina rrd filer och lägger den i en ny rrd fil. Då kan rrdtool rita en graf från den på samma sätt som du gör nu med övriga mätdata.
Open source pellet logger: https://github.com/motoz/PellMon

joblo
Gillar hemautomation
Inlägg: 44
Blev medlem: 30 jan 2014, 14:07
Ort: Sverige

Re: Hur bäst logga delta-T i RRD?

Inlägg av joblo » 02 dec 2018, 20:50

Tack för det svaret, synd att man inte visste det tidigare. Jag ska nog skapa en rrd för alla data även om det är lite surt att förlora åratal av data. Jag har letat mig vansinnig efter något exempel på hur man plottar en differens mellan två kurvor, skulle vara väldigt tacksam för ett litet exempel...

Användarvisningsbild
motoz
Tar hemautomation på allvar
Inlägg: 100
Blev medlem: 02 feb 2015, 15:05
Ort: ostrobothnia

Re: Hur bäst logga delta-T i RRD?

Inlägg av motoz » 04 dec 2018, 08:51

Hmm, det var några år sen jag höll på med det här och nu då jag börjar fundera på det så har jag nog helt enkelt fel. 'rrdtool update' kan bara uppdatera en databas åt gången, men 'rrdtool graph' kan mycket väl hämta data från flera databaser (jag brukar alltid ha alla data i samma databas så det är väl därför jag fick för mig att det inte gick på annat sätt).

All dokumentation du behöver finns här:

https://oss.oetiker.ch/rrdtool/doc/rrdgraph.en.html
https://oss.oetiker.ch/rrdtool/doc/rrdg ... n.html#DEF

Och för att göra beräkningar med befintligt data
https://oss.oetiker.ch/rrdtool/doc/rrdg ... .html#CDEF

Utförlig dokumentation över rrdtool RPN, 'programmeringsspråket' som används för att göra beräkningar
https://oss.oetiker.ch/rrdtool/doc/rrdgraph_rpn.en.html

Men jag håller med om att det inte är speciellt lättfattlig dokumentation.

I korthet, om du har dessa två DEF med data från fil1.rrd och fil2.rrd:
DEF:temp1=fil1.rrd:temp:AVERAGE
DEF:temp2=fil2.rrd:temp:AVERAGE

så kan du definiera en CDEF med differensen mellan temp1 och temp2:
CDEF:diff_t1t2=temp1,temp2,-

(använder alltså RPN operatorn '-' i en CDEF för att skapa 'diff_t1t2' där varje datapunkt består av differensen mellan temp1 och temp2 vid samma tidpunkt)

Sedan plottar du diff_t1t2 på samma sätt som temp1 och temp2, alltihop ska med i samma 'rrdtool graph' kommando alltså. Hur du anropar 'rrdtool graph' med de här parametrarna beror på om du använder bash, perl, python eller nåt annat.

(ungefär, har inte testat, hoppas det kan vara till lite hjälp)
Open source pellet logger: https://github.com/motoz/PellMon

joblo
Gillar hemautomation
Inlägg: 44
Blev medlem: 30 jan 2014, 14:07
Ort: Sverige

Re: Hur bäst logga delta-T i RRD?

Inlägg av joblo » 05 dec 2018, 07:53

Underbart, detta kan vara till stor hjälp!
Tack så mycket :)

Sanedo
Wannabe
Inlägg: 10
Blev medlem: 24 nov 2008, 19:35
Ort: Alingsås

Re: Hur bäst logga delta-T i RRD?

Inlägg av Sanedo » 05 dec 2018, 19:13

Hej
Jag loggar alla mina temperaturer i pannrum och genererar även diff mellan ut/retur element. Det går bra att beräkna diff mellan 2 olika RRD-databaser.Hoppas detta kan hjälpa dig. Se kod nedan

Mvh Claes

#!/usr/bin/perl
use RRDs;
my $cur_time = time();
my $start_time = $cur_time - 7257600; # set end time to 24 hours ago
RRDs::graph "/var/www/graph_diff.png",
"--start= $start_time",
"--end= $cur_time",
"--title= Temperaturer graph",
"--height= 600",
"--width= 800",
#"--upper-limit= 10",
#"--lower-limit= 0",
"--vertical-label= C",
"DEF:OutsideTemp=/home/pi/rrddata/outside.rrd:outside:AVERAGE",
"DEF:OutTank=/home/pi/rrddata/out_tank.rrd:OutTankTemp:AVERAGE",
"DEF:ReturnTank=/home/pi/rrddata/return_tank.rrd:ReturnTankTemp:AVERAGE",
"CDEF:Diff=OutTank,ReturnTank,-",
"COMMENT:\t\t\t\t\tNu Medel Max Min\\n",
"HRULE:0#0000FF",
"AREA:Diff#0000FF:Diff\t\t\t\t",
"GPRINT:Diff:LAST:%6.1lf",
"GPRINT:Diff:AVERAGE:%6.1lf",
"GPRINT:Diff:MAX:%6.1lf",
"GPRINT:Diff:MIN:%6.1lf\\n",
"HRULE:0#FF0000",
"LINE2:OutsideTemp#FF0000:Ute\t\t\t\t",
"GPRINT:OutsideTemp:LAST:%6.1lf",
"GPRINT:OutsideTemp:AVERAGE:%6.1lf",
"GPRINT:OutsideTemp:MAX:%6.1lf",
"GPRINT:OutsideTemp:MIN:%6.1lf\\n";
my $err=RRDs::error;
if ($err) {print "problem generating the graph: $err\n";}

print "Done!\n"

Skriv svar