Ankündigung

Einklappen
Keine Ankündigung bisher.

RRD erzeugen

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

    RRD erzeugen

    Hallo zusammen,

    eines vorneweg, ich hab wirklich gesucht, sowohl Google als auch hier im Forum. Ich möchte im Wiregate eine RRD erzeugen mit einem Wert der von KNX kommt. Ich komme aber auf keinen grünen Zweig.
    Ich bin unter Plugins auf Plugin hinzufügen gegangen. Und jetzt? Was ist der Minimalcode um den Wert einer GA in einer RRD zu loggen so dass ich ihn später wiede finden kann und als Diagramm anzeigen lassen kann?
    Sorry wenn ich jetzt vielleicht etwas doof rüberkomm, aber ich steh da echt aufm Schlauch wegen mangelnder Doku. Ich bin beruflich SPS-Programmierer, aber hier tu ich mich echt etwas schwer ohne Hilfestellung

    #2
    hier ist der plugin Code:
    https://github.com/OpenAutomationPro...aufzeichnen.pl

    diesen Code im WG in der Pluginmaske reinkopieren

    und hier das conf file dazu, das ebenfalls in die Pluginmaske reinkopiert werden muß und entsprechend Deinen Wünschen anzupassen ist
    https://github.com/OpenAutomationPro...en.conf.sample

    und es sollte erstmal laufen...

    Gruß
    Andi
    Gruß
    Andi

    Kommentar


      #3
      Vielen Dank! Jetzt ist das Plugin drin, wird aufgerufen und ich erhalte als Rückgabewert Aufzeichnung erfolgreich erledigt

      Jetzt wollte ich aber die RRD die ich in der Config angegeben haben in der Cometvisu anzeigen lassen. Allerdings wird mir die RRD im Auswahlfenster nicht angezeigt. Was kann da noch faul sein?

      Edit: Geht, hat wohl etwas gedauert oder das mehrmalige schließen der Cometvisu war erfolgreich
      Allerdings wird mir jetzt ein leeres Diagram angezeigt Naja, da mach ich morgen weiter...
      Zuletzt geändert von Donnerknall; 14.06.2016, 21:32.

      Kommentar


        #4
        Also ich habs gerade nochmal versucht, die RRD die mir einen Temperaturwert einer KNX GA loggt erzeugt ein leeres Diagramm. Wenn ich eine RRD eines 1-Wire Sensors nehm wird ein Diagramm korrekt angezeigt. Jemand eine Idee?

        Kommentar


          #5
          Hast du die GA im WG auch mit dem korrekten Typ angelegt? Stichwort: Gruppenaddressen bearbeiten, oder so ähnlich. Nur GAs die das Wiregate kennt können auch verwendet werden.

          Kommentar


            #6
            dpt 9.001

            Kommentar


              #7
              Ich habe hier einen Auszug aus plugin.log. Habe die Warnungen was zu bedeuten? Man sieht hier auch, dass der richtige Wert vom Bus gelesen wird.

              2016-06-16 20:51:10.260,rrd_aufzeichnen,Warning: Constant subroutine main::EVENT_RESTART redefined at /usr/share/perl/5.10/constant.pm line 115.
              2016-06-16 20:51:10.261,rrd_aufzeichnen,Warning: Constant subroutine main::EVENT_MODIFIED redefined at /usr/share/perl/5.10/constant.pm line 115.
              2016-06-16 20:51:10.262,rrd_aufzeichnen,Warning: Constant subroutine main::EVENT_BUS redefined at /usr/share/perl/5.10/constant.pm line 115.
              2016-06-16 20:51:10.262,rrd_aufzeichnen,Warning: Constant subroutine main::EVENT_SOCKET redefined at /usr/share/perl/5.10/constant.pm line 115.
              2016-06-16 20:51:10.266,rrd_aufzeichnen,Warning: Constant subroutine main::EVENT_CYCLE redefined at /usr/share/perl/5.10/constant.pm line 115.
              2016-06-16 20:51:10.273,rrd_aufzeichnen,0 - Aufrufgrund: bus 2016-06-16 20:51:10.273,rrd_aufzeichnen,1 - GA: 2/0/1, Wert: 14.1
              2016-06-16 20:51:10.276,rrd_aufzeichnen,Aufzeichnung erfolgreich erledigt!,0s,
              Zuletzt geändert von Donnerknall; 16.06.2016, 20:02.

              Kommentar


                #8
                Sorry, dass ich nochmal pushe. Aber die Aufzeichnungen wären mir sehr wichtig und waren mit ein Entscheidungsgrund für das Wiregate und Cometvisu. Es dürft doch nur an einer Kleinigkeit hängen.

                Kommentar


                  #9
                  Wie sieht denn das WireGate Plugin konkret aus? Und funktioniert das Diagramm im WireGate direkt?
                  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


                    #10
                    Servus Chris,

                    gerade habe ich dieses Plugin am Laufen:

                    PHP-Code:
                    # Demo-Plugin Grafiken in RRD speichern
                    # V1.0 2010-03-19

                    # Eigenen Aufruf-Zyklus auf 300 Sekunden (Default globales RRD-Intervall) setzen
                    $plugin_info{$plugname.'_cycle'} = $wg_config{''}{'rrd_interval'};

                    # Luftfeuchte Bad

                    # Einen Wert der Luftfeuchte von der Gruppenadresse 5/2/79 in einem rrd speichern
                    # Luftfeuchte_Bad ist ein beliebiger Text; keine Umlaute oder Sonderzeichen (/\: etc)
                    # und einmalig!
                    # Dann wird die Funktion knx_read mit der Gruppenadresse aufgerufen,
                    # hier max. 300 sek alt
                    # sonst wird ein Lesetelegramm abgesetzt und die Antwort abgewartet
                    # DPT5 = 1 Byte 0-100%, zwei Möglichkeiten:
                    # DPT angeben wie unten oder Gruppenadressen aus der ETS importieren, dann kann der Datentyp entfallen
                    # update_rrd("Luftfeuchte_Bad","",knx_read("5/2/79",300,5));  # Gruppenadresse, maxAlter, DPT

                    # Beispiel für Temperaturwert (DPT9/EIS5) von "externem" Sensor
                    update_rrd("Außentemperatur","",knx_read("2/0/1",60,9));

                    # Abgerufen können die Grafiken durch Modifikation der Grafik-URL eines vorhandenen
                    # 1-Wire Sensors werden: z.B. 28.0D22CB010000_temp.rrd im letzten Beispiel durch
                    # Temp_Kueche.rrd ersetzen. Gross/Kleinschreibung beachten!

                    # Wenn etwas im Plugin-Log stehen soll, kommentarzeichen # entfernen
                    # Ideal auch zur Debug-Ausgabe
                    return "Graphen wurden aktualisiert";
                    #Sonst 0 = Alles Ok, kein Logeintrag
                    return 0
                    Vorher hatte ich ein anderes versucht, bei dem war noch ein Config File dabei. Ergebnis beide male das gleiche.

                    Was meinst du damit, ob das Diagramm im Wiregate direkt funktioniert? Meinst du unter Sensoren/Werte konfigurieren? Da werden ja nur 1-Wire Sensoren angezeigt.

                    Kommentar


                      #11
                      Eine Möglichkeit die mir noch einfällt: sende den Wert den du in das rrd schreiben möchtest mal zyklisch durch die KNX Komponente alle 5min auf den Bus.
                      Gruß
                      Andi

                      Kommentar


                        #12
                        Der Wert kommt vom Außentemperatursensor der Heizung immer bei Wertänderung. Im Logfile des anderen Plugins das ich verwendet habe konnte man schön sehen, dass ein aktueller Wert angkommt.

                        Kommentar


                          #13
                          So, ich habe jetzt nochmal das andere Plugin ausprobiert.
                          Folgender Code
                          Plugin:
                          Code:
                          #############################################################################
                          # Plugin: Aufzeichnung von Werten in RRDs
                          # V1.0 2013-05-19
                          # Copyright: Marcus Lichtenberger (marcus@lichtenbergers.at)
                          # License: GPL (v3)
                          #
                          #############################################################################
                          #
                          # Plugin zur Aufzeichnung von Werten (z.B. Temperaturen) die über GAs
                          # empfangen werden in RRDs.
                          #
                          #############################################################################
                          #
                          # Änderungshistorie:
                          # 20130519 - mclb - Erstellung
                          #
                          #############################################################################
                          #
                          # Offene Punkte:
                          # - dzt. keine bekannt
                          #
                          #############################################################################
                          #
                          # Abhängigkeiten:
                          # - keine
                          #
                          #############################################################################
                          #
                          # plugin_info-Werte
                          # - Für jeden aufzuzeichnenden Wert einen plugin_info-Wert damit der Wert gemerkt bleibt.
                          #
                          #############################################################################
                          
                          # Konstanten für Aufrufart
                          use constant EVENT_RESTART => 'restart';
                          use constant EVENT_MODIFIED => 'modified';
                          use constant EVENT_BUS => 'bus';
                          use constant EVENT_SOCKET => 'socket';
                          use constant EVENT_CYCLE => 'cycle';
                          
                          # Variablendefinitionen
                          my $show_debug = 1; # switches debug information that will be shown in the log
                          my $gs_wert;
                          my @gt_werte;
                          
                          # Read config file in conf.d
                          my $confFile = '/etc/wiregate/plugin/generic/conf.d/'.basename($plugname,'.pl').'.conf';
                          if (! -f $confFile)
                          {
                            plugin_log($plugname, " no conf file [$confFile] found.");
                            return "no conf file [$confFile] found.";
                          }
                          else
                          {
                            plugin_log($plugname, " reading conf file [$confFile].") if( $show_debug > 1);
                            open(CONF, $confFile);
                            my @lines = <CONF>;
                            close($confFile);
                            my $result = eval("@lines");
                            if( $show_debug > 1 )
                            {
                              ($result) and plugin_log($plugname, "conf file [$confFile] returned result[$result]");
                            }
                            if ($@)
                            {
                              plugin_log($plugname, "conf file [$confFile] returned:") if( $show_debug > 1 );
                              my @parts = split(/\n/, $@);
                              if( $show_debug > 1 )
                              {
                                plugin_log($plugname, "--> $_") foreach (@parts);
                              }
                            }
                          }
                          
                          # Ruf mich auf, wenn ich einen der Werte erhalte
                          foreach $gs_wert (@gt_werte) {
                           if ($gs_wert->{gaWert} ne "") {
                            $plugin_subscribe{$gs_wert->{gaWert}}{$plugname} = 1;
                           }
                          }
                          # Außerdem ruf mich alle 5 Minuten zum Wegschreiben der Werte auf
                          $plugin_info{$plugname.'_cycle'} = 300;
                          
                          # Aus welchem Grund läuft das Plugin gerade
                          my $gv_event=undef;
                          if (!$plugin_initflag) {
                           $gv_event = EVENT_RESTART;            # Restart des daemons / Reboot
                          } elsif ($plugin_info{$plugname.'_lastsaved'} > $plugin_info{$plugname.'_last'}) {
                           $gv_event = EVENT_MODIFIED;        # Plugin modifiziert
                          } elsif (%msg) {
                           $gv_event = EVENT_BUS;                # Bustraffic
                          } elsif ($fh) {
                           $gv_event = EVENT_SOCKET;            # Netzwerktraffic
                          } else {
                           $gv_event = EVENT_CYCLE;            # Zyklus
                          }
                          
                          plugin_log($plugname, '0 - Aufrufgrund: '.$gv_event) if ($show_debug > 0);
                          
                          if ($gv_event eq EVENT_RESTART) {
                          } elsif ($gv_event eq EVENT_MODIFIED) {
                          } elsif ($gv_event eq EVENT_BUS) {
                           # Merke dir den aktuellen Wert
                           foreach $gs_wert (@gt_werte) {
                            if ($msg{'apci'} eq "A_GroupValue_Write" and $msg{'dst'} eq $gs_wert->{gaWert}) {
                             plugin_log($plugname, '1 - GA: '.$gs_wert->{gaWert}.', Wert: '.$msg{'value'}) if ($show_debug > 0);
                             $plugin_info{$plugname.'_'.$gs_wert->{id}} = $msg{'value'};
                            }
                           }
                          } elsif ($gv_event eq EVENT_SOCKET) {
                          } elsif ($gv_event eq EVENT_CYCLE) {
                           # Schreibe die aktuellen Werte weg ins RRD (alle 5 Minuten)
                           foreach $gs_wert (@gt_werte) {
                            plugin_log($plugname, '2 - GA: '.$gs_wert->{gaWert}.', Wert: '.$plugin_info{$plugname.'_'.$gs_wert->{id}}) if ($show_debug > 0);
                            update_rrd($gs_wert->{rrdName},"",$plugin_info{$plugname.'_'.$gs_wert->{id}});
                           }
                          }
                          
                          return 'Aufzeichnung erfolgreich erledigt!';
                          Config:
                          Code:
                          # [BOF /etc/wiregate/plugin/generic/conf.d/rrd_aufzeichnen.conf]
                          
                          # Alle Werte
                          # id: ID des Wertes (evtl. für Variablen, die benötigt werden)
                          # name: Name, falls irgendwelche Meldungen ausgegeben werden
                          # gaWert: GA des Wertes
                          # rrdName: Name des RRDs das mit dem Wert befüllt werden soll
                          push @gt_werte, { id => "Außentemp", name => "Außentemperatur", gaWert => "2/0/1", rrdName => "Temp_Außen" };
                          push @gt_werte, { id => "SoleEin", name => "Soleeintritt", gaWert => "2/0/6", rrdName => "Temp_Sole_Ein" };
                          push @gt_werte, { id => "WWTemp", name => "Warmwassertemper", gaWert => "2/0/4", rrdName => "Temp_WW" };
                          push @gt_werte, { id => "Vorlauf", name => "Vorlauftemperatur", gaWert => "2/0/5", rrdName => "Temp_Vorlauf" };
                          push @gt_werte, { id => "Rücklauf", name => "Rücklauftemperatur", gaWert => "2/0/2", rrdName => "Temp_Rücklauf" };
                          #push @gt_werte, { id => "HELLIGKEIT", name => "Helligkeit", gaWert => "4/2/3", rrdName => "Helligkeit_Aussen" };
                          #push @gt_werte, { id => "GARAGE_OST", name => "Garagentor geöffnet OST", gaWert => "2/3/0", rrdName => "My_Garagentor_Ost" };
                          #push @gt_werte, { id => "GARAGE_WEST", name => "Garagentor geöffnet WEST", gaWert => "2/3/1", rrdName => "My_Garagentor_West" };
                          
                          # Aktiviert Debug-Meldungen
                          $show_debug = 1;  # switches debug information that will be shown in the log
                          
                          # [EOF /etc/wiregate/plugin/generic/conf.d/rrd_aufzeichnen.conf]
                          Auszug aus der Plugin Logfile:


                          2016-07-01 22:24:10.073,rrd_aufzeichnen.pl,Warning: Constant subroutine main::EVENT_RESTART redefined at /usr/share/perl/5.10/constant.pm line 115. 2016-07-01 22:24:10.074,rrd_aufzeichnen.pl,Warning: Constant subroutine main::EVENT_MODIFIED redefined at /usr/share/perl/5.10/constant.pm line 115. 2016-07-01 22:24:10.074,rrd_aufzeichnen.pl,Warning: Constant subroutine main::EVENT_BUS redefined at /usr/share/perl/5.10/constant.pm line 115. 2016-07-01 22:24:10.075,rrd_aufzeichnen.pl,Warning: Constant subroutine main::EVENT_SOCKET redefined at /usr/share/perl/5.10/constant.pm line 115. 2016-07-01 22:24:10.076,rrd_aufzeichnen.pl,Warning: Constant subroutine main::EVENT_CYCLE redefined at /usr/share/perl/5.10/constant.pm line 115. 2016-07-01 22:24:10.084,rrd_aufzeichnen.pl,0 - Aufrufgrund: cycle 2016-07-01 22:24:10.084,rrd_aufzeichnen.pl,2 - GA: 2/0/1, Wert: 18.6 2016-07-01 22:24:10.085,rrd_aufzeichnen.pl,2 - GA: 2/0/6, Wert: 17.4 2016-07-01 22:24:10.085,rrd_aufzeichnen.pl,2 - GA: 2/0/4, Wert: 41.8 2016-07-01 22:24:10.086,rrd_aufzeichnen.pl,2 - GA: 2/0/5, Wert: 22.7 2016-07-01 22:24:10.087,rrd_aufzeichnen.pl,2 - GA: 2/0/2, Wert: 23.8 2016-07-01 22:24:10.090,rrd_aufzeichnen.pl,Aufzeichnung erfolgreich erledigt!,0s,

                          Also man sieht auf jeden Fall, dass Werte vom Bus gelesen werden und diese auch richtig formatiert sind. Können die Warnungen ein Problem sein?
                          Von den fünf konfigurierten RRD funktionieren nur zwei, nämlich Temp_Sole_ein und Temp_WW. Sämtlich GA`s hab ich nochmal im Wiregate kontrolliert, sind richtig angelegt.

                          Kommentar


                            #14
                            Zitat von Donnerknall Beitrag anzeigen
                            Was meinst du damit, ob das Diagramm im Wiregate direkt funktioniert? Meinst du unter Sensoren/Werte konfigurieren? Da werden ja nur 1-Wire Sensoren angezeigt.
                            Nun, ich meinte damit, dass wenn Du über http://wiregate/drraw/drraw.pl einen neuen Graphen anlegst, ob der a) auch in der Liste auftaucht und b) entsprechend mit Daten befüllt ist.

                            Wenn a) und b) nicht gegeben sind, kann die CV auch nichts machen, dann liegt das an der Befüllung.
                            Wenn drraw einen ordentlichen Graphen hin bekommt, müssen wir hier weiter suchen.
                            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


                              #15
                              Hallo
                              Donnerknall
                              Nutze das Plugin aus deinen Beitrag #10 und ersetze
                              $plugin_info{$plugname.'_cycle'} = $wg_config{''}{'rrd_interval'};
                              mit $plugin_info{$plugname.'_cycle'} = 60;

                              Schaue nach einer Wartezeit dann auf die Seite wo die 1Wire Sensoren konfiguriert werden,
                              ganz unten steht Diagrammgenerator, klicke auf den Button daneben dann öffnet sich der Diagrammgenerator.
                              Dort muss dann deine rrd zu finden sein, wenn nicht kann sie auch nicht in der CV dargestellt werden.
                              Gruß NetFritz
                              KNX & Wago 750-849 ,Wiregate u. Cometvisu, iPad 3G 64GB.
                              WP Alpha-Innotec WWC130HX (RS232-Moxa-LAN),Solaranlage für Brauchwasser und Heizung.
                              PV-Anlage = SMA Webbox2.0 , SunnyBoy 4000TL, Sharp 4kWP

                              Kommentar

                              Lädt...
                              X