Mäta elförbrukning med rrdtool
Så du vill ha stenkoll på din elförbrukning?
Hårdvara som behövs:
- 1st 1wireadapter (DS9490R är att föredra då du får +5v på "köpet")
- 1st räknare för 1wire
- 1st LED-puls detektor
Installationen av detektorn kan kräva lite intrimmning;
- Koppla in allt och se till att detektorn är spänningsmatad. Lyser den röda lysdioden när sensorn får ljus på sig är spänningsmatningen ok.
- LED-detektorn skall placeras framför den blinkande lysdioden.
Skapa databas för rrdtool:
rrdtool create ~/db/energi.rrd -s 60 DS:energi:COUNTER:1200:0:U RRA:AVERAGE:0.5:1:43200 RRA:AVERAGE:0.5:30:175200
Det lämnas som övning åt läsaren att räkna ut för hur lång tid data sparas.
Pulsvärdena skall kompenseras så det är "riktiga" Wh som loggas i databasen för att förenkla grafgenereringen.
Räkna ut vilken omräkningsfaktor för Wh dina pulser har genom att ta 1kWh, dvs 1000Wh, delat på antalet pulser/kWh.
En elmätare som har 1000blink per kWh får en faktor på 1
En elmätare som har 10000blink per kWh får en faktor på 0.1
En elmätare som har 800blink per kWh får en faktor på 0.8
Scriptet för att läsa in och korrigera pulsvärdet ser ut så här:
#!/bin/bash #Exempel för en elmätare med 10000 blink per kWh. OBS . i stället för , OMRAKNINGSFAKTOR=0.1 COUNT=`cat /tmp/1wire/uncached/1D.94EC09000000/counters.A|sed -e s/" "//g` #Lite magi för att räkna med flyttal i BASH VALUE=`echo "$OMRAKNINGSFAKTOR $COUNT" |awk '{printf "%.2f", ($1 * $2)}'` /usr/bin/rrdtool update energi.rrd N:$COUNT'
Inga ändringar eller korrigeringar behöver göras i grafscriptet så kompenseringen för antalet pulser är gjort vid insamlandet. För att skapa en graf kan man sedan köra följande script:
/usr/bin/rrdtool graph /home/energi/public_html/graphs/energi-24h.png \ -E \ --imgformat PNG \ --start -24h \ --end now \ --width 600 \ --height 400 \ --title Exempelgraf \ --vertical-label 'Watt' \ -l 0 \ DEF:energi=/home/energi/public_html/db/energi.rrd:energi:AVERAGE \ CDEF:W=energi,3600,* \ AREA:W#AAAAee \ LINE3:W#000000 \ CDEF:energiK=energi,1000,/ \ VDEF:value_sum=energiK,TOTAL \ GPRINT:value_sum:"Förbrukad mängd\: %0.2lfkWh\n" \ GPRINT:W:MIN:"Momentanförbrukning\: Min\: %0.2lf%sW" \ GPRINT:W:AVERAGE:"Medel\: %0.2lf%sW" \ GPRINT:W:MAX:"Max\: %0.2lf%sW" \ GPRINT:W:LAST:"Just nu\: %0.2lf%sW\n" \ COMMENT:"Copyright Freiholtz Consulting 2010"
Observera att du måste ange fullständiga sökvägar till databas och bildfiler om du vill köra skripten från crontab.