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