Ankündigung

Einklappen
Keine Ankündigung bisher.

Graph mailen lassen ?

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    #16
    Vielleicht noch zur Erklärung:
    - Die *.rrd sind nur die Datenarchive, die werden ständig aktualisiert.
    - Die Grafiken werden nur "on-the-fly" beim Abruf durch einen Browser erstellt, weil das sehr resourcenintensiv ist und ja auch völliger Quatsch wäre ständig 1000 Grafiken zu erstellen, die sich in diesem Moment evtl. keiner ansieht.

    Der Klebstoff dazwischen ist ein Webserver+ genanntes CGI (Perl,PHP,C,whatever-Programm) oder wie in der CometVisu eben der Browser am Client (dort werden nur die Werte übertragen und mit flot am Client gemalt)

    Für weiterführendes müsste man also wissen was auf dem Server möglich ist (Perl,PHP,.... es gibt für wirklich alles mind. 10 verschiedene Tools/Frontends um aus RRD's Grafiken zu machen..)

    Der andere Ansatz, die Grafiken auf dem WG zu erstellen und zu übertragen ginge zwar technisch auch sehr leicht, ist aber eben o.g. mumpitz: man erstellt 99% dicke Grafikdateien, die sich evtl. nie jemand ansieht..

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

    Kommentar


      #17
      Das WG idled doch eh vor sich hin.
      Ich habe ihm direkt erklärt, wie er die Graphen bauen lassen kann und denke, das er das nun entweder auf dem WG oder auf dem Webserver hinbekommt.
      Derzeit zwischen Kistenauspacken und Garten anlegen.
      Baublog im Profil.

      Kommentar


        #18
        Klar geht das, die URL-Parameter der graph.pl sind z.B. 1:1 dieselben Parameter, die man auch "rrdtool graph .." zum erstellen eines PNG übergeben könnte.

        Ich will ja nur das man auch versteht, warum manches so ist, wie es ist

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

        Kommentar


          #19
          So überzeugt...wäre ja alles nicht so schlimm wenn dieser blöde 3G Router bzw. mein 3G Stick nicht hinter einem NAT sitzen würde.

          Folgende Lösung:

          Script sendet mit alle 3 Stunden via Net::Ftp meine 6 wichtigen rrd-files auf einen externen Webserver. Dort hab ich nun (nach langem Kampf mit den Pfadangaben) drraw.cgi laufen.
          Nun hab ich wenigsten 3h aktuelle Daten zur Einsicht, besser als nix ;-) !

          Da ich keine Ahnung von Arrays hab ist die Konfiguration etwas lästig aber immerhin das Script läuft:

          Code:
          # Simple-FTP-Upload
          # Lädt im Beispiel alle 3 Stunden die rrd-files auf einen externen Server via FTP
          
          # A C H T U N G !!! Da ich noch keine Ahnung von Arrays habe gibt es zwei Definitionsbereiche.
          
          ####################
          ### DEFINITION 1 ###
          ####################
          
          ### filename11 = Dateiname auf WireGate
          ### filename12 = Dateiname auf FTP-Server
          ### Ohne ein rename einfach die Zeilen "my $filenamex2 = …;" löschen. 
          ### Bei weniger oder mehr Dateien einfach entsprechende Zeilen ergänzen
          ### oder löschen und 2. Definitionsbereich beachten.
          
          
          my $host = "FTP-Server";
          my $user = "Benutzername-username";
          my $password = "Password";
          my $path = "Zielpfad auf FTP-Server";
          my $filename11 = "/var/www/rrd/28.D02F23030000_temp.rrd";
          my $filename12 = "Estrich_01.rrd";
          my $filename21 = "/var/www/rrd/28.2A2723030000_temp.rrd";
          my $filename22 = "Estrich_02.rrd";
          my $filename31 = "/var/www/rrd/28.EC5E23030000_temp.rrd";
          my $filename32 = "Heizung_VL.rrd";
          my $filename41 = "/var/www/rrd/28.BA2A23030000_temp.rrd";
          my $filename42 = "Heizung_RL.rrd";
          my $filename51 = "/var/www/rrd/28.A1F622030000_temp.rrd";
          my $filename52 = "Sole_VL.rrd";
          my $filename61 = "/var/www/rrd/28.F44323030000_temp.rrd";
          my $filename62 = "Sole_RL.rrd";
          
          
          $plugin_info{$plugname.'_cycle'} = 10800;
          
          #########################
          ### ENDE DEFINITION 1 ###
          #########################
          
          
          use Net::FTP;
          
              my $ftp = Net::FTP->new($host, Debug => 0)
                or die "Cannot connect to host";
          
              $ftp->login($user,$password)
                or die "Cannot login ", $ftp->message;
          
              $ftp->cwd($path)
                or die "Cannot change working directory ", $ftp->message;
          
          
          ####################
          ### DEFINITION 2 ###
          ####################
          
          ### Ohne ein rename einfach ",filenamex2" löschen.
          ### Bei weniger oder mehr Dateien einfach entsprechende Zeilen ergänzen oder löschen
          
              $ftp->put($filename11,$filename12);
              $ftp->put($filename21,$filename22);
              $ftp->put($filename31,$filename32);
              $ftp->put($filename41,$filename42);
              $ftp->put($filename51,$filename52);
              $ftp->put($filename61,$filename62);
          
          #########################
          ### ENDE DEFINITION 2 ###
          #########################
          
              $ftp->quit;
          
          return;	# keine Logausgabe
          Manchmal ist der erstmal schwere Weg doch garnicht so schlecht, wobei der Traffic für eine fertige Grafik jede Stunde sicherlich kleiner ist als alle 3 Stunden die 6 rrd-files rüber zu schieben. Daher wäre ich an der anderen Lösung immer noch interessiert.
          Umgezogen? Ja! ... Fertig? Nein!
          Baustelle 2.0 !

          Kommentar


            #20
            Also nachfolgend mal ein Quickhack, bitte testen..
            Das nimmt den "Weg des geringsten Widerstands" (PNG banal von der lokalen grph.pl holen->hochschieben)
            Ein paar Kleinigkeiten hab ich angepasst, ansonsten das mit dem FTP ungeprüft übernommen.

            Sauber aber evtl. unübersichtlicher wäre die Grafik mit RRDs::graph direkt zu erstellen, wird evtl. noch nachgeliefert aber im Ergebniss sieht nur der Code und die Anpassungsmöglichkeit anders aus

            Code:
            ### Plugin zum erstellen von Grafiken aus RRD's und FTP-Upload (SMTP-Versand, ...)
            # v0.1
            # 2012-01-04
            # Kann aktuell nur einen Wert pro Grafik!
            # Hinweise: Die Grafikerstellung ist sehr resourcenintensiv -
            # stark abhängig von der Groesse der Grafik - und sollte nicht zu haeufig laufen!
            # Dringend empfohlen: nicht mehr als 10 Werte pro Plugin!
            
            ###################
            ### DEFINITION           ###
            ###################
            
            $plugin_info{$plugname . '_cycle'} = 3600; # Aufrufzyklus
            
            # FTP Zugangsdaten
            my $host = 'mein.ftpserver.de';
            my $user = 'meinuser';
            my $password = 'meinpasswort';
            my $path = '/public_html/graph'; # Pfad auf dem FTP-Server
            
            my $datasource = 'AVERAGE'; # MIN,AVERAGE,MAX
            
            my %graphics; 
            # hash fuer RRD / Grafik-Name
            $graphics{'28.2C0E66010000_temp'} = 'WP_HGL-VL.png';
            $graphics{'28.5F1966010000_temp'} = 'WP_VL.png';
            $graphics{'28.480266010000_temp'} = 'WP_RL.png';
            
            # kann bis auf diesen Teil direkt aus der graph-URL uebernommen werden: 
            # DEF:ds0=28.2C0E66010000_temp.rrd:value:AVERAGE;
            # (DEF:ds0.. bis ;)
            # kann man anpassen
            my $url1 = 'http://[COLOR="Red"]localhost[/COLOR]/graph.pl?--start=-24h;--end=now;-X=0;-W=WireGate;--slope-mode;--lazy;-h=200;-w=650;--full-size-mode;--vertical-label=%B0%20Celsius;';
            my $url2 = 'LINE1:ds0%23ff0000:Wert;VDEF:ds0_LAST=ds0,LAST;GPRINT:ds0_LAST:%2.2lf%B0C;;VDEF:ds0_MIN=ds0,MINIMUM;GPRINT:ds0_MIN:Min\:%20%8.2lf%B0C;VDEF:ds0_AVERAGE=ds0,AVERAGE;GPRINT:ds0_AVERAGE:Mittel\:%20%8.2lf%B0C;VDEF:ds0_MAX=ds0,MAXIMUM;GPRINT:ds0_MAX:Max\:%20%8.2lf%B0C\n;';
            
            ########################
            ### Ende DEFINITION  ###
            ########################
            
            use Net::FTP;
            my $rrd_ret;
            
            my $ftp = Net::FTP->new($host, Debug => 0, Passive => 1, Timeout => 10)
              or return "Cannot connect to host $!";
            # Kein Timeout > 10s! nach 30sek wird das Plugin sonst ohnehin abgeschossen!
            $ftp->login($user,$password)
              or return "Cannot login " . $ftp->message . "$!";
            $ftp->cwd($path)
              or return "Cannot change working directory: " . $ftp->message . "$!";
            $ftp->binary;
            
            # durch den Hash gehen und senden
            while ( my ($rrd,$filename) = each(%graphics) ) {
                my $url = $url1 . "DEF:ds0=$rrd.rrd:value:$datasource;" . $url2;
                $rrd_ret .= `wget "$url" -O /tmp/$filename -o /tmp/wget.log`;
                $ftp->put("/tmp/$filename",$filename) 
                  or return "Cannot send $filename: $!";
            
                # oder hier z.B. eMails verschicken oder...
            } 
            
            $ftp->quit;
            
            #return; # ohne Logeintrag
            return "FTP said " . $ftp->message;
            Makki

            P.S.: eMail-Versand gibts im kürzlich diskutierten SMTP-eMail Plugin im SVN, Anhänge sollten damit auch ein leichtes sein statt dem FTP-Upload..
            EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
            -> Bitte KEINE PNs!

            Kommentar

            Lädt...
            X