Önskemål om finess på html sidan som skapar rrd grafen.

Generella Linux-frågor och frågor gällande Linuxmjukvara som saknar egen forumkategori skall postas i detta forum
Kategoriregler
Vill du visa bilder i ditt inlägg? Använd funktionen "Ladda upp bilaga" nedanför textrutan!
mazzse
Wannabe
Inlägg: 16
Blev medlem: 08 nov 2012, 12:34
Ort: Stockholm

Önskemål om finess på html sidan som skapar rrd grafen.

Inlägg av mazzse »

Hej

Jag har suttit och funderat från och till emellanåt på en funktion där jag kan välja vilken graf som skall genereras, om jag vill ha en just för stunden, så måste jag ju in och koda om lite, siffror, generera alt vänt tills nästa uppdateras.

Mitt önskemål är att skriva om lite på scripten (bash + perl) så att dom genereras efter inställt / förvalt värde i den html filen som idag visar mina grafer. Antingen via förinställda värden på html sidan, eller på sikt koda om html sidan med dropp-ned lister där man kan välja, eller ännu bättre en box där man kan fylla i vilket värde som grafen skall genereras efter.

Så min enkla fråga är: Finnas det någon som redan uppfunnit detta hjul?
Min svåra fråga: Om inte någon har gjort detta, och har kunskaper åt vilket håll jag skall tänka mig.

OWFS, RRD, LINUX.
En del kunskaper om php, html. Men inga gastronomiska förkunskaper, bara självlärda i måttlig mängd.... :)

All hjälp mottages tacksamt!

:)
daromer
Hemautomation - det är mer än en hobby
Inlägg: 961
Blev medlem: 23 sep 2009, 09:31
Ort: Växjö

Re: Önskemål om finess på html sidan som skapar rrd grafen.

Inlägg av daromer »

Något sådant här?
https://temps.romer.se/draw_one.php?nam ... 2&start=1w

Den jag gjort klarar generera allt möjligt. vet att jag la in en manual här någonstans.

Den klarar t ex w= och h= samt start och slut tid.
Compare tidigare tid
Visa flera grafer ifrån flera filer o.s.v
mazzse
Wannabe
Inlägg: 16
Blev medlem: 08 nov 2012, 12:34
Ort: Stockholm

Re: Önskemål om finess på html sidan som skapar rrd grafen.

Inlägg av mazzse »

Idag ser min ut såhär: http://temp.mazz.se

Jag vet inte om jag förstod dig rätt, men jag vill kunna välja ifrån värden i två drop-ned lister (alt mata in själv vilka jag vill att grafen skall genereras utifrån. Så att .png filen genereras när man klickar ok.

Var jag tydligare nu?
daromer
Hemautomation - det är mer än en hobby
Inlägg: 961
Blev medlem: 23 sep 2009, 09:31
Ort: Växjö

Re: Önskemål om finess på html sidan som skapar rrd grafen.

Inlägg av daromer »

Ja det är ju relativtlätt att fixa. Är bara att börja koda :)
mazzse
Wannabe
Inlägg: 16
Blev medlem: 08 nov 2012, 12:34
Ort: Stockholm

Re: Önskemål om finess på html sidan som skapar rrd grafen.

Inlägg av mazzse »

daromer skrev:Ja det är ju relativtlätt att fixa. Är bara att börja koda :)
Kära Tomten!
Då önskar jag mig i Julklapp följande:
Om det e så lätt å fixa, går det å få någon som e grym på det å göra ett ännu enklare "grund"-exempel, så jag kan bygga vidare och lattja lite på det själv och i slutändan få till det som jag önskar? :D :D :D

Skämt å sidå, om någon som kan mer än mig om programmering i detta område, och dessutom redan har gjort detta, antingen i annat exempel som går att applicera alt redan har gjort denna funktion för samma ändamål så vore jag jätteglad om någon kan saxa lite ur sin programmering här på forumet... :D :D :D
daromer
Hemautomation - det är mer än en hobby
Inlägg: 961
Blev medlem: 23 sep 2009, 09:31
Ort: Växjö

Re: Önskemål om finess på html sidan som skapar rrd grafen.

Inlägg av daromer »

Min kod jag har går ju fixa till för detta men då den är relativt komplex kan den vara en dålig start.


Men har ju lovat lägga upp den innan så får försöka nån gång. Kanske när tomten kommer :)
Användarvisningsbild
bertilson
Tar hemautomation på allvar
Inlägg: 133
Blev medlem: 21 dec 2009, 11:41
Ort: Borås

Re: Sv: Önskemål om finess på html sidan som skapar rrd graf

Inlägg av bertilson »

Kanske så här?

http://adgj.se/temp/custom.php



Skickat från min LT26i via Tapatalk 2
mazzse
Wannabe
Inlägg: 16
Blev medlem: 08 nov 2012, 12:34
Ort: Stockholm

Re: Önskemål om finess på html sidan som skapar rrd grafen.

Inlägg av mazzse »

Daromer, får väl hålla tummarna då att den trillar in... :P


Bertilson: Vet inte, men verkar vara knas att nå din webserver...
"Servern på adgj.se svarar inte."
Men jag är grymt nyfiken... :)
Användarvisningsbild
bertilson
Tar hemautomation på allvar
Inlägg: 133
Blev medlem: 21 dec 2009, 11:41
Ort: Borås

Re: Sv: Önskemål om finess på html sidan som skapar rrd graf

Inlägg av bertilson »

Jag befinner mig på fel sida jordklotet för tillfället, men jag löser detta när jag kommer hem om en och en halv vecka.


I alla fall så har jag en sida där jag väljer viken rrd jag vill titta på i en drop down meny och hur långt tillbaka man vill se, sen kan jag välja titel, färg och storlek på grafen.

För att detta skall funka så måste samtliga rrd-filer ligga i samma mapp.

Dessutom måste man ha php och rrd-plugin installerat på datorn.


Skickat från min LT26i via Tapatalk 2
mazzse
Wannabe
Inlägg: 16
Blev medlem: 08 nov 2012, 12:34
Ort: Stockholm

Re: Önskemål om finess på html sidan som skapar rrd grafen.

Inlägg av mazzse »

bertilson: Det låter riktigt intressant, det är nått sånt jag vill ha... :)

Väntan finns det gott av här, när ungarna väntar på jultomten så väntar jag på att du skall komma hem från semester... :)

Jag roar mig med att beställa leksaker till min raspberry pi så länge och meckar med dom, så kommer du nog att kommit
hem lagom till att jag skall applicera detta på en av dom två burkarna med debian och den ena har php i dagsläget iaf... :)
Användarvisningsbild
bertilson
Tar hemautomation på allvar
Inlägg: 133
Blev medlem: 21 dec 2009, 11:41
Ort: Borås

Re: Sv: Önskemål om finess på html sidan som skapar rrd graf

Inlägg av bertilson »

Om det ändå hade varit semester hade jag varit glad. Befinner mig i Östtimor på jobb, och det är inget roligt alls när man egentligen till vara hemma.

En sak till för att detta ska funka, alla rrd-filer bör ha samma namn på tabellen som innehåller mätvärdena. Tror tabellen heter temp_value I mina filer.

Och, rrd:erna måste ligga i en katalog som php-demonen har tillgång till.


Åker hemåt på torsdag, landar hemma på fredag, servern borde vara uppe senast lördag morgon.

Skickat från min LT26i via Tapatalk 2
Användarvisningsbild
bertilson
Tar hemautomation på allvar
Inlägg: 133
Blev medlem: 21 dec 2009, 11:41
Ort: Borås

Re: Sv: Önskemål om finess på html sidan som skapar rrd graf

Inlägg av bertilson »

Nu är sidan uppe igen!

Skickat från min LT26i via Tapatalk 2
mazzse
Wannabe
Inlägg: 16
Blev medlem: 08 nov 2012, 12:34
Ort: Stockholm

Re: Önskemål om finess på html sidan som skapar rrd grafen.

Inlägg av mazzse »

Bertilson, klockrent!

Det var exakt så jag önskade... :)
Riktigt tjusigt.
Användarvisningsbild
bertilson
Tar hemautomation på allvar
Inlägg: 133
Blev medlem: 21 dec 2009, 11:41
Ort: Borås

Re: Önskemål om finess på html sidan som skapar rrd grafen.

Inlägg av bertilson »

då ska vi se om jag lyckas dela med mig av detta, jag har försökt att använda lite kommentarer i koden, men jag burkar vara ganska dålig på det.

Bara att fråga om det är något som verkar oklart.

Själva graf-generiringen sker i scriptet sh_graph.php Här bestämmer man grafens utsenden utefter några angivna parametrar som skrivs in i adressfältet på web-läsaren.

Den enda som scriptet på custom.php gör är att generera dessa parametrar.

Här är scriptet för att generer och visa grafen.

Kod: Markera allt

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset="utf-8" />
  <title><?php echo $_GET["r"] ?> </title>
</head>

<body>

<?php

$filnamn = "graph/" . $_GET["rrd"] . time() . ".png";  //filnamnet på bilden får en tidsstämpel för att undvika problem med att webläsaren cachear bilderna.

// variabler:    start      title       width     height         rrd         Color
create_graph($_GET["t"], $_GET["r"], $_GET["w"], $_GET["h"], $_GET["rrd"], $_GET["c"], $filnamn);



echo "<img src='" . $filnamn . "' alt='Generated RRD image'>";
exit;

function create_graph($start, $title, $width, $height, $rrd, $color, $output) {
$path = "/var/rrddata/temp_"; // Sökvägen till rrd-databasen (ligger i mappen /var/rrddata, men samtliga RRD-filnamn börjar på "temp_", t.ex temp_outside.rrd)
  $options = array(
    "--slope-mode",
    "--start", $start,
    "--title=$title",
    "--width=$width",
    "--height=$height",
    "--vertical-label=Temperatur",
    "DEF:temp=$path$rrd.rrd:temp_value:AVERAGE", // I mina RRD:er ligger mätvärdet lagrat i tabellen temp_value. 
    "LINE1:temp#$color:$rrd",
    "GPRINT:temp:LAST:Temperatur %0.2lf\\n",
    "GPRINT:temp:MIN:Min\: %0.2lf%s",
    "GPRINT:temp:AVERAGE:Medel\: %0.2lf%s",
    "GPRINT:temp:MAX:Max\: %0.2lf%s\\n",
    "COMMENT:Tid\: $now"

  );

  $ret = rrd_graph($output, $options, count($options));
  if (! $ret) {
    echo "<b>Graph error: </b>".rrd_error()."\n";
  }
}

?>


</body>
</html>

Och scriptet som generar samliga parametrar:

Kod: Markera allt

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>

<body>

<form action="sh_graph.php" method="get"> <!--scriptet sh_graph.php bör ligga i samma mapp-->
<br>
start: <input type="text" value="-7d" name="t" /> <!-- Default värdet anges i paametern value, i detta fallet -7d som inebär att det hämtas data från 7 dagar bakåt, här går det även att ange, år (y) månad (m) vecka (w) timme (h) etc-->
<br>

Titel: <input type="text" value="null" name="r" />
<br>

Bredd: <input type="text" value="1024" name="w" />
<br>

höjd: <input type="text" value="600" name="h" />
<br>


databas:
<select name="rrd">
<option value="outside">utomhus</option> <!--här läggs de olika rrd:erna till, value är det som filen heter-->
<option value="vardagsrum">inomhus</option>
<option value="server">server</option>
<option value="wine">vinkällare</option>
<option value="boiler">Varmvatten</option>
<option value="tillopp">tillopp</option>
<option value="retur">retur</option>
<option value="brine_retur">Brine_retur</option>
<option value="brine_tillopp">Brine_tillopp</option>

</select>

<br>

färg: <input type="text" value="009900" name="c" />
<br>


<input type="submit" value="generera" />
</form>

</body>
</html>
Användarvisningsbild
bertilson
Tar hemautomation på allvar
Inlägg: 133
Blev medlem: 21 dec 2009, 11:41
Ort: Borås

Re: Önskemål om finess på html sidan som skapar rrd grafen.

Inlägg av bertilson »

har även en funktion i mitt index.php script som genererar graferna som skall visas på startsidan.

adgj.se/temp

Kod: Markera allt

<?php
	//functions
	function create_graph($start, $title, $rrd, $color, $output, $width, $height) 
	{
		//$width = "150";
		//$height = "100";
		$path = "/var/rrddata/temp_"; // Sökvägengen till rrd-databasen.
		$options = array(
			"--slope-mode",
			"--start", $start,
			"--title=$title",
			"--width=$width",
			"--height=$height",
			"DEF:temp=$path$rrd.rrd:temp_value:AVERAGE",
			"LINE1:temp#$color:$rrd",
			"GPRINT:temp:LAST:temp %0.2lf\\n"
		);

		$ret = rrd_graph($output, $options, count($options));

		if (! $ret)
		{
			echo "<b>Graph error: </b>".rrd_error()."\n";
		}
	}

	function GetTemp($sensor)
        {
                $file = fopen("/var/rrddata/last_value/" . $sensor , "r") or exit("Unable to open file!");
                        //Output a line of the file until the end is reached
                        echo fgets($file);
                fclose($file);
        }

//call for graph generating script

	$container = htmlentities($_SERVER['HTTP_USER_AGENT']);
	$width = "150";
	$height = "100";

if(strstr($container,"Windows"))
	{
		$width = "600";
		$height = "250";
	}

if(strstr($container,"Android"))
	{
		$width = "300";
		$height = "470";
	}

if(strstr($container,"iPhone"))
	{
		$width = "390";
		$height = "360";
	}



$filnamn = time();

create_graph("-1d", "utomhus dygn", "outside", "FF9999", "graph/outside1d" . $filnamn . ".png", $width, $height );
create_graph("-7d", "utomhus vecka", "outside", "FF9999", "graph/outside7d" . $filnamn . ".png", $width, $height );
create_graph("-1d", "inomhus dygn", "vardagsrum", "FF9999", "graph/vardagsrum1d" . $filnamn . ".png", $width, $height );
create_graph("-7d", "inomhus vecka", "vardagsrum", "FF9999", "graph/vardagsrum7d" . $filnamn . ".png", $width, $height );


?> 

<html>
	
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<title>
			Temperaturer på Vattuvägen 3
		</title>
	</head>

<body>

<table border=1 cellpadding=1 cellspacing=1>
		<tr>
			<th>Placering</th><th>Temperatur</th>
		</tr>

		<tr>
			<td>
				Utomhus norr
			</td>
			<td>
				<?php
					GetTemp("outside");
				?>
				grader C
			</td>
		</tr>

		<tr>
			<td>
				Vardagsrummet
			</td>
			<td>
				<?php
					GetTemp("vardagsrum");
				?>
				grader C
			</td>
		</tr>

		<tr>
			<td>
				Pannan
			</td>
			<td>
				<?php
					GetTemp("boiler");
				?>
				grader C
			</td>
		</tr>
		<tr>
			<td>
				<a href="sh_graph.php?t=-1d&r=utomhus senaste dygn&w=1024&h=600&rrd=outside&c=009900">
					<?php
						echo "<img src=graph/outside1d" . $filnamn . ".png />"
					?>
				</a>
			</td>

			<td>
				<a href="sh_graph.php?t=-7d&r=utomhus senaste vecka&w=1024&h=600&rrd=outside&c=009900">
					<?php
						echo "<img src=graph/outside7d" . $filnamn . ".png />"
					?>
				</a>
			</td>
		</tr>
		<tr>
			<td>
				<a href="sh_graph.php?t=-1d&r=inomhus senaste dygn&w=1024&h=600&rrd=vardagsrum&c=000043">
					<?php
						echo "<img src=graph/vardagsrum1d" . $filnamn . ".png />"
					?>

				</a>
			</td>

			<td> 
				<a href="sh_graph.php?t=-7d&r=inomhus senaste vecka&w=1024&h=600&rrd=vardagsrum&c=000043">
					<?php
						echo "<img src=graph/vardagsrum7d" . $filnamn . ".png />"
					?>
				</a>
			</td>
		</tr>

	</table>
<a href="custom.php">generera gustom grafer</a>
</body>
</html>
Skriv svar