|
|
(16 mellanliggande versioner av 4 användare visas inte) |
Rad 1: |
Rad 1: |
− | {| align="right"
| + | Denna sida har flyttat till [http://wiki.m.nu/index.php/RRDTool_Howto http://wiki.m.nu/index.php/RRDTool_Howto] |
− | | __TOC__
| |
− | |}
| |
− | ==Bakgrund==
| |
− | Detta är en fortsättning på [url=http://www.temperatur.nu/forum/viewtopic.php?f=20&t=608]HOWTO: Installera OWFS 2.7p10 på Ubuntu server 8.10[/url] skulle man kunna säga och syftet är att kunna göra sin första graf över temperaturen. Detta är inte så knepigt, eller i alla fall inte lika knepigt som att få igång OWFS! Dock är inte RRDtool helt solklart direkt från början, det skiljer sig lite från en traditionell databas. Antingen så gör ni guiden uppifrån och ned utan att ställa frågor :wink: , eller så börjar ni med att läsa på lite om RRDtool från början, se [b]Läs vidare[/b] nedan.
| |
− | | |
− | ==Mål==
| |
− | Få igång vår första loggning av temperatur och spara det till en RRD databas, samt att rita en enkel graf med hjälp av RRDtool
| |
− | | |
− | ==Programvaror==
| |
− | [url=http://oss.oetiker.ch/rrdtool/]RRDtool[/url]
| |
− | [url=http://www.owfs.org/]OWFS[/url] | |
− | | |
− | ==Beskrivning==
| |
− | Jag förut sätter att du har OWFS igång redan (eller annan programvara), för att kunna läsa av ditt 1-wire nätverk. Om du inte har det så läs [url=http://www.temperatur.nu/forum/viewtopic.php?f=20&t=608]HOWTO: Installera OWFS 2.7p10 på Ubuntu server 8.10[/url] först. Den här är gjord på Ubuntu, men som vanligt så bör det funka även på andra distributioner.
| |
− | | |
− | Till att börja med så måste vi installera RRDtool, och även stöd för Perl.
| |
− | [code]sudo apt-get install rrdtool perl librrdp-perl librrds-perl[/code]Bör inte vara några konstigheter
| |
− | | |
− | Sen för att visa själva grafen så behövs även Apache2 installerat. Om ni inte redan har den igång installera den då
| |
− | [code]sudo apt-get install apache2[/code]
| |
− | | |
− | Sen vill vi skapa katalogerna där vi tänkt spara rrddata'n och script katalogen.
| |
− | [code]sudo mkdir ~/bin
| |
− | sudo mkdir ~/rrddata[/code][i]Jag har valt att lägga skripten i [b]/home/anders/bin/[/b] och rrd-filer (databaser) i [b]/home/anders/rrddata/[/b]. Ni skall givetvis skriva ert användarnamn istället för [b]anders[/b]. Alternativt om ni väljer att spara skripten/filerna någon annanstans så får ni anpassa de sökvägar som berörs nedan.[/i]
| |
− | | |
− | Sen skall vi skapa vår första rrd databas. Antingen så kan man skriva allt direkt i prompten, men jag tycker det är lättare att skapa ett enkelt shell script för att då har man kvar vad man gjort! :wink: Vissa kanske tycker att det är en om väg, men i slutändan lönar det sig, i alla fall i utbildningssyfte.
| |
− | [code]cd /home/anders/rrddata/
| |
− | sudo nano create_rrd.sh[/code]
| |
− | Lägg till följande...
| |
− | [code]#!/bin/bash
| |
− | # Script to create rrd-file
| |
− | | |
− | # 24h with 2,5 min resolution
| |
− | # 7d with 5 min resolution
| |
− | # 1y with 10 min resolution
| |
− | # 20y with 1h resolution
| |
− | | |
− | directory="/home/anders/rrddata/"
| |
− | filename="outside_temp.rrd"
| |
− | | |
− | # Check i file already exists
| |
− | if [ ! -f "$directory$filename" ]
| |
− | then
| |
− | # File doesn't exist, create new rrd-file
| |
− | echo "Creating RRDtool DB for outside temp sensor"
| |
− | rrdtool create $directory$filename \
| |
− | --step 150 \
| |
− | DS:outsidetemp:GAUGE:300:-50:60 \
| |
− | RRA:AVERAGE:0.5:1:5760 \
| |
− | RRA:AVERAGE:0.5:2:2016 \
| |
− | RRA:AVERAGE:0.5:4:52560 \
| |
− | RRA:AVERAGE:0.5:24:175200 \
| |
− | RRA:MAX:0.5:1:5760 \
| |
− | RRA:MAX:0.5:2:2016 \
| |
− | RRA:MAX:0.5:4:52560 \
| |
− | RRA:MAX:0.5:24:175200 \
| |
− | RRA:MIN:0.5:1:5760 \
| |
− | RRA:MIN:0.5:2:2016 \
| |
− | RRA:MIN:0.5:4:52560 \
| |
− | RRA:MIN:0.5:24:175200
| |
− | echo "Done!"
| |
− | else
| |
− | echo $directory$filename" already exists, delete it first."
| |
− | fi
| |
− | [/code]...och spara sen. (i [b]nano[/b], CTRL-X) Tidsrymden och upplösningen på den sparade datan kanske är i överkant, men det kan ni ändra sen om ni vill. :wink:
| |
− | | |
− | Ändra så att vi får kör rättigheter på scriptet.
| |
− | [code]sudo chmod +x create_rrd.sh[/code]
| |
− | | |
− | Kör scriptet
| |
− | [code]create_rrd.sh[/code]och förhoppningsvis så skall det ha skapats en outside_temp.rrd fil.
| |
− | | |
− | Nu har vi själva filen för att spara information i. Nu skall vi skapa script som loggar temperaturen.
| |
− | [code]cd /home/anders/bin
| |
− | sudo nano get_temp.sh[/code]Lägg till följande
| |
− | [code]
| |
− | #!/bin/bash
| |
− | | |
− | OutsideTempSensor="10.51777C010800"
| |
− | RRDDataDirectory="/home/anders/rrddata/"
| |
− | RRDDataFile="outside_temp.rrd"
| |
− | | |
− | # Get temps form OWFS
| |
− | OutsideTemp=`cat /mnt/1wire/$OutsideTempSensor/temperature|sed -e s/" "//g|awk '{$1=$1 + 0.005;printf "%.2f", $1}'`
| |
− | | |
− | #Update RRD database
| |
− | rrdtool update $RRDDataDirectory$RRDDataFile N:$OutsideTemp
| |
− | echo $OutsideTemp
| |
− | [/code] och spara.
| |
− | | |
− | Ändra så att vi får kör rättigheter på scriptet.
| |
− | [code]sudo chmod +x get_temp.sh[/code]
| |
− | | |
− | Nu har vi en rrd fil som sparar information, vi har ett script som hämtar information och uppdaterar rrd filen, återstår gör biten med att rita en graf. Så nu fixar vi det! Detta görs med ett Perl script.
| |
− | [code]sudo nano graph_temp.pl[/code] lägg till följande
| |
− | [code]#!/usr/bin/perl
| |
− | | |
− | use RRDs;
| |
− | | |
− | my $cur_time = time();
| |
− | my $start_time = $cur_time - 86400; # set end time to 24 hours ago
| |
− |
| |
− | RRDs::graph "/var/www/graph_temp.png",
| |
− | "--start= $start_time",
| |
− | "--end= $cur_time",
| |
− | "--title= Temp ute",
| |
− | "--height= 300",
| |
− | "--width= 500",
| |
− | "--vertical-label= °C",
| |
− | "DEF:OutsideTemp=/home/anders/rrddata/outside_temp.rrd:outsidetemp:AVERAGE",
| |
− | "COMMENT:\t\t\t\tNu Medel Max Min\\n",
| |
− | "HRULE:0#0000FF",
| |
− | "LINE2:OutsideTemp#0000FF:Ute\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"[/code]Det här läser från vår rrd fil och skapar en graf med senaste 24h i /var/www/
| |
− | | |
− | För att det här skall "gå av sig själv" så måste vi lägga till två jobb i crontab för att det skall funka. Öppna crontab för redigering
| |
− | [code]sudo crontab -e[/code]
| |
− | lägg till
| |
− | [code]*/2.5 * * * * /home/anders/bin/get_temp.sh
| |
− | */2.5 * * * * export LANG=sv_SE.utf8 && /home/anders/bin/graph_temp.pl[/code]och spara.
| |
− | | |
− | Om nu allt funkar som det skall så loggas temperatur och det skapas en ny graf var 5:e minut. För att se grafen gå till http://localhost/graph_temp.png eller http://mindoman/graph_temp.png
| |
− | | |
− | ==Läs vidare==
| |
− | Som jag skrev ovan så är det inte självklart hur RRDtool funkar, i alla fall tycker inte jag det. Så tipset för att komma vidare är att läsa på deras hemsida, och speciellt deras [url=http://oss.oetiker.ch/rrdtool/tut/rrdtutorial.en.html]rrdtutorial[/url]. Läser ni den och gör exemplen så har ni kommit en bra bit på vägen. Sen är det bara att ändra/lägga_till/testa i era script för att se vad som händer :wink: . Mer info exakt vad dom olika delarna i skapandet av rrd databasen och graferna betyder läser ni om i [url=http://oss.oetiker.ch/rrdtool/doc/index.en.html]RRDtools dokumentation[/url].
| |
− | Om ni vill gå vidare och logga er elförbrukning sen så kan jag rekommendera Eriks guide [url=http://www.temperatur.nu/forum/viewtopic.php?f=20&t=287]Mäta elförbrukning via 1wire och rrdtool[/url].
| |
− | | |
− | | |
− | | |
− | Det här är ETT sätt att få ingång loggning, det går att göra på hur många olika sätt som helst. Kanske inte är det enklaste eller bästa sättet som jag beskrivit men det bör fungera och hjälpa er att komma igång. Som alltid när jag skriver så kan finnas felaktigheter :shock: . Hittar ni några så skriv gärna en kommentar så ser jag till att hålla HOWTO'n uppdaterad. Håll till godo (...än en gång)! :wink:
| |
− | | |
− | ==Källor==
| |
− | * http://www.temperatur.nu/forum/viewtopic.php?f=24&t=526
| |
− | * http://www.temperatur.nu/forum/viewtopic.php?f=24&t=565
| |
− | | |
− | [[Category:Mjukvara]]
| |