Ich beziehe mich hier auf einen Beitrag von Webby aus dem Thema Temperaturaufzeichnung mit RRDTool und Highcharts. Da das Thema aber leider nicht mehr nach oben rutscht bei einem neuen Beitrag, habe ich mir erlaubt meinen dort erstellten Eintrag als neues Thema nochmals hier reinzustellen.
Zuerst danke @Webb y: Danke für den Code der Seite. Allerdings krieg ich da keine Daten angezeigt. Könntest du mir evtl. dein xml zeigen? Ich denke, dass der Fehler bei mir im Aufbau der xml liegt.
Danke
So ich erweitere mal meinen Eintrag, evtl. hilft euch das dann ja weiter. Ich denke ich habe ein allgemeines Verständnisproblem und kriegs darum nicht hin.
Als DB habe ich SQLite:
Darin habe ich ein Datenbank namens ds18b20.db erstellt.
Pro Temperatursensor (aussen, heizung, wohnen) gibt es eine Tabelle mit folgender Struktur:
+----------+-------+----------+----------+---------------+-------------+
| Column # | Field | Type | Not NULL | Default Value | Primary Key |
+----------+-------+----------+----------+---------------+-------------+
| 0 | zeit | DATETIME | Yes | None | Yes |
| 1 | wert | REAL | No | None | No |
+----------+-------+----------+----------+---------------+-------------+
Die Werte darin werden als Unix Timestamp und als Zahl mit zwei Nachkommastellen gespeichert (z.B. 1449498241 7.56).
Soweit funktioniert alles ohne Probleme. Die Werte kommen an und sehen soweit gut aus.
Wenn ich es jetzt richtig verstehe, kann ich nicht direkt aus Highcharts/Highstock heraus auf die Datenbank zugreifen und die Werte auslesen, sondern muss diese in irgendeiner anderen Form zuerst bereitstellen (z.B. xml /Textdatei / JSON). Mein Favorit hier wäre JSON, wobei ich euch nicht erklären kann warum.
Um die Daten aus SQLite in eine JSON-Datei zu bekommen habe ich mir das PHP-Script getData.php mit Hilfe des Internets geschrieben:
<?php
$jsonFile = '/var/www/Highstock/data.json';
$db = new PDO('sqlite:/var/www/sqlite/sqliteDBs/ds18b20.db');
$result = $db->query('SELECT zeit,wert FROM aussen DESC limit 60');
$json = array();
$result->setFetchMode(PDO::FETCH_ASSOC);
$fileHandler = fopen($jsonFile, 'w');
while ($data = $result->fetch()){
$x = $data['zeit'];
$y = $data['wert'];
$json = json_encode(array([int $x*1000,float $y],), JSON_NUMERIC_CHECK);
fwrite($fileHandler, $json);
}
fclose($fileHandler);
?>
[/php]
Das Script ergibt dann die Datei data.json:
[code]
[1448464201000,6],
[1448464261000,5.87],
...
...
[1448464321000,5.93],
Alles anzeigen
Dies sollte jetzt irgendwie wieder in eine HTML-Datei eingelesen werden können (ich habs mit Webby's Codebeispiel probiert!), woran ich aber seit vier Wochen scheitere, egal was ich mir durchlese und ausprobiere. Ich habs mit einem 1:1-Beispiel aus dem "Highcharts Cookbook" von Michael Terwood probiert. Bis zu dem Punkt wo die Daten aus einer externen Quelle kommen sollen bekomme ich es hin.
Kann mir hier jemand weiterhelfen? PHP und Javascript sind jetzt nicht meine Spezialgebiete, ich möchte aber doch gerne die Daten am Schluss in einer Highstock-Grafik darstellen, damit ich mittels dem Highstock-Slider mir den Bereich aussuchen kann, der mich interessiert.