Ankündigung

Einklappen
Keine Ankündigung bisher.

Diagramm-Plugin

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Das war´s. Das Diagram Plugin war nicht aktiviert.
    Gruß
    Christian

    Kommentar


      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>
      an. Wenn ich das direkt über rrdgraph als Grafik erzeugen will, sind noch zwei Informationen mehr nötig:
      Code:
      graph.pl? [...]DEF:ds0=28.2747F0020000_temp.rrd:[COLOR=red]value[/COLOR]:[COLOR=red]AVERAGE[/COLOR];
      value und z.B. AVERAGE für die Mittelwerte, ich könnte aber auch MIN oder MAX angeben und bekomme die Min/Max-Werte aus dem entsprechenden rra.

      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 anzeigen
        Besteht grundsätzlich eigentlich auch die Möglichkeit, die in den RRD's enthaltenen Min/Max-Werte im Diagramm darzustellen?
        Prinzipiell müsste man ja irgendwie die Werte erstmal normieren. Du schreibst ja nur die aktuellen Temperaturen in das RRD und hast damit keine Min/Max Werte zur Verfügung.

        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


              Das Plugin kann damit auch umgehen:
              Code:
              <rrd datasource="MIN | MAX | AVERAGE">28.2747F0020000_temp</rrd>
              Grüße
              Michael

              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 anzeigen
                  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.
                  Habe es gerade ausprobiert. Offenbar ist das RRD für die Busfehler so angelegt, dass nur MAX funktioniert. So geht es bei mir:
                  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;
                    Temperatursensor:
                    Code:
                    ;DEF:ds0=28.97901B030000_temp.rrd:value:AVERAGE;
                    Über rrdtool rrdinfo komme ich an folgendes für den Temperatursensor
                    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
                    Beim Busmaster ist bereits das Archiv etwas anders strukturiert:
                    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
                    Wenn es bei dir funktioniert, müsste dein RRD anders strukturiert sein. Kannst du das mal checken?
                    Endlich umgezogen. Fertig? Noch lange nicht... ;-)

                    Kommentar


                      Was sagt denn die Debug Konsole des Browsers?
                      Was gibt rrdtool fetch aus?

                      Beim Busmaster gibt es mehrere Datensätze, ich vermute da das Problem.
                      Umgezogen? Ja! ... Fertig? Nein!
                      Baustelle 2.0 !

                      Kommentar


                        Zitat von JuMi2006 Beitrag anzeigen
                        Beim Busmaster gibt es mehrere Datensätze, ich vermute da das Problem.
                        Genau dort vermute ich es auch. Ich verstehe aber nicht, warum es dann bei Micha mit genau der Syntax funktioniert.

                        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


                          Alles klar, Problem gelöst. Mit der aktuellen SVN Version geht's jetzt bei mir auch.
                          Endlich umgezogen. Fertig? Noch lange nicht... ;-)

                          Kommentar


                            bitte löschen... Problem saß vor der Tastatur...

                            Kommentar


                              Dann das auch löschen ;-)

                              Die Legende zeigt nicht die Beschriftung der Achsen, sondern der RRDs, was auch Sinn macht. Bei den RRDs hast du zwei Mal inbound stehen.
                              Grüße
                              Michael

                              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

                                Lädt...
                                X