stav0815
2018-05-08, 10:47:54
Hallo Forengemeinde,
ich bin aktuell dran, meine SmartHome Werte in einer MySQL Datenbank zu erfassen.
Diese lese ich dann über PHP von meinem Webserver aus und plotte die Sache mit jpGraph.
Leider bekomme ich es nicht gebacken, die Achsenbeschriftung der X-Achse korrekt darzustellen.
http://www.s51design.de/index.php
Die Werte werden auch in eine Tabelle gepusht, damit ich die Grafik prüfen kann.
//babbedibubbedidbconnect
while ($zeile = mysqli_fetch_array( $db_erg, MYSQL_ASSOC))
{
if($zeile['val'] != null)
{
echo "<tr>";
echo "<td>". $zeile['id']. "</td>";
echo "<td>". gmdate("Y-m-d H:i:s", $zeile['ts'] / 1000). "</td>";
echo "<td>". $zeile['val']. "</td>";
echo "</tr>";
$time[] = gmdate("Y-m-d H:i:s", $zeile['ts'] / 1000);
$wert[] = $zeile['val'];
}
}
echo "</table>";
mysqli_free_result( $db_erg );
$graph = new Graph(1400,600);
//$graph->img->SetMargin(40,40,40,40);
$graph->img->SetAntiAliasing();
$graph->SetScale("textlin");
$graph->SetShadow();
$graph->title->Set("Temperatur Fritz!DECT #1");
$graph->title->SetFont(FF_FONT1,FS_BOLD);
$graph->xaxis->SetLabelAngle(90);
$graph->xaxis->SetTextLabelInterval(10);
$p1 = new LinePlot($wert);
$p1->mark->SetType(MARK_FILLEDCIRCLE);
$p1->mark->SetFillColor("red");
$p1->mark->SetWidth(4);
$p1->SetColor("blue");
$p1->SetCenter();
$graph->Add($p1);
@unlink("./file.jpg");
$graph->Stroke("./file.jpg");
Das Ergebnis gibt mir aber bei der Achsenbeschriftung nur einfache Nummern aus (vermutlich einfach der Index) und wenn ich
$graph->SetScale("textlin");
mache, dann wird aus jeder Iteration quasi eine Sekunde, was ja auch falsch ist.
Das Datum wird aus Unix-Timestamp in ms in "Y-m-d H:i:s" gewandelt (obwohl ich da auch irgendwie 2h Versatz drin habe...)
Hat einer einen Tipp für mich?
ich bin aktuell dran, meine SmartHome Werte in einer MySQL Datenbank zu erfassen.
Diese lese ich dann über PHP von meinem Webserver aus und plotte die Sache mit jpGraph.
Leider bekomme ich es nicht gebacken, die Achsenbeschriftung der X-Achse korrekt darzustellen.
http://www.s51design.de/index.php
Die Werte werden auch in eine Tabelle gepusht, damit ich die Grafik prüfen kann.
//babbedibubbedidbconnect
while ($zeile = mysqli_fetch_array( $db_erg, MYSQL_ASSOC))
{
if($zeile['val'] != null)
{
echo "<tr>";
echo "<td>". $zeile['id']. "</td>";
echo "<td>". gmdate("Y-m-d H:i:s", $zeile['ts'] / 1000). "</td>";
echo "<td>". $zeile['val']. "</td>";
echo "</tr>";
$time[] = gmdate("Y-m-d H:i:s", $zeile['ts'] / 1000);
$wert[] = $zeile['val'];
}
}
echo "</table>";
mysqli_free_result( $db_erg );
$graph = new Graph(1400,600);
//$graph->img->SetMargin(40,40,40,40);
$graph->img->SetAntiAliasing();
$graph->SetScale("textlin");
$graph->SetShadow();
$graph->title->Set("Temperatur Fritz!DECT #1");
$graph->title->SetFont(FF_FONT1,FS_BOLD);
$graph->xaxis->SetLabelAngle(90);
$graph->xaxis->SetTextLabelInterval(10);
$p1 = new LinePlot($wert);
$p1->mark->SetType(MARK_FILLEDCIRCLE);
$p1->mark->SetFillColor("red");
$p1->mark->SetWidth(4);
$p1->SetColor("blue");
$p1->SetCenter();
$graph->Add($p1);
@unlink("./file.jpg");
$graph->Stroke("./file.jpg");
Das Ergebnis gibt mir aber bei der Achsenbeschriftung nur einfache Nummern aus (vermutlich einfach der Index) und wenn ich
$graph->SetScale("textlin");
mache, dann wird aus jeder Iteration quasi eine Sekunde, was ja auch falsch ist.
Das Datum wird aus Unix-Timestamp in ms in "Y-m-d H:i:s" gewandelt (obwohl ich da auch irgendwie 2h Versatz drin habe...)
Hat einer einen Tipp für mich?