Ankündigung

Einklappen
Keine Ankündigung bisher.

Diagram - RRA direkt adressieren?

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

    Diagram - RRA direkt adressieren?

    Hallo,

    ich habe in meinen RRD's verschiedene RRA angelegt mit unterschiedlicher Auflösung (15min, 1h, 24h, 7Tage, ...). Ich suche nun nach einer Möglichkeit mit dem Diagram Plugin direkt diese RRA anzuzeigen bzw. die Diagramme mit einer entsprechenden Auflösung zu erzwingen.

    Beispiel: Ich möchte in der week Darstellung nicht die 15min Auflösung sondern die Auflösung mit 24h (sprich 7 Tageswerte). Bisher zeigt mir das Plugin aber immer die 15min Werte.

    Geht das? Ich finde zu RRA hier im Forum nichts und auch auf der Cometvisu.org Seite finde ich dazu bisher nichts. Das einzige was anscheinend geht ist verschiedene DS aufzurufen, da ich aber alles auf Basis eines DS mit verschiedenen RRA angelegt habe geht das für die Vergangenheit nicht mehr und ich müsste neue RRD's anlegen.

    Gruß
    Andi
    Gruß
    Andi

    #2
    Hallo Andi

    Das ist bis jetzt leider nicht implementiert da einfach der Bedarf nie bestanden hat. Das Wiregate als Referenzplatform erzeugt für jeden Sensor ein eigenes RRD... Von daher ist dies zur Zeit AFAIK nicht direkt im Diagram Widget möglich.
    Gruss Patrik alias swiss

    Kommentar


      #3
      Hallo Patrik,

      danke für die schnelle Antwort. Ist schade...

      Gruß
      Andi
      Gruß
      Andi

      Kommentar


        #4
        Wenn du dich aber mit RRA's und Java auskennst kannst du versuchen das diagram Widget um diese Funktion zu erweitern Ich kann leider da nicht helfen da ich mich mit Java und den internen Strukturen von RRD's überhaubt nicht auskenne.
        Gruss Patrik alias swiss

        Kommentar


          #5
          mit den RRD und RRA hab ich mich nun ausgiebig beschäftigt.

          Java ist aber definitiv nicht meine Welt...
          Gruß
          Andi

          Kommentar


            #6
            Java verwenden wir hier auch (ganz bewusst!) nicht!

            Aber wenn Du JavaScript (aus historischen Gründen eine reiner Marketing-Name, eigentlich heißt die Programmiersprache ECMAScript...) kannst, hast Du alle Möglichkeiten offen
            TS2, B.IQ, DALI, WireGate für 1wire so wie Server für Logik und als KNX Visu die CometVisu auf HomeCockpit Minor. - Bitte keine PNs, Fragen gehören in das Forum, damit jeder was von den Antworten hat!

            Kommentar


              #7
              Konnte man das nicht über das Attribut datasourceIndex lösen? Ich meine, mich zu erinnern, dass das dafür eingeführt wurde.

              Im Editor-Hilfetext steht:
              HTML-Code:
              If  there are multiple datasources in the RRD file this index defines which  one to show. Use "rrdtool info" to find the correct index.
              Grüße
              Michael

              Kommentar


                #8
                Ok, vergiss es, ich hätte den Text mal ganz lesen sollen. Sorry!
                Grüße
                Michael

                Kommentar


                  #9
                  Hier (RRDtool - rrdfetch) steht im Abschnitt Resolution Internal, dass das RRA automatisch aufgrund der Parameter ausgewählt wird.

                  Könnte man das darüber steuern, dass man die Start- und End-Zeit irgendwie beeinflusst? Eventuell kannst du ja mal auf der Konsole des Wiregate ausprobieren, wie das aussehen müsste. Dann könnte man über neue Parameter im Diagramm-Plugin nachdenken.
                  Grüße
                  Michael

                  Kommentar


                    #10
                    genau nach diesem resolution parameter in dem rrdfetch suche ich im Diagrammplugin:

                    --resolution|-r resolution (default is the highest resolution)

                    Im Moment scheint der default mit highest resolution zu greifen. Geht das Diagram Plugin über den rrdfetch Befehl? Dann sollte es doch möglich sein das entsprechend zu ergänzen im Plugin. Hab nur keine Ahnung von JavaScript und daher wird es für mich eher unmöglich das selbst ohne Hilfe einzubauen. Wenn mir aber jemand einen Hinweis gibt wo und in welcher Datei man sich das mal ansehen muß könnte ich mich vielleicht reinarbeiten.

                    Großes Kino wäre wenn man auch noch start und end als Parameter einführen könnte! Das sollte wenn das eine Funktioniert nur noch eine Fleißarbeit sein und wären dann ggf. Funktionalitäten die man unter complex in der CV verstecken könnte.

                    Gruß
                    Andi
                    Gruß
                    Andi

                    Kommentar


                      #11
                      Zitat von MicHau Beitrag anzeigen
                      Eventuell kannst du ja mal auf der Konsole des Wiregate ausprobieren, wie das aussehen müsste. Dann könnte man über neue Parameter im Diagramm-Plugin nachdenken.
                      das kann ich AFAIK auch nicht im wiregate ausprobieren, da auch dort ein resolution Parameter fehlt. Wenn ich über Start/Ende gehe macht das wiregate die Auflösung immer maximal, wie das Diagram plugin auch. Der einzige Vorteil vom Wiregate ist daß man einen flexiblen Beginn und Ende eingeben kann, das Plugin scheint sich das selbst zu definieren über day, week, month, year,... Das nützt aber nichts wenn ich eine gröbere Auflösung haben möchte... (z.B. die Woche mit Tageswerten anstatt von 15min Werten)

                      Ideal wäre für mich wenn man dem Diagram plugin begin, end und resolution als Parameter übergeben könnte...
                      Gruß
                      Andi

                      Kommentar


                        #12
                        da es mich doch sehr interessiert habe ich mal im plugins Ordner gestöbert. In der structure_plugin.js finde ich offensichtlich einen rrdfetch Aufruf:

                        Code:
                        rrdfetch?rrd="+s.src+".rrd&ds="+s.cFunc+"&start="+r.start+"&end="+r.end+"&res="+r.res
                        Wenn dies die Stelle ist an der aus den RRD gelesen wird scheint es mir so als ob zumindest die Resolution wie auch die Start und Ende Option dort schon hinterlegt ist. Ist nun nur die Frage wie die r.start, r.end und r.res Werte sinnvoll beschrieben werden...

                        Dazu habe ich mal nach den Variablen gesucht und siehe da wie vermutet hängen die alle fest an dem series Parameter des Plugins:

                        Code:
                        function s(e,t){var n={hour:{res:"60",start:"hour",end:"now"},
                        day:{res:"300",start:"day",end:"now"},
                        fullday:{res:"300",start:"day",end:"midnight+24hour"},
                        week:{res:"1800",start:"week",end:"now"},
                        month:{res:"21600",start:"month",end:"now"},
                        year:{res:"432000",start:"year",end:"now"}},
                        r=n[e.series];
                        if(!r)return;
                        return{start:"end-"+e.period+r.start,end:r.end,res:r.res}}
                        Vorschlag/Idee meinerseits wäre nun:
                        Könnte man eine Einfache Variante wie heute über den series Parameter (der dann wie oben feste, sinnvolle Werte enthält) behalten und im complex Modus der CV ggf. anstatt des series Parameters die drei Parameter Start, Ende und Resolution einführen?

                        Bisher habe ich noch keine Ahnung wo/wie Parameter für ein Plugin angelegt werden und ob das mit der Idee über den Complex Modus überhaupt machbar ist.

                        P.S. Warum ist die structure_plugin.js eigentlich als eine einzige Codezeile ohne Zeilenumbruch? Ich nutze zur Anzeige Notepad++. Kann man die Datei irgendwie besser lesbar aufmachen?
                        Gruß
                        Andi

                        Kommentar


                          #13
                          Zitat von tger977 Beitrag anzeigen
                          Code:
                          rrdfetch?rrd="+s.src+".rrd&ds="+s.cFunc+"&start="+r.start+"&end="+r.end+"&res="+r.res
                          Bei mir sieht der Aufruf beispielhaft so aus:
                          Code:
                          http://a.b.x.y/cgi-bin/rrdfetch?rrd=28.9999FFFAFFFF_temp.rrd&ds=AVERAGE&start=end-3day&end=now&res=300
                          Zitat von tger977 Beitrag anzeigen
                          Wenn dies die Stelle ist an der aus den RRD gelesen wird scheint es mir so als ob zumindest die Resolution wie auch die Start und Ende Option dort schon hinterlegt ist. Ist nun nur die Frage wie die r.start, r.end und r.res Werte sinnvoll beschrieben werden...

                          Dazu habe ich mal nach den Variablen gesucht und siehe da wie vermutet hängen die alle fest an dem series Parameter des Plugins:

                          Code:
                          function s(e,t){var n={hour:{res:"60",start:"hour",end:"now"},
                          day:{res:"300",start:"day",end:"now"},
                          fullday:{res:"300",start:"day",end:"midnight+24hour"},
                          week:{res:"1800",start:"week",end:"now"},
                          month:{res:"21600",start:"month",end:"now"},
                          year:{res:"432000",start:"year",end:"now"}},
                          r=n[e.series];
                          if(!r)return;
                          return{start:"end-"+e.period+r.start,end:r.end,res:r.res}}
                          Ja, das wird mit möglichst sinnvollen Werten vorbelegt. Sollten die Default-Werte geändert werden?

                          Zitat von tger977 Beitrag anzeigen
                          Vorschlag/Idee meinerseits wäre nun:
                          Könnte man eine Einfache Variante wie heute über den series Parameter (der dann wie oben feste, sinnvolle Werte enthält) behalten und im complex Modus der CV ggf. anstatt des series Parameters die drei Parameter Start, Ende und Resolution einführen?
                          Das wäre sicherlich machbar, aber bevor das gemacht wird, wäre es sinnvoll, erstmal auf dem Wiregate auszuprobieren, ob das auch die gewünschte Wirkung erreichen würde. Der Aufruf der CometVisu wird nämlich serverseitig durch die Datei /usr/lib/cgi-bin/rrdfetch verarbeitet. Diese sieht so aus:
                          Code:
                          #!/bin/sh
                          #echo Content-Type: text/plain
                          echo Content-Type: application/json
                          echo Content-Encoding: gzip
                          echo
                          
                          #rrdtool fetch /var/www/rrd/Luftfeuchte_Bad_knx5-2-79.rrd AVERAGE -s-24h
                          RRD=`echo "$QUERY_STRING" | sed -n 's/^.*rrd=\([^&]*\).*$/\1/p' | sed "s/%20/ /g"`
                          DS=`echo "$QUERY_STRING" | sed -n 's/^.*ds=\([^&]*\).*$/\1/p' | sed "s/%20/ /g"`
                          START=`echo "$QUERY_STRING" | sed -n 's/^.*start=\([^&]*\).*$/\1/p' | sed "s/%20/ /g"`
                          END=`echo "$QUERY_STRING" | sed -n 's/^.*end=\([^&]*\).*$/\1/p' | sed "s/%20/ /g"`
                          RES=`echo "$QUERY_STRING" | sed -n 's/^.*res=\([^&]*\).*$/\1/p' | sed "s/%20/ /g"`
                          
                          #FIXME: check path traversal
                          
                          rrdtool fetchj /var/www/rrd/$RRD $DS -s$START -e$END -r$RES | gzip -c
                          Die letzte Zeile stellt den tatsächlichen Aufruf dar, den du auch in der Konsole aufrufen kannst. Wenn du hier als Parameter deine eigenen Werte verwendest und dann das gewünschte Ergebnis bekommst, wissen wir, dass es funktioniert und könnten es dann einbauen. Der Aufruf liefert ein JSON-Objekt zurück.

                          Zitat von tger977 Beitrag anzeigen
                          P.S. Warum ist die structure_plugin.js eigentlich als eine einzige Codezeile ohne Zeilenumbruch? Ich nutze zur Anzeige Notepad++. Kann man die Datei irgendwie besser lesbar aufmachen?
                          Du verwendest die Release-Version der CometVisu. Für die wird, um Bandbreite zu sparen und einen schnelleren Aufruf zu erreichen, der JavaScript Code zusammengepackt, d.h. unnötige Leerstellen und Zeilenumbrüche entfernt, Variablen mit kurzem Namen versehen, etc.

                          Wenn du die Entwicklerversion verwendest (siehe CometVisu/HowTo install the development version on the WireGate - Open Automation), siehtst den vollständigen Quelltext.
                          Grüße
                          Michael

                          Kommentar


                            #14
                            so wieder einen Schritt weiter:

                            ich habe nun in der Datei einfach mal die festen Werte für die resolution überschrieben und so gesetzt daß ich bei der Wochensicht Tageswerte für meinen Stromverbrauch bekomme. Es funktioniert wenn man auch einen entsprechenden Scale Wert in der rrd Konfiguration einträgt (s.Anhang)

                            Zur Umsetzung hätte ich noch weitere Überlegungen:
                            - man kann an zwei Stellen die neuen Parameter prinzipiell einführen:
                            a) bei den Optionen des diagram_info bzw. diagram selbst
                            b) bei den Optionen zu den einzelnen rrd
                            - da Start und Ende die x-Achse des Diagramms definieren würde ich diese Parameter definitiv im Parmeterteil des diagram bzw. diagram_info sehen.
                            - um Flexibilität bei einzelnen rrd zu habe könnte man den Resolution Parameter in den rrd Parameterteil sinnvoll einfügen. Würde dann auch zu dem schon vorhandenen Scale Parameter passen, da diese zusammen passen müssen um sinnvolle Ergebnisse zu bekommen.

                            Gruß
                            Andi
                            Angehängte Dateien
                            Gruß
                            Andi

                            Kommentar


                              #15
                              OK, wenn ich das also richtig verstehe, würde es ausreichen, pro RRD eine Resolution anzugeben und wenn diese nicht angegeben ist, die Standard-Resolution zu verwenden?
                              Grüße
                              Michael

                              Kommentar

                              Lädt...
                              X