Das war´s. Das Diagram Plugin war nicht aktiviert.
Ankündigung
Einklappen
Keine Ankündigung bisher.
Diagramm-Plugin
Einklappen
X
-
MIN/MAX im Diagramm möglich?
Besteht grundsätzlich eigentlich auch die Möglichkeit, die in den RRD's enthaltenen Min/Max-Werte im Diagramm darzustellen?
Für Temperaturwerte gebe ich die Datenquelle ja z.B. mit
Code:<rrd>28.2747F0020000_temp</rrd>
Code:graph.pl? [...]DEF:ds0=28.2747F0020000_temp.rrd:[COLOR=red]value[/COLOR]:[COLOR=red]AVERAGE[/COLOR];
Geht das mit dem aktuellen Diagramm-Plugin auch irgendwie? Sind die Infos 'value' und 'avg' (und .rrd) hard-coded im Diagramm-Plugin selbst hinterlegt? Oder kann ich irgendwo noch 'min/max/avg' spezifizieren?Endlich umgezogen. Fertig? Noch lange nicht... ;-)
Kommentar
-
Zitat von Hauke Beitrag anzeigenBesteht grundsätzlich eigentlich auch die Möglichkeit, die in den RRD's enthaltenen Min/Max-Werte im Diagramm darzustellen?
Musste leider auch erstmal schmerzlich erfahren, dass die RRDs eigentlich total doof sind und nix selber machen :-)
Leider hatte ich bis jetzt noch keine Zeit, mich um die Berechnung zu kümmern.
Mein Problem ist z.B. auch bei der Darstellung von Windgeschwindigkeiten, dass der Graph eigentlich viel zu sehr hin- und herzappelt. Hier müssten die Werte vorher normiert werden, so dass sie einfach als Kurve angezeigt werden und nicht ein wilder Haufen von "Spitzen" sind.
Ähnliches müsste man sicherlich auch für die Min/Max Werte machen.
Irgendwelche Statistiker anwesend hier?! :-)
Netsrac
Kommentar
-
Kommt darauf an, wie das RRD angelegt ist. Die Standardeinstellung im WireGate sieht vor, das auch MIN- und MAX-Werte mit abgelegt werden. Die kann ich über rrdgraph bzw. den Diagrammgenerator vom WG auch abrufen. Das geschieht also (sofern bei Erstellung des RRD angelegt) vollautomatisch. Ebenso die Mittelung der eingehenden Werte für den standardmäßig anzeigten AVG.
Das "Gezappel" deiner Windgeschwindigkeiten solltest du also über die steps und die Aktualisierungsrate der Werte in den Griff bekommen können. Standard für den step sind 300s. Je nachdem wie oft du einen Wert in das RRD schreibst, bekommst du dadurch bereits eine geglättete Kurve (natürlich nur, wenn du innerhalb der 300s bzw. dem in deinem RRD definierten step mehrmals den Wert ins RRD schreibst). Also Update-Intervall runter oder step hoch.
RRDtool - rrdcreate ist dazu grundsätzlich hilfreich, aber sehr knapp formuliert und mit wenig Beispielen versehen. Ich habe zu hause auch noch einige Dokumente, die ein wenig leichter verständlich sind, die man mit google aber auch recht schnell findet. Kann ich dir bei Bedarf auch zuschicken.Endlich umgezogen. Fertig? Noch lange nicht... ;-)
Kommentar
-
Hier mal als Beispiel: Graph vom demo.wiregate.de
Code:[URL]http://demo.wiregate.de/graph.pl?--start=now-7days;--end=now;-X=0;-W=WireGate;--slope-mode[/URL]; -h=400;-w=650;--full-size-mode;--vertical-label=° Celsius;--title=Temperaturen; -c=BACK%23000000;-c=CANVAS%23000000;-c=SHADEA%23000000;-c=SHADEB%23000000; -c=GRID%23960000;-c=MGRID%236B4F42;-c=FONT%23FFFFFF;-c=AXIS%23000000;-c=FRAME%23000000;-c=ARROW%23000080; DEF:ds0=26.D19883000000_temp.rrd:value:[COLOR=red]MAX[/COLOR];LINE1:ds0%23FF0000:AMSv1 (temp); DEF:ds1=26.D19883000000_temp.rrd:value:[COLOR=red]MIN[/COLOR];LINE1:ds1%230000FF:AMSv1 (temp); DEF:ds2=26.D19883000000_temp.rrd:value:[COLOR=red]AVERAGE[/COLOR];LINE1:ds2%2300FF00:AMSv1 (temp);
Endlich umgezogen. Fertig? Noch lange nicht... ;-)
Kommentar
-
Genau das hab ich gebraucht! Werde ich heute abend gleich mal ausprobieren.
Dann mal gleich zur nächsten Frage
Ich hatte vor einiger Zeit mal versucht, die Fehlerrate der Busmaster im Diagramm darzustellen. Das klappt auch mit dem Diagrammgenerator aus dem WG, nicht aber in der Cometvisu. Ich erinnere mich dunkel, dass in dem Code aus dem Diagrammgenerator anstatt "value" "errors" oder sowas gestanden hat. Gibt's dafür in der CometVisu auch bereits eine Lösung?Endlich umgezogen. Fertig? Noch lange nicht... ;-)
Kommentar
-
Zitat von Hauke Beitrag anzeigenIch hatte vor einiger Zeit mal versucht, die Fehlerrate der Busmaster im Diagramm darzustellen. Das klappt auch mit dem Diagrammgenerator aus dem WG, nicht aber in der Cometvisu.
Code:<rrd yaxis="Y1" color="#11BB33" label="Errors" datasource="MAX">81.079A2F000000_errors</rrd>
Grüße
Michael
Kommentar
-
Seltsam. Das haut bei mir nicht hin. In den über das Webmin erzeugten Diagrammen sehe ich folgende Datenquellen:
Busmaster:
Code:;DEF:ds0=81.27A82F000000_errors.rrd:errors:MAX;
Code:;DEF:ds0=28.97901B030000_temp.rrd:value:AVERAGE;
Code:filename = "28.9F51F0020000_temp.rrd" rrd_version = "0003" step = 300 last_update = 1386372968 ds[value].type = "GAUGE" ds[value].minimal_heartbeat = 900 ds[value].min = -5,5000000000e+01 ds[value].max = 2,5500000000e+05 ds[value].last_ds = "69.5" ds[value].value = 4,7685049490e+03 ds[value].unknown_sec = 0 rra[0].cf = "AVERAGE" rra[0].rows = 2160 rra[0].cur_row = 1985 rra[0].pdp_per_row = 1 rra[0].xff = 5,0000000000e-01 rra[0].cdp_prep[0].value = NaN rra[0].cdp_prep[0].unknown_datapoints = 0 rra[1].cf = "AVERAGE" rra[1].rows = 2016 rra[1].cur_row = 242 rra[1].pdp_per_row = 5 rra[1].xff = 5,0000000000e-01 rra[1].cdp_prep[0].value = 2,0748047421e+02 rra[1].cdp_prep[0].unknown_datapoints = 0 rra[2].cf = "AVERAGE" rra[2].rows = 2880 rra[2].cur_row = 1573 rra[2].pdp_per_row = 15 rra[2].xff = 5,0000000000e-01 rra[2].cdp_prep[0].value = 9,0248047421e+02 rra[2].cdp_prep[0].unknown_datapoints = 0 rra[3].cf = "AVERAGE" rra[3].rows = 8760 rra[3].cur_row = 3114 rra[3].pdp_per_row = 180 rra[3].xff = 5,0000000000e-01 rra[3].cdp_prep[0].value = 7,3040770274e+03 rra[3].cdp_prep[0].unknown_datapoints = 0 rra[4].cf = "MIN" rra[4].rows = 2160 rra[4].cur_row = 1747 rra[4].pdp_per_row = 1 rra[4].xff = 5,0000000000e-01 rra[4].cdp_prep[0].value = NaN rra[4].cdp_prep[0].unknown_datapoints = 0 rra[5].cf = "MIN" rra[5].rows = 2016 rra[5].cur_row = 2 rra[5].pdp_per_row = 5 rra[5].xff = 5,0000000000e-01 rra[5].cdp_prep[0].value = 6,9000000000e+01 rra[5].cdp_prep[0].unknown_datapoints = 0 rra[6].cf = "MIN" rra[6].rows = 2880 rra[6].cur_row = 2378 rra[6].pdp_per_row = 15 rra[6].xff = 5,0000000000e-01 rra[6].cdp_prep[0].value = 6,9000000000e+01 rra[6].cdp_prep[0].unknown_datapoints = 0 rra[7].cf = "MIN" rra[7].rows = 8760 rra[7].cur_row = 6252 rra[7].pdp_per_row = 180 rra[7].xff = 5,0000000000e-01 rra[7].cdp_prep[0].value = 6,9000000000e+01 rra[7].cdp_prep[0].unknown_datapoints = 0 rra[8].cf = "MAX" rra[8].rows = 2160 rra[8].cur_row = 972 rra[8].pdp_per_row = 1 rra[8].xff = 5,0000000000e-01 rra[8].cdp_prep[0].value = NaN rra[8].cdp_prep[0].unknown_datapoints = 0 rra[9].cf = "MAX" rra[9].rows = 2016 rra[9].cur_row = 993 rra[9].pdp_per_row = 5 rra[9].xff = 5,0000000000e-01 rra[9].cdp_prep[0].value = 6,9500000000e+01 rra[9].cdp_prep[0].unknown_datapoints = 0 rra[10].cf = "MAX" rra[10].rows = 2880 rra[10].cur_row = 1009 rra[10].pdp_per_row = 15 rra[10].xff = 5,0000000000e-01 rra[10].cdp_prep[0].value = 6,9500000000e+01 rra[10].cdp_prep[0].unknown_datapoints = 0 rra[11].cf = "MAX" rra[11].rows = 8760 rra[11].cur_row = 918 rra[11].pdp_per_row = 180 rra[11].xff = 5,0000000000e-01 rra[11].cdp_prep[0].value = 7,2500000000e+01 rra[11].cdp_prep[0].unknown_datapoints = 0
Code:filename = "81.05AD31000000_errors.rrd" rrd_version = "0003" step = 300 last_update = 1386372671 ds[errors].type = "DERIVE" ds[errors].minimal_heartbeat = 900 ds[errors].min = 0,0000000000e+00 ds[errors].max = 5,0000000000e+01 ds[errors].last_ds = "2" ds[errors].value = 0,0000000000e+00 ds[errors].unknown_sec = 0 ds[read_errors].type = "DERIVE" ds[read_errors].minimal_heartbeat = 900 ds[read_errors].min = 0,0000000000e+00 ds[read_errors].max = 5,0000000000e+01 ds[read_errors].last_ds = "1" ds[read_errors].value = 0,0000000000e+00 ds[read_errors].unknown_sec = 0 ds[reconnects].type = "DERIVE" ds[reconnects].minimal_heartbeat = 900 ds[reconnects].min = 0,0000000000e+00 ds[reconnects].max = 5,0000000000e+01 ds[reconnects].last_ds = "0" ds[reconnects].value = 0,0000000000e+00 ds[reconnects].unknown_sec = 0 ds[reset_errors].type = "DERIVE" ds[reset_errors].minimal_heartbeat = 900 ds[reset_errors].min = 0,0000000000e+00 ds[reset_errors].max = 5,0000000000e+01 ds[reset_errors].last_ds = "0" ds[reset_errors].value = 0,0000000000e+00 ds[reset_errors].unknown_sec = 0 ds[search_errors].type = "DERIVE" ds[search_errors].minimal_heartbeat = 900 ds[search_errors].min = 0,0000000000e+00 ds[search_errors].max = 5,0000000000e+01 ds[search_errors].last_ds = "3" ds[search_errors].value = 0,0000000000e+00 ds[search_errors].unknown_sec = 0 ds[select_errors].type = "DERIVE" ds[select_errors].minimal_heartbeat = 900 ds[select_errors].min = 0,0000000000e+00 ds[select_errors].max = 5,0000000000e+01 ds[select_errors].last_ds = "0" ds[select_errors].value = 0,0000000000e+00 ds[select_errors].unknown_sec = 0 ds[shorts].type = "DERIVE" ds[shorts].minimal_heartbeat = 900 ds[shorts].min = 0,0000000000e+00 ds[shorts].max = 5,0000000000e+01 ds[shorts].last_ds = "4" ds[shorts].value = 0,0000000000e+00 ds[shorts].unknown_sec = 0 ds[status_errors].type = "DERIVE" ds[status_errors].minimal_heartbeat = 900 ds[status_errors].min = 0,0000000000e+00 ds[status_errors].max = 5,0000000000e+01 ds[status_errors].last_ds = "0" ds[status_errors].value = 0,0000000000e+00 ds[status_errors].unknown_sec = 0 rra[0].cf = "MAX" rra[0].rows = 2160 rra[0].cur_row = 478 rra[0].pdp_per_row = 1 rra[0].xff = 5,0000000000e-01 rra[0].cdp_prep[0].value = NaN rra[0].cdp_prep[0].unknown_datapoints = 0 rra[0].cdp_prep[1].value = NaN rra[0].cdp_prep[1].unknown_datapoints = 0 rra[0].cdp_prep[2].value = NaN rra[0].cdp_prep[2].unknown_datapoints = 0 rra[0].cdp_prep[3].value = NaN rra[0].cdp_prep[3].unknown_datapoints = 0 rra[0].cdp_prep[4].value = NaN rra[0].cdp_prep[4].unknown_datapoints = 0 rra[0].cdp_prep[5].value = NaN rra[0].cdp_prep[5].unknown_datapoints = 0 rra[0].cdp_prep[6].value = NaN rra[0].cdp_prep[6].unknown_datapoints = 0 rra[0].cdp_prep[7].value = NaN rra[0].cdp_prep[7].unknown_datapoints = 0 rra[1].cf = "MAX" rra[1].rows = 2016 rra[1].cur_row = 1381 rra[1].pdp_per_row = 5 rra[1].xff = 5,0000000000e-01 rra[1].cdp_prep[0].value = 0,0000000000e+00 rra[1].cdp_prep[0].unknown_datapoints = 0 rra[1].cdp_prep[1].value = 0,0000000000e+00 rra[1].cdp_prep[1].unknown_datapoints = 0 rra[1].cdp_prep[2].value = 0,0000000000e+00 rra[1].cdp_prep[2].unknown_datapoints = 0 rra[1].cdp_prep[3].value = 0,0000000000e+00 rra[1].cdp_prep[3].unknown_datapoints = 0 rra[1].cdp_prep[4].value = 0,0000000000e+00 rra[1].cdp_prep[4].unknown_datapoints = 0 rra[1].cdp_prep[5].value = 0,0000000000e+00 rra[1].cdp_prep[5].unknown_datapoints = 0 rra[1].cdp_prep[6].value = 0,0000000000e+00 rra[1].cdp_prep[6].unknown_datapoints = 0 rra[1].cdp_prep[7].value = 0,0000000000e+00 rra[1].cdp_prep[7].unknown_datapoints = 0 rra[2].cf = "MAX" rra[2].rows = 2880 rra[2].cur_row = 27 rra[2].pdp_per_row = 15 rra[2].xff = 5,0000000000e-01 rra[2].cdp_prep[0].value = 0,0000000000e+00 rra[2].cdp_prep[0].unknown_datapoints = 0 rra[2].cdp_prep[1].value = 0,0000000000e+00 rra[2].cdp_prep[1].unknown_datapoints = 0 rra[2].cdp_prep[2].value = 0,0000000000e+00 rra[2].cdp_prep[2].unknown_datapoints = 0 rra[2].cdp_prep[3].value = 0,0000000000e+00 rra[2].cdp_prep[3].unknown_datapoints = 0 rra[2].cdp_prep[4].value = 0,0000000000e+00 rra[2].cdp_prep[4].unknown_datapoints = 0 rra[2].cdp_prep[5].value = 0,0000000000e+00 rra[2].cdp_prep[5].unknown_datapoints = 0 rra[2].cdp_prep[6].value = 0,0000000000e+00 rra[2].cdp_prep[6].unknown_datapoints = 0 rra[2].cdp_prep[7].value = 0,0000000000e+00 rra[2].cdp_prep[7].unknown_datapoints = 0 rra[3].cf = "MAX" rra[3].rows = 8760 rra[3].cur_row = 1948 rra[3].pdp_per_row = 180 rra[3].xff = 5,0000000000e-01 rra[3].cdp_prep[0].value = 0,0000000000e+00 rra[3].cdp_prep[0].unknown_datapoints = 0 rra[3].cdp_prep[1].value = 0,0000000000e+00 rra[3].cdp_prep[1].unknown_datapoints = 0 rra[3].cdp_prep[2].value = 0,0000000000e+00 rra[3].cdp_prep[2].unknown_datapoints = 0 rra[3].cdp_prep[3].value = 0,0000000000e+00 rra[3].cdp_prep[3].unknown_datapoints = 0 rra[3].cdp_prep[4].value = 0,0000000000e+00 rra[3].cdp_prep[4].unknown_datapoints = 0 rra[3].cdp_prep[5].value = 0,0000000000e+00 rra[3].cdp_prep[5].unknown_datapoints = 0 rra[3].cdp_prep[6].value = 0,0000000000e+00 rra[3].cdp_prep[6].unknown_datapoints = 0 rra[3].cdp_prep[7].value = 0,0000000000e+00 rra[3].cdp_prep[7].unknown_datapoints = 0
Endlich umgezogen. Fertig? Noch lange nicht... ;-)
Kommentar
-
Zitat von JuMi2006 Beitrag anzeigenBeim Busmaster gibt es mehrere Datensätze, ich vermute da das Problem.
Debug und rrdfetch werde ich mal checken.
Ich glaube ich habe lange kein update gemacht. Ich werde mir erstmal die aktuelle Version aus dem svn ziehen. Vielleicht hilft das ja bereits.Endlich umgezogen. Fertig? Noch lange nicht... ;-)
Kommentar
-
Kann mir jemand erklären, wie man KNX Größen in einem rrd Diagramm darstellt? Mein bisheriger Ansatz ist folgender (siehe insbesondere Temperatur3); die KNX-Adresse 4/3/0 habe ich im Wiregate Server bei "KNX Gruppenadressen bearbeiten" angelegt und auf der KNX-Adresse landen definitiv Daten:
Code:<diagram_info colspan="1" rowspan="1" format="%.1f °C" series="day" refresh="300" gridcolor="#707070"> <label>Kollektortemperatur</label> <address transform="DPT:9.001">4/0/1</address> <axis position="left" min="10" max="30" unit="°C">Temperaturachse1</axis> <axis position="right" min="0" max="100" unit="%">Temperaturachse2</axis> <rrd yaxis="Temperaturachse1" color="#FF00FF" label="Temperatur1">28.FF2963731501_temp</rrd> <rrd yaxis="Temperaturachse1" color="#00FFFF" label="Temperatur2">28.FF9DE2001603_temp</rrd> <rrd yaxis="Temperaturachse1" color="#00FFFF" label="Temperatur3">4/3/0</rrd> <rrd yaxis="Temperaturachse2" color="#FFFF00" label="Temperatur">28.FF2963731501_temp</rrd> </diagram_info>
Kommentar
Kommentar