Sida 1 av 2
Önskemål om finess på html sidan som skapar rrd grafen.
Postat: 22 nov 2012, 20:02
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!

Re: Önskemål om finess på html sidan som skapar rrd grafen.
Postat: 22 nov 2012, 20:14
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
Re: Önskemål om finess på html sidan som skapar rrd grafen.
Postat: 04 dec 2012, 09:51
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?
Re: Önskemål om finess på html sidan som skapar rrd grafen.
Postat: 04 dec 2012, 10:49
av daromer
Ja det är ju relativtlätt att fixa. Är bara att börja koda

Re: Önskemål om finess på html sidan som skapar rrd grafen.
Postat: 04 dec 2012, 18:37
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?
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...

Re: Önskemål om finess på html sidan som skapar rrd grafen.
Postat: 04 dec 2012, 21:49
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

Re: Sv: Önskemål om finess på html sidan som skapar rrd graf
Postat: 05 dec 2012, 02:25
av bertilson
Kanske så här?
http://adgj.se/temp/custom.php
Skickat från min LT26i via Tapatalk 2
Re: Önskemål om finess på html sidan som skapar rrd grafen.
Postat: 05 dec 2012, 15:07
av mazzse
Daromer, får väl hålla tummarna då att den trillar in...
Bertilson: Vet inte, men verkar vara knas att nå din webserver...
"Servern på adgj.se svarar inte."
Men jag är grymt nyfiken...

Re: Sv: Önskemål om finess på html sidan som skapar rrd graf
Postat: 06 dec 2012, 08:13
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
Re: Önskemål om finess på html sidan som skapar rrd grafen.
Postat: 07 dec 2012, 15:38
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...

Re: Sv: Önskemål om finess på html sidan som skapar rrd graf
Postat: 11 dec 2012, 15:07
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
Re: Sv: Önskemål om finess på html sidan som skapar rrd graf
Postat: 14 dec 2012, 17:01
av bertilson
Nu är sidan uppe igen!
Skickat från min LT26i via Tapatalk 2
Re: Önskemål om finess på html sidan som skapar rrd grafen.
Postat: 18 dec 2012, 09:44
av mazzse
Bertilson, klockrent!
Det var
exakt så jag önskade...

Riktigt tjusigt.
Re: Önskemål om finess på html sidan som skapar rrd grafen.
Postat: 18 dec 2012, 20:35
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>
Re: Önskemål om finess på html sidan som skapar rrd grafen.
Postat: 18 dec 2012, 20:39
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>