Diagramme per PHP erzeugen.

Hallo,

ich bin da wohl nicht der beste Erklärer, aber ich hoffe es kommt etwas dabei rüber.
Vorgeschichte ist, ich speichere bei mir viele Variablen in log Dateien, das geschied über solche PHP Zeilen:


<?
	$timestamp = time(); // Uhrzeitholen nur für den Log
	$datum = date("d.m.Y",$timestamp); // Datum entschluesseln nur für den Log
	$uhrzeit = date("H:i",$timestamp); // Uhrzeit entschluesseln nur für den Log
	$mintemp1440 = GetValue(30973 /*[Verbrauchszaehler\mintemp1440]*/   );
	$s0aktuell = GetValue(20526 /*[Verbrauchszaehler\DS2423P\Zähler 1]*/   );
	$mincount1440 = $s0aktuell - $mintemp1440;
	$datei = fopen("R:\ip-symcon-log\min1440.log","a"); // Logfile oeffnen
	fwrite($datei, "$datum $uhrzeit $timestamp $mincount1440 
"); // Logfile schreiben
	fclose($datei); // Logfile schliessen

?>

Das Logfile sieht das so aus:


06.06.2009 00:00 1244239200 21704 
07.06.2009 00:00 1244325600 24444 
08.06.2009 00:00 1244412000 22271 
09.06.2009 00:00 1244498400 21433 
10.06.2009 00:00 1244584800 18948 
11.06.2009 00:00 1244671200 20373 
12.06.2009 00:00 1244757600 21779 
13.06.2009 00:00 1244844001 19414 
14.06.2009 00:00 1244930400 20985 

Nun wollte ich aus diesen Daten gerne ein Diagramm machen, könnte man ja auch mit dem WIIPS, aber wenn dort erst mal ein falscher Wert in die Datenbank gerutscht ist bekommt man den eigentlich nicht wieder raus, hier im Logfile kann ich jederzeit editieren
Wie bekommt man nun aus den Daten ein Diagramm.
Zum einen muß man wissen wie man eine CSV datei ein liest.
Das ist recht einfach und funktioniert über dieses Script:


<?php
$Zeilen = 1;
$Dateizeiger = fopen("R:\ip-symcon-log\min60_2.log","r");
while(($Daten = fgetcsv($Dateizeiger, 100, " ")) !== FALSE)
{
    $AnzahlDerFelder = count($Daten);
    $Zeilen++;
    print_r($Daten);
}
fclose($Dateizeiger);
?>

dieses Script liest die csv Datei Zeile für Zeile bis keine Zeilen mehr da sind und packt die Daten in das Array $Daten, welches dann so aussieht:


Array
(
    [0] => 06.06.2009
    [1] => 00:00
    [2] => 1244239200
    [3] => 21704
    [4] => 
)
Array
(
    [0] => 07.06.2009
    [1] => 00:00
    [2] => 1244325600
    [3] => 24444
    [4] => 
)

Nun zum eigentlichen Diagramm erzeugen, dafür habe ich unter
SourceForge.net: PHPLOT
ein Script gefunden welches aud Daten Diagramme macht.
Diese war recht leicht zu installieren, ich hab die PHP dateien einfach mit ins Verzeichniss scrips abgelegt und in der PHP.ini die Zeile:


include_path = "C:\Programme\IP-Symcon\scripts\"

Hinzugefügt das wars.
Das Script für das Diagramm sieht so aus, auszuführen auf einen Webserver, da das Bild direkt an den Browser gesendet wird:


<?php
$Zeilen = 1;
$Dateizeiger = fopen("R:\ip-symcon-log\min1440.log","r");
//Include the code
require_once 'phplot.php';

//Define the object
$plot = new PHPlot();

//Define some data
$example_data = array(
);
while(($Daten = fgetcsv($Dateizeiger, 100, " ")) !== FALSE)
{
    $AnzahlDerFelder = count($Daten);
    $Zeilen++;
    $example_data[] = array($Daten[0],$Daten[3]);
}
$plot->SetDataValues($example_data);

//Turn off X axis ticks and labels because they get in the way:
$plot->SetXTickLabelPos('none');
$plot->SetXTickPos('none');
//fclose($Dateizeiger);

//Draw it
$plot->DrawGraph();
?>

Als Anhang mal das erste Diagramm, ist noch nicht das schönste, aber funktioniert erst mal.

Schöne Grüße
Thomas

stromverbrauch.png

Hallo,

wieso bekommst Du denn falsche Werte in den RRD Datenbanken nicht wieder raus? Es wurde schon mehrfach geschrieben, dass man dies mit dem RRD Editor machen kann. Einfach mal unter rrdtool.org danach suchen, sollten einige zu finden sein.

Bedenke, dass Deine Datenbanken mit Sicherheit keine Langzeit-Archivierung in dieser Form zulassen. RRD bspw. kann ohne Probleme 10 Jahre und sogar noch laenger speichern und auch problemlos verwalten.

Hallo,

editieren schon, aber man hat bei einer Polling Zeit von einer Minute, nur 60 sec Zeit die Datenbank zu XML zu konvertieren die falschen Daten suchen, editieren und wieder zu rrd zurückwandeln, schaft man es nicht in 60sec hat man schon wieder eine neue Lücke.

Der RRD Editor zeigt bei mir nur die Daten an, Änderungen werden nicht übernommen.

Schöne Grüße
Thomas