Sida 2 av 2

Re: Månadsgraf Elförbrukning?

Postat: 08 apr 2011, 21:39
av Niklas
Eftersom att hela grafgenereringen jag använder är skriven i perl så var jag tvungen att lära mig att skapa grafer med php för att få till det jag ville och så här blev resultatet. Det finns säkert flera olika sätt att göra det på men detta tycks fungera precis som jag vill. Hoppas att någon annan kanske har nytta av det. Man behöver förstås fixa in rrdtool-tillägget för PHP för att det ska funka.

Kod: Markera allt

<?php

    $rrd = "/sokvag/till/energi.rrd"; // Sökvägen till rrd-databasen.

    $max_month = date('m');    // Max antal månader att räkna upp. Nuvarande månad anges som max.
    $year = date('Y');    // Vilket år. Nuvarande år anges. Om 2010 anges så ändras max_month till 12 för att få hela året.

    $width = "600";
    $height = "200";

    $now = date('Y-m-d');

    for ($i = 1; $i <= $max_month; $i++) {    //kör loopen tills nuvarande månad har räknats upp.
    	$month = $i;    // Vilken månad. (Skapas av loopen)
    	$starttime1 = date('Y-m-d', mktime(0, 0, 0, $month, 1, $year));    // datum i lite mer läsbart format
    	$endtime1 = date('Y-m-t', mktime(0, 0, 0, $month, 1, $year));    // datum i lite mer läsbart format
    	$starttime = strtotime(date('Y-m-d', mktime(0, 0, 0, $month, 1, $year)));    // Startdatum i Unixtid
    	$endtime = strtotime(date('Y-m-t', mktime(0, 0, 0, $month, 1, $year)));    // Slutdatum i Unixtid
    	$filename = "energi_" . $starttime1 . "_" . $endtime1 . ".png";
    // Filernas namn: energi_starttid_sluttid.png


    	$opts = array(
         "--imgformat", "PNG",
         "--start", "$starttime",
         "--end", "$endtime",
         "--width", "$width",
         "--height", "$height",
         "--slope-mode",
         "--title",
         "Förbrukning $starttime1 till $endtime1",
         "--vertical-label", "Watt",
         "--lower", "0",
         "DEF:energi=$rrd:energi:AVERAGE",
         "CDEF:W=energi,3600,*",
         "CDEF:W_real=energi,1000,/",
         "VDEF:value_sum=W_real,TOTAL",
         "AREA:W#9999ee",
         "LINE1:W#000000",
         "GPRINT:value_sum:Förbrukad mängd\: %0.2lfkWh\\n",
         "GPRINT:W:MIN:Min\: %0.2lf%sW",
         "GPRINT:W:AVERAGE:Medel\: %0.2lf%sW",
         "GPRINT:W:MAX:Max\: %0.2lf%sW\\n",
         "COMMENT:Data sammanställd\: $now"
         );

    	$ret = rrd_graph($filename, $opts, count($opts));

    	if (!is_array($ret)) {
    		$err = rrd_error();
    		echo "rrd_graph() FEL: $err\n";
    	}

    }
?>

Re: Månadsgraf Elförbrukning?

Postat: 09 apr 2011, 09:43
av daromer
Ahh var de bara så du ville göra :) Jag trodde du ville ha 1 stapel per månad :)


Ja det ovan är ju lätt att göra. Det är ju bara 1månad bakåt i tiden :D

Re: Månadsgraf Elförbrukning?

Postat: 09 apr 2011, 11:32
av Niklas
En graf per kalendermånad skulle genereras... vilket scriptet gör. :)
Inte bara 1 månad tillbaka i tiden utan X antal månader tillbaka.

Re: Månadsgraf Elförbrukning?

Postat: 09 apr 2011, 22:59
av daromer
Jo det är ju lätt. Är ju bara att sätta start och slutdatum :D


Det hade jag färdiga script som gör. T ex man sätter startdatum och 1 månad. eller liknande :)

Re: Månadsgraf Elförbrukning?

Postat: 09 apr 2011, 23:07
av Niklas
daromer skrev:Jo det är ju lätt. Är ju bara att sätta start och slutdatum :D


Det hade jag färdiga script som gör. T ex man sätter startdatum och 1 månad. eller liknande :)
Ja, precis..
Jag behövde en loop som loopar fram alla som jag har i min rrd, det är ca 3 år. Scriptet var som sagt skrivet i perl. Inte min grej. ;)

Re: Månadsgraf Elförbrukning?

Postat: 11 apr 2011, 09:31
av daromer
Varför ska du loopa?

Är väl bara att sätta start och slutdatum i rrdgraph? Eller du menar att du vill automatiskt skapa 1 bild per månad kontinuerligt? Isåfall är jag med igen :)

Re: Månadsgraf Elförbrukning?

Postat: 11 apr 2011, 09:38
av Niklas
daromer skrev:Varför ska du loopa?

Är väl bara att sätta start och slutdatum i rrdgraph? Eller du menar att du vill automatiskt skapa 1 bild per månad kontinuerligt? Isåfall är jag med igen :)
Precis.. och så ville jag ju generera fram en graf per månad x antal månader tillbaka också. Data som redan fanns.

Re: Månadsgraf Elförbrukning?

Postat: 11 apr 2011, 09:47
av daromer
Lite som denna då:

https://luno.mine.nu/temp2/draw_one.php ... m&range=1m

Där kan man fylla i vad man vill ha och så genererar den en graf. Inte anpassad till energin utan bara tempsensorer i detta fallet men det går att göra en hel del med den.

t ex compare klarar den av med. Samt att köra xxx antal sensorer i samma bild :) Båda dagar samt sekunder.

Re: Månadsgraf Elförbrukning?

Postat: 22 aug 2011, 14:46
av Quart
Niklas skrev:Eftersom att hela grafgenereringen jag använder är skriven i perl så var jag tvungen att lära mig att skapa grafer med php för att få till det jag ville och så här blev resultatet. Det finns säkert flera olika sätt att göra det på men detta tycks fungera precis som jag vill. Hoppas att någon annan kanske har nytta av det. Man behöver förstås fixa in rrdtool-tillägget för PHP för att det ska funka.

Kod: Markera allt

<?php

    $rrd = "/sokvag/till/energi.rrd"; // Sökvägen till rrd-databasen.

    $max_month = date('m');    // Max antal månader att räkna upp. Nuvarande månad anges som max.
    $year = date('Y');    // Vilket år. Nuvarande år anges. Om 2010 anges så ändras max_month till 12 för att få hela året.

    $width = "600";
    $height = "200";

    $now = date('Y-m-d');

    for ($i = 1; $i <= $max_month; $i++) {    //kör loopen tills nuvarande månad har räknats upp.
    	$month = $i;    // Vilken månad. (Skapas av loopen)
    	$starttime1 = date('Y-m-d', mktime(0, 0, 0, $month, 1, $year));    // datum i lite mer läsbart format
    	$endtime1 = date('Y-m-t', mktime(0, 0, 0, $month, 1, $year));    // datum i lite mer läsbart format
    	$starttime = strtotime(date('Y-m-d', mktime(0, 0, 0, $month, 1, $year)));    // Startdatum i Unixtid
    	$endtime = strtotime(date('Y-m-t', mktime(0, 0, 0, $month, 1, $year)));    // Slutdatum i Unixtid
    	$filename = "energi_" . $starttime1 . "_" . $endtime1 . ".png";
    // Filernas namn: energi_starttid_sluttid.png


    	$opts = array(
         "--imgformat", "PNG",
         "--start", "$starttime",
         "--end", "$endtime",
         "--width", "$width",
         "--height", "$height",
         "--slope-mode",
         "--title",
         "Förbrukning $starttime1 till $endtime1",
         "--vertical-label", "Watt",
         "--lower", "0",
         "DEF:energi=$rrd:energi:AVERAGE",
         "CDEF:W=energi,3600,*",
         "CDEF:W_real=energi,1000,/",
         "VDEF:value_sum=W_real,TOTAL",
         "AREA:W#9999ee",
         "LINE1:W#000000",
         "GPRINT:value_sum:Förbrukad mängd\: %0.2lfkWh\\n",
         "GPRINT:W:MIN:Min\: %0.2lf%sW",
         "GPRINT:W:AVERAGE:Medel\: %0.2lf%sW",
         "GPRINT:W:MAX:Max\: %0.2lf%sW\\n",
         "COMMENT:Data sammanställd\: $now"
         );

    	$ret = rrd_graph($filename, $opts, count($opts));

    	if (!is_array($ret)) {
    		$err = rrd_error();
    		echo "rrd_graph() FEL: $err\n";
    	}

    }
?>
Försökte detta men lyckades inte, hur får man till det där tilläget för RRD i PHP ?

Re: Månadsgraf Elförbrukning?

Postat: 22 aug 2011, 15:36
av Niklas
Quart skrev:
Niklas skrev:Eftersom att hela grafgenereringen jag använder är skriven i perl så var jag tvungen att lära mig att skapa grafer med php för att få till det jag ville och så här blev resultatet. Det finns säkert flera olika sätt att göra det på men detta tycks fungera precis som jag vill. Hoppas att någon annan kanske har nytta av det. Man behöver förstås fixa in rrdtool-tillägget för PHP för att det ska funka.

Kod: Markera allt

<?php

    $rrd = "/sokvag/till/energi.rrd"; // Sökvägen till rrd-databasen.

    $max_month = date('m');    // Max antal månader att räkna upp. Nuvarande månad anges som max.
    $year = date('Y');    // Vilket år. Nuvarande år anges. Om 2010 anges så ändras max_month till 12 för att få hela året.

    $width = "600";
    $height = "200";

    $now = date('Y-m-d');

    for ($i = 1; $i <= $max_month; $i++) {    //kör loopen tills nuvarande månad har räknats upp.
    	$month = $i;    // Vilken månad. (Skapas av loopen)
    	$starttime1 = date('Y-m-d', mktime(0, 0, 0, $month, 1, $year));    // datum i lite mer läsbart format
    	$endtime1 = date('Y-m-t', mktime(0, 0, 0, $month, 1, $year));    // datum i lite mer läsbart format
    	$starttime = strtotime(date('Y-m-d', mktime(0, 0, 0, $month, 1, $year)));    // Startdatum i Unixtid
    	$endtime = strtotime(date('Y-m-t', mktime(0, 0, 0, $month, 1, $year)));    // Slutdatum i Unixtid
    	$filename = "energi_" . $starttime1 . "_" . $endtime1 . ".png";
    // Filernas namn: energi_starttid_sluttid.png


    	$opts = array(
         "--imgformat", "PNG",
         "--start", "$starttime",
         "--end", "$endtime",
         "--width", "$width",
         "--height", "$height",
         "--slope-mode",
         "--title",
         "Förbrukning $starttime1 till $endtime1",
         "--vertical-label", "Watt",
         "--lower", "0",
         "DEF:energi=$rrd:energi:AVERAGE",
         "CDEF:W=energi,3600,*",
         "CDEF:W_real=energi,1000,/",
         "VDEF:value_sum=W_real,TOTAL",
         "AREA:W#9999ee",
         "LINE1:W#000000",
         "GPRINT:value_sum:Förbrukad mängd\: %0.2lfkWh\\n",
         "GPRINT:W:MIN:Min\: %0.2lf%sW",
         "GPRINT:W:AVERAGE:Medel\: %0.2lf%sW",
         "GPRINT:W:MAX:Max\: %0.2lf%sW\\n",
         "COMMENT:Data sammanställd\: $now"
         );

    	$ret = rrd_graph($filename, $opts, count($opts));

    	if (!is_array($ret)) {
    		$err = rrd_error();
    		echo "rrd_graph() FEL: $err\n";
    	}

    }
?>
Försökte detta men lyckades inte, hur får man till det där tilläget för RRD i PHP ?

Vad kör du för operativsystem?

Ubuntu:
http://blog.webdir.bg/install-php-rrdtool-ubuntu/

Andra Linuxvarianter:
http://servarica.com/installing-rrdtool ... extension/

Re: Månadsgraf Elförbrukning?

Postat: 22 aug 2011, 19:28
av Quart
Kör ubuntu 10.04 försökte med instruktionen för ubuntu som du länkade till men icke...
Är gröngöling på linux så jag har säkert gjort nåt fel.
När jag kör min php test så står det att Under enviroment
WD /usr/include/php5/ext/rrdtool
Inget om att rrdtool skall vara aktiverat såsom länken visar att de skall stå