Ankündigung

Einklappen
Keine Ankündigung bisher.

Frage zu RRDs...kann man die "glätten"?

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

    Frage zu RRDs...kann man die "glätten"?

    Moin Jungs,

    habe einen neuen Windmesser und sogleich angefangen, diesen in einem RRD zu erfassen um ihn in der CV darzustellen.

    Jetzt finde ich dieses "Gezappel" nicht so wirklich toll...kann man nicht irgendwie die Kurve glätten?! Ich vermute mal nicht, dass RRD dieses feature unterstützt (mit den verschiedenen Kanälen habe ich schon versucht)...aber wie müsste man das angehen?!


    Gruß, Netsrac
    Angehängte Dateien

    #2
    Das RRD müsste so angelegt sein, das es schon Averages erzeugt. Wenn Du also alle 60 Sekunden ins RRD schreibst, müsstest Du vl. noch ein 5 Minuten Average und/oder ein 10 Minuten Average anlegen lassen...
    Derzeit zwischen Kistenauspacken und Garten anlegen.
    Baublog im Profil.

    Kommentar


      #3
      Gibt's dazu eine Funktion für average in den rrd?

      Ich habe mit ein plugin geschrieben, dass den gleitenden Mittelwert über 30min berechnet (array in Kombination mit pack/unpack), kann ich gerne posten.

      lg
      Robert

      Kommentar


        #4
        Zitat von Robert_Mini Beitrag anzeigen
        Gibt's dazu eine Funktion für average in den rrd?

        Ich habe mit ein plugin geschrieben, dass den gleitenden Mittelwert über 30min berechnet (array in Kombination mit pack/unpack), kann ich gerne posten.
        Super...das wäre genau das, was ich suche....

        Kommentar


          #5
          Zitat von netsrac Beitrag anzeigen
          Super...das wäre genau das, was ich suche....
          Voila!
          Klassischer Code ohne Perl schnick, schnack (der Tipp für pack/unpack kam von Makki).
          Einfach GAs und Zeit ganz oben anpassen, fertig.

          Wenn es wer für sinnvoll erachtet, bitte auch auf openautomation ablegen (hab keinen Zugriff denke ich mal).

          lg Robert

          Code:
          # Wind Mittelwert
          # V1.00 2011-02-02
          
          ### Definitionen 
          ### Hier werden die Werte/Gruppenadressen definiert
          ## ------- Suntracer Daten ------- ##
          my $Wind_aktuell_ga = "10/1/6";                  # 10/1/9 Gruppenadresse für Wind Max., Reset nach RRD schreiben
          my $w_Intervall=30;                              # Zeitraum für gleitenden Mittelwert in Minuten
          my $Wind_Mittelwert_senden_ga = "10/1/30";       # GA zum auf den Bus senden
          ### Ende Definitionen
          
          $plugin_info{$plugname.'_cycle'} = 30;
          my $w_max= $w_Intervall*60/$plugin_info{$plugname.'_cycle'}; 
          
          my $Wind_aktuell=knx_read($Wind_aktuell_ga,10,9);
          my $w = $plugin_info{$plugname.'_w_last'};         # Letzte Position im array lesen
          
          # Array abrufen
          my @Wind_History = unpack("(w/a*)*", $plugin_info{$plugname.'_Wind_History1'});
          
          $Wind_History[$w]=$Wind_aktuell;
          $w++;
          if ($w > ($w_max-1)) {$w=0}
          $plugin_info{$plugname.'_w_last'} = $w;                 # Naechste Position merken
          
          # Array speichern
          $plugin_info{$plugname.'_Wind_History1'} = pack("(w/a*)*", @Wind_History);  
          
          # Mittelwert ermitteln
          my $Summe = 0;
          for my $i (0 .. ($w_max-1))  
            {
            $Summe = $Summe + $Wind_History[$i];
            }
          my $Wind_Mittelwert = (1.0* $Summe / $w_max);
          
          $Wind_Mittelwert = nearest(.2,$Wind_Mittelwert);
          
          # Aktuellen Mittelwerrt auf den Bus schreiben
          knx_write($Wind_Mittelwert_senden_ga,$Wind_Mittelwert,9);  
          
          return;
          # "Wind_Mittelwert $Wind_Mittelwert w ";

          Kommentar


            #6
            Hallo,

            für eine RRD ist das Plugin ja die Lösung.
            Aber eigentlich wäre es doch wünschenswert, wenn man für alle RRDs eine Zeit für die Mittlung angeben könnte und die im Feld Avg gespeichert würde, oder?

            Oder ist das eher etwas für die Ausgabesoftware (hier CV)?

            Gruß,
            Hendrik

            Kommentar


              #7
              So...jetzt muss ich auch nochmal ganz doof fragen, wie ich den den Average Wert ins RRD bekomme. Ich nutz an dieser Stelle bei zwar PHP, aber das spielt ja eigentlich keine Rolle.

              Definirt ist das RRD mit den folgenden Parameter (ob das Sinn mach weiß ich nicht...definition ist irgendwo geklaut):

              Code:
                $opts = array("--step", "300", 
                              "DS:value:GAUGE:900:-55:255000",
                              "RRA:AVERAGE:0.5:1:2160",
                              "RRA:AVERAGE:0.5:5:2016",
                              "RRA:AVERAGE:0.5:15:2880",
                              "RRA:AVERAGE:0.5:180:8760",
                              "RRA:MIN:0.5:1:2160",
                              "RRA:MIN:0.5:5:2016",
                              "RRA:MIN:0.5:15:2880",
                              "RRA:MIN:0.5:180:8760",
                              "RRA:MAX:0.5:1:2160",
                              "RRA:MAX:0.5:5:2016",
                              "RRA:MAX:0.5:15:2880",
                              "RRA:MAX:0.5:180:8760");
              Wenn ich die Docu richtig verstehe, dann muss ich den Wert mittels rrd_update einfach mit N:value:average hinzufügen.

              Tue ich...in der CV zeige ich nun beide Grafiken an:
              Code:
                    <diagram_inline rrd="WindOUTKS555" width="600" height="300" unit="&amp;nbsp;km/h" series="day" period="1" refresh="300" linecolor="#ff9600">
                      <label>Wind</label>
                    </diagram_inline>
                    <diagram_inline rrd="WindOUTKS555" width="600" height="300" unit="&amp;nbsp;km/h" series="day" period="1" datasource="AVERAGE" refresh="300" linecolor="#ff9600">
                      <label>Wind Average</label>
                    </diagram_inline>
              Erwarten würde ich, dass Grafik 1 das "gezappel" ist und Grafik 2 schön den Mittelwert anzeigt.

              Im Moment sehen aber beide Grafiken absolut gleich aus... :-(

              Kommentar


                #8
                IMHO liegt es am float was die Grafik erzeugt. Lässt man sich die RRDs mit drraw aufbereiten dann sehen die Grafiken auch anders aus. Je nach Zeitraum/Auflösung.
                Meine Tagesverbräuche lesen sich via drraw eher als Balkendiagramm während sie in der CV als klassische Liniendiagramme (mit Spitzen) dargestellt werden.
                Umgezogen? Ja! ... Fertig? Nein!
                Baustelle 2.0 !

                Kommentar


                  #9
                  Ich glaube nicht, dass es am float liegt, denn wenn ich mir die Average und die direkten Werte anschaue, dann sind die schon sehr unterschiedlich. Selbst wenn die Kurve nicht geglättet wird, so sollten die Graphen doch unterschiedlich aussehen.

                  Kann es sein, dass der Parameter "datasource" gar nicht (oder nicht korrekt) ausgewertet wird?!

                  Kommentar


                    #10
                    Danke, hab das als Wind_Mittelwert.pl mal ins SVN, damits nicht untergeht.

                    Im Prinzip geht das direkt per RRD auch (aber nicht unbedingt mit allen vorhandenen Front-&Backends); das rrdtool hat gefühlte 40.000 Optionen, kann da aus der hohlen Hüfte aber auch nur auf die Doku verweisen:
                    RRDtool - rrdgraph
                    RRDtool - rrdgraph_data

                    Würde es (bei Defaulteinstellungen für die RRAs) mal mit --step versuchen..

                    Makki
                    EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
                    -> Bitte KEINE PNs!

                    Kommentar


                      #11
                      Nunja, interessant ist, das es eigentlich gar kein Unterschied macht, welche Source ich beim Diagram angebe...deswegen frage ich mich, ob das überhaupt correct durchgereicht wird....

                      Kommentar


                        #12
                        sowohl beim CV-diagram als auch graph* vom WG werden die RRDtool-parameter 1:1 durchgegeben..
                        Wiegesagt, versuch mal --step, wenn man da das gewünschte RRA anpeilt sollte es deutlich flacher werden..

                        Makki
                        EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
                        -> Bitte KEINE PNs!

                        Kommentar

                        Lädt...
                        X