Mäta elförbrukning med rrdtool
Bakgrund
Du vill ha koll på din elförbrukning och få det presenterat som en graf. Börja då med att läsa om hur du får igång OWFS och hur man loggar med hjälp av RRDtool.
Hårdvara
- 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
- Alltihop i ett paket
Installationen av detektorn kan kräva lite intrimmning;
- Om du köpt delarna var för sig så kopplar du ihop allt enligt denna guid 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
rrdtool create /home/energi/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.
Skapa skript
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å 1.25.
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 /mnt/1wire/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 "%.0f", ($1 * $2)}'` /usr/bin/rrdtool update /home/energi/db/energi.rrd N:$VALUE
Inga ändringar eller korrigeringar behöver göras i grafscriptet då konverteringen pulser/kWh är gjord vid insamlandet av data. För att skapa en graf kan man sedan lägga till följande i skriptet:
/usr/bin/rrdtool graph /var/www/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/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.