Sida 1 av 1
Skriv RRD-data till textfil
Postat: 27 maj 2015, 08:52
av Mossfeldt
Är det möjligt att skriva ut RRD-data till en textfil?
Jag skulle vilja ha ut föregående och nuvarande veckas elanvändning i x.xx kWh för att sedan visa detta på min hemsida.
Elanvändningen loggar jag enligt Wikin.
Johan
Re: Skriv RRD-data till textfil
Postat: 27 maj 2015, 10:30
av motoz
Allt är möjligt!
Utan att veta exakt hur ditt skript ser ut, så principen är:
Ta bort alla 'AREA' och 'LINE' från från 'rrdtool graph' kommandoraden och byt ut GPRINT till PRINT, så skrivs data endast ut till skärmen i stället för att skrivas in i bildfilen. Lägg sedan till
i slutet så skrivs data till filen data.txt istället för att hamna på skärmen.
Vill du också ha kurvdata och inte bara data från GPRINT till filen så använder du rrdtool xport istället för rrdtool graph, så får du allt i xml (eller json) format, se
http://oss.oetiker.ch/rrdtool/doc/rrdxport.en.html
Re: Skriv RRD-data till textfil
Postat: 27 maj 2015, 11:40
av Mossfeldt
Tackar!
Det hjälpte mig halvvägs. Jag får ut den data jag vill men i textfilen skrivs även upplösningen på grafen ut. Vet om det finns en parameter i RRDTool för att inte skriva ut upplösningen? Har sökt men utan resultat.
Kod: Markera allt
PRINT:W:LAST:"%0.2lf%sW" \
> /mnt/web/txt/energinu.txt \
Re: Skriv RRD-data till textfil
Postat: 27 maj 2015, 13:23
av motoz
Det finns säkert hur många sätt som helst att skippa första raden från utskriften från rrdtool, men ett sätt är 'tail' med parametern '-n +2'
från 'man tail':
-n, --lines=K
output the last K lines, instead of the last 10; or use -n +K to
output lines starting with the Kth
testade med:
Kod: Markera allt
rrdtool graph test.png \
--start -24h --end now \
DEF:e=rrd.db:outside_temp:AVERAGE PRINT:e:AVERAGE:"tempertur\: %0.2lf%sW"|tail -n +2>test.txt
verkar fungera...
Tydligen måste man ge ett filnamn (test.png) trots att man inte vill ha någon bildfil...
Re: Skriv RRD-data till textfil
Postat: 27 maj 2015, 13:36
av Mossfeldt
Tusen tack för hjälpen motoz!
Jag ändrade helt enkelt koden till
Kod: Markera allt
PRINT:W:LAST:"%0.2lf%sW"|tail -n +2>/mnt/web/txt/energinu.txt \
Kanske är en omväg att köra PRINT till skärmen och sedan till .txt via tail men det funkar.
Nu kan jag äntligen fortsätta med min websida.
Re: Skriv RRD-data till textfil
Postat: 27 maj 2015, 13:49
av motoz
Nja, det far ju inte via skärmen utan till STDOUT, som normalt hamnar på skärmen, men via en pipe '|' så riktar du om STDOUT till nästa kommando 'tail' istället som gör sin grej och sedan skickar du output därifrån vidare till filen med '>'. Kort och gott så som UNIX är tänkt att fungera!
Re: Skriv RRD-data till textfil
Postat: 27 maj 2015, 14:49
av Mossfeldt
Lät inte riktigt som jag menade i tidigare inlägg.
Måste be om mer hjälp då jag inte får detta att fungera med flera värden.
Jag har tre värden jag vill skriva till tre separata filer /tot el, hh el och llvp el)
Kör tre PRINT och det funkar
Kod: Markera allt
PRINT:W:LAST:"%0.2lf%sW" \
PRINT:X:LAST:"%0.2lf%sW" \
PRINT:Y:LAST:"%0.2lf%sW" \
Vet inte riktigt hur jag ska bära mig för att köra pipe och få ut alla tre värdena.
Lägger jag en |tail på första raden så får jag felmeddelande att
Kod: Markera allt
tail: cannot open `PRINT:X:LAST:%0.2lf%sW' for reading: No such file or directory
tail: cannot open `PRINT:Y:LAST:%0.2lf%sW' for reading: No such file or director
Re: Skriv RRD-data till textfil
Postat: 27 maj 2015, 15:23
av motoz
För att få data till tre filer så kan du anropa "rrdtool graph" tre gånger med olika PRINT och en >filX.txt på slutet av varje.
Eller så kör du rrdtool graph en gång med alla PRINT till en och samma fil, och sedan efteråt kan du dela upp filen till tre nya filer, tex med 'sed'.
Så här kan du skippa 'tail' också, om fil.txt innehåller fyra rader, så hamnar rad 2 i fil1.txt, rad3 i fil2.txt osv
Kod: Markera allt
cat fil.txt|sed '2!d'>fil1.txt
cat fil.txt|sed '3!d'>fil2.txt
cat fil.txt|sed '4!d'>fil3.txt
Re: Skriv RRD-data till textfil
Postat: 29 maj 2015, 13:16
av motoz
Om det fortfarande var oklart så posta gärna hela skriptet så är det lättare att ge precisa råd.
Re: Skriv RRD-data till textfil
Postat: 12 maj 2016, 19:17
av aminders
Hej!
Har liknande problem med att få ut sista värdet ur en rrd-fil.
Kör med Raspberry Pi, 1wire och rrdtool och får ut fina grafer.
Graferna skriptas med perl:
#!/usr/bin/perl
use RRDs;
my $cur_time = time();
my $start_time = $cur_time - 21600; # set end time to 24 hours ago
RRDs::graph "/mnt/www/graph_utetemp_6h.png",
"--start= $start_time",
"--end= $cur_time",
"--title= xxx - ute - senaste 6 timmarna",
"--watermark=xxx",
"--height= 150",
"--width= 800",
"--vertical-label= °C",
"--alt-autoscale",
"--alt-y-grid",
"--slope-mode",
"DEF:UteTemp=/mnt/rrddata/Ute_Temp.rrd:UteTemp:AVERAGE",
"DEF:UteTempmax=/mnt/rrddata/Ute_Temp.rrd:UteTemp:MAX",
"COMMENT:\t\tNu Medel Max Min\\n",
"HRULE:0#0000FF",
"LINE1:UteTemp#00F:Ute\t",
# "AREA:UteTemp#EEE",
"GPRINT:UteTemp:LAST:%6.1lf",
"GPRINT:UteTemp:AVERAGE:%6.1lf",
"GPRINT:UteTemp:MAX:%6.1lf",
"GPRINT:UteTemp:MIN:%6.1lf\\n";
my $err=RRDs::error;
if ($err) {print "problem generating the graph: $err\n";}
print "Done!\n"
Hur skriptar jag för att få ut en textfil med sista avlästa värdet?
Jag har letat som besatt!
Tror att rrdlastupdate skulle fixa det men fattar inte hur.
Snälla någon hjälp.
Mvh
Anders
Re: Skriv RRD-data till textfil
Postat: 13 maj 2016, 07:19
av motoz
gör mycket riktigt det du vill. Men nu använder du alltså perl bindningarna till rrdlib istället för att använda rrdtool kommandot direkt. Enligt
https://oss.oetiker.ch/rrdtool/prog/RRDs.en.html så ser ut som att det inte finns nån perl bindning för 'lastupdate'.
Men du kan ju anropa rrdtool lastupdate från perlskriptet, se tex
http://stackoverflow.com/questions/3200 ... erl-script
Rrdtool lastupdate dokumentation:
http://oss.oetiker.ch/rrdtool/doc/rrdlastupdate.en.html
Re: Skriv RRD-data till textfil
Postat: 17 maj 2016, 08:02
av aminders
Tack för svaret!
Jag hittade en annan lösning. Plockade sista värdet direkt ur 1wire. Sitter på jobbet så jag har inte bash-scriptet aktuellt i skallen.
Allt för att visa aktuella temperaturer i huset. Ex från övervåningen och ute.

- hustemp.png (261.11 KiB) Visad 14364 gånger
Mvh
Anders