Ankündigung

Einklappen
Keine Ankündigung bisher.

Hilfestellung bei Diagramm anzeigen

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

    #16
    Da ich mich nie damit beschäftigt habe kann ich leider inhaltlich nicht wirklich mitreden, aber:
    Wenn im Handbuch etwas nicht oder falsch stehen sollte: bitte dort korrigieren! Dafür ist's ja ein Wiki geworden
    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


      #17
      Also dann fürs WIKI,

      1. wget http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.4.7.tar.gz

      2. tar xfvz http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.4.7.tar.gz

      3. Installieren der Abhängigkeiten für RRDTOOL:
      apt-get install libpango1.0-dev glib-2.0
      4. vi fetchj.patch
      Code:
      --- rrdtool-1.4.7.orig/src/rrd_tool.c    2013-03-15 08:20:58.610279063 +0100
      +++ rrdtool-1.4.7/src/rrd_tool.c    2013-03-15 08:23:58.991211760 +0100
      @@ -56,7 +56,7 @@
           const char *help_list =
               N_
               ("Valid commands: create, update, updatev, graph, graphv,  dump, restore,\n"
      -         "\t\tlast, lastupdate, first, info, fetch, tune,\n"
      +         "\t\tlast, lastupdate, first, info, fetch, fetchj, tune,\n"
                "\t\tresize, xport, flushcached\n");
      
           const char *help_listremote =
      @@ -119,6 +119,12 @@
                  "\t\t[-r|--resolution resolution]\n"
                  "\t\t[-s|--start start] [-e|--end end]\n"
              "\t\t[--daemon <address>]\n");
      +      
      +  const char *help_fetchj =
      +      N_("* fetchj - fetch data out of an RRD as JSON\n\n"
      +         "\trrdtool fetchj filename.rrd CF\n"
      +         "\t\t[-r|--resolution resolution]\n"
      +         "\t\t[-s|--start start] [-e|--end end]\n\n");
      
           const char *help_flushcached =
               N_("* flushcached - flush cached data out to an RRD file\n\n"
      @@ -230,7 +236,7 @@
                  "Public License Version 2. (www.gnu.org/copyleft/gpl.html)\n\n"
                  "For more information read the RRD manpages\n");
           enum { C_NONE, C_CREATE, C_DUMP, C_INFO, C_RESTORE, C_LAST,
      -        C_LASTUPDATE, C_FIRST, C_UPDATE, C_FETCH, C_GRAPH, C_GRAPHV,
      +        C_LASTUPDATE, C_FIRST, C_UPDATE, C_FETCH, C_FETCHJ, C_GRAPH, C_GRAPHV,
               C_TUNE,
               C_RESIZE, C_XPORT, C_QUIT, C_LS, C_CD, C_MKDIR, C_PWD,
               C_UPDATEV, C_FLUSHCACHED
      @@ -258,6 +264,8 @@
                   help_cmd = C_UPDATEV;
               else if (!strcmp(cmd, "fetch"))
                   help_cmd = C_FETCH;
      +        else if (!strcmp(cmd, "fetchj"))
      +            help_cmd = C_FETCHJ;
               else if (!strcmp(cmd, "flushcached"))
                   help_cmd = C_FLUSHCACHED;
               else if (!strcmp(cmd, "graph"))
      @@ -320,6 +328,9 @@
           case C_FETCH:
               puts(_(help_fetch));
               break;
      +    case C_FETCHJ:
      +        puts(_(help_fetchj));
      +        break;
           case C_FLUSHCACHED:
               puts(_(help_flushcached));
               break;
      @@ -682,7 +693,6 @@
               unsigned long step, ds_cnt, i, ii;
               rrd_value_t *data, *datai;
               char    **ds_namv;
      -
               if (rrd_fetch
                   (argc - 1, &argv[1], &start, &end, &step, &ds_cnt, &ds_namv,
                    &data) == 0) {
      @@ -708,7 +708,40 @@
                   free(ds_namv);
                   free(data);
               }
      -    } else if (strcmp("xport", argv[1]) == 0) {
      +    }
      +    else if (strcmp("fetchj", argv[1]) == 0) {
      +        time_t    start, end, ti;
      +        unsigned long step, ds_cnt, i, ii;
      +        rrd_value_t *data, *datai;
      +        char    **ds_namv;
      +        int written = 0;
      +
      +        if (rrd_fetch
      +            (argc - 1, &argv[1], &start, &end, &step, &ds_cnt, &ds_namv,
      +             &data) != -1) {
      +            datai = data;
      +            // printf("Content-Type: text/plain\n\n");
      +            printf("[");
      +            for (ti = start + step; ti <= end; ti += step) {
      +                if (written==1)
      +                       printf(",");
      +                printf("[%10lu000,[", ti);
      +                for (ii = 0; ii < ds_cnt; ii++) {
      +                    if (ii > 0)
      +                    printf(",");
      +                    printf("\"%0.2f\"", *(datai++));
      +                }
      +                printf("]]");
      +                written = 1;
      +            }
      +            for (i = 0; i < ds_cnt; i++)
      +                free(ds_namv[i]);
      +            free(ds_namv);
      +            free(data);
      +            printf("]\n");
      +        }
      +    }
      +    else if (strcmp("xport", argv[1]) == 0) {
       #ifdef HAVE_RRD_GRAPH
               int       xxsize;
               unsigned long int j = 0;
      5. cd rrdtool-1.4.7
      6. patch -p1 < ../fetchj.patch
      7. ./configure (Weiter wenn keine Fehlermeldung, ansonsten Fehlendes Paket nach Installieren
      8. make
      9. make install
      10. cp ./src/rrdtool /usr/bin

      [EDIT]

      musste heut erneut das rrdtool patchen. Leider musste ich den Hunk 2 des patches von Hand eingeben.
      Einfach /src/rrd_tool.c öffnen
      und in Zeil 119 den Code aus Hunk 2 ergänzen


      [/EDIT]


      Die rrdfetch:

      vi /usr/lib/cgi-bin/rrdfetch
      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
      Zuletzt geändert von larsrosen; 06.08.2017, 18:37.
      Elektroinstallation-Rosenberg
      -Systemintegration-
      Planung, Ausführung, Bauherren Unterstützung
      http://www.knx-haus.com

      Kommentar

      Lädt...
      X