Moin, Ich hab ein kleineres Problem mit dem RRDGraph dieser mittelt mir die Daten die Tagesansicht ist noch ok, aber ab der anzeige einer ganzen Woche werden die Daten anhand der Datenpunkte gemittelt, gibt es da eine Möglichkeit das zu verhindern ? An den Daten kann es nicht liegen ich habe diese in Mysql und diese stimmen, unten ist der befehl den ich nutze, leider ist das FAQ vom RRDTool etwas blöd geschrieben ich hab es nicht herausfinden können. rrdtool graph Schlafzimmer-year.png --imgformat=PNG --start=-1year --width=903 --height=245 -v "Schlafzimmer-28.06.2016-11:16:58" DEF:temp=<sqldatastuf>=1:avg:AVERAGE LINE1:temp#FF0000:temp DEF:licht=<sqldata>:avg:AVERAGE LINE1:licht#00FF00:licht mfg K.J.
Liegen die Daten ausschliesslich in der SQL Datenbank, oder wird als Basis von rrdgraph eine RRD Datenbank verwendet?
Die Daten Ligen nur in einer SQL-Datenbank, hab es aber schon gegen gecheckt bei RRD-Datenbanken ist es das gleiche.
Bei RRD Datenbanken könnte es an deren Definition liegen. Immerhin besteht eine solche Datenbank auf mehreren Tabellen mit jeweils festgelegtem Intervall und Zeithorizont. Die nächstgröbere Tabelle entsteht durch Zusammenfassung mehrerer Samples der vorherigen. Eine Grafik kann aber nur jene Tabelle verwenden, die den gesamten darzustellenden Zeithorizont umfasst, verwendet also je nach Zeithorizont von Grafik und Datenbankdefinition nicht unbedingt jene Auflösung, die du gerne hättest. Auf SQL habe ich das noch nicht verwendet und weiss nicht, wie sich das abbildet.
:
Bearbeitet durch User
Bin leider nicht so der Experte mit SQL aber soweit hab ich das hinbekommen, die werte werden als Double(20) gespeichert das ist die Vorgabe von RRD geht sicher auch anders. Struktur ist im Anhang, RRDKeyID ist ne Vorgabe vom RRDTool das ist die ID der DB da man auch mehrere einzelne Einträge machen kann pro DB da hab ich aber drauf verzichtet da sonst die DB übers Jahr riesig wird, nehme für alles eine ID und schreibe nur ganze Zeile in die DB. RRDTime ist der Timestab in UNIX-Zeit und der Rest die einzelnen Sensoren, schreiben mache ich alle 5min. eine neue Zeile in die DB, Öfter macht auch kein sin das kleinste was ich Auflöse sind die Tages Daten, ich wollte das mal Testen so kann ich auch andere Tools nutzen zum Auswerten, und ich kann Fehlerkorrekturen machen was bei den herkömmlichen RRD DBs ziemlich Kompliziert ist. Infos: http://oss.oetiker.ch/rrdtool/doc/rrdgraph_libdbi.en.html Momentan mache ich das ganze mit PHP, hab seit Jahren die RRD Datenbanken in Benutzung aber da ist das oben genante nicht so einfach vielleicht wird es auch mit PHP7 einfacher da gibt es dann endlich PHP Libs für das RRDTool, hab es aber noch nicht getestet PHP7 lässt sich momentan nicht auf ARM Bauen ;-( Es ist auch Schneller mit SQL da dauert das Generieren vom 20 Graphen ~15sec mit den RRDDatenbanken fast ~30sec
K. J. schrieb: > Ich hab ein kleineres Problem mit dem RRDGraph dieser mittelt mir die > Daten die Tagesansicht ist noch ok, aber ab der anzeige einer ganzen > Woche werden die Daten anhand der Datenpunkte gemittelt, gibt es da eine > Möglichkeit das zu verhindern ? Ja. > rrdtool graph Schlafzimmer-year.png --imgformat=PNG --start=-1year > --width=903 --height=245 -v "Schlafzimmer-28.06.2016-11:16:58" > DEF:temp=<sqldatastuf>=1:avg:AVERAGE LINE1:temp#FF0000:temp > DEF:licht=<sqldata>:avg:AVERAGE LINE1:licht#00FF00:licht Einmal darfst du raten, wofür das "AVERAGE" in der Definition der Datenquelle steht. RTFM!
JA recht hast du aber nur halb "MAX" ist es hatte ich auch mehrfach ausprobiert hatte aber nix gebracht was noch fehlte ist ein :step=300 für die 5min Auflösung.
hab es soweit fertig ich hänge das einfach mal an ist Script generiert deswegen ist es leider etwas unübersichtlich, aber vielleicht kann es jemand gebrauchen. Bild im Anhang rrdtool graph /var/www/img/rrd/Abstellkammer-month.png --imgformat=PNG --start=-1month --width=903 --height=345 -v "Abstellkammer-11.07.2016-21:29:44" -c GRID#9F9F9F -c BACK#FFFFFF -c SHADEA#FFFFFF -c SHADEB#FFFFFF -c CANVAS#FFFFFF -c MGRID#000000 -c FONT#000000 -c AXIS#000000 -c FRAME#000000 -c ARROW#000000 DEF:temp=<<<SQLGEDÖNS>>>:avg:MAX:step=300 LINE1:temp#FF0000:"temp(°C)" GPRINT:temp:MIN:"Min\: %2.1lf" GPRINT:temp:LAST:"Last\: %2.1lf" GPRINT:temp:AVERAGE:"Mean\: %2.1lf" GPRINT:temp:MAX:"Max\: %2.1lf\j" DEF:licht=<<<SQLGEDÖNS>>>:avg:MAX:step=300 LINE1:licht#00FF00:"licht(%/10)" GPRINT:licht:MIN:"Min\: %2.1lf" GPRINT:licht:LAST:"Last\: %2.1lf" GPRINT:licht:AVERAGE:"Mean\: %2.1lf" GPRINT:licht:MAX:"Max\: %2.1lf\j" MFG
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.