Ankündigung

Einklappen
Keine Ankündigung bisher.

Frage zu Diagramm

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

    Frage zu Diagramm

    Hallo Zusammen

    Ich habe jeweils den Totalwert (KWh) meines Stromzählers auf dem Bus (alle 5min oder so).
    Wenn ich den nun in ein RRD schreibe und per Diagramm darstelle, habe ich eine stetig steigende Kurve.
    Ich möchte jedoch die Differenz zwischen den letzten 2 werten visualisieren, also zb den Verbrauch innert 15min oder einer Stunde.
    Damit ich sehen kann zu welcher Tageszeit wieviel Verbrauch da ist.

    Kann ich das beim Diagramm einstellen, oder muss ich da was im Plugin machen?

    Ich habe auch die aktuelle Leistung auf dem Bus, die variert jedoch relativ stark. Ich glaueb wenn ich die alle 5min in ein RRD schreibe ist das nicht wirklich aussagekräftig.

    Grüsse
    Iwan

    #2
    Zitat von iwan Beitrag anzeigen
    Kann ich das beim Diagramm einstellen, oder muss ich da was im Plugin machen?
    Das geht nicht im Diagramm, da muss das Plugin ran. Vielleicht findest du etwas im Plugin-Repository oder hier per Suchfunktion.
    Grüße
    Michael

    Kommentar


      #3
      Hallo iwan,

      das Zauberwort ist COUNTER-RRD: https://knx-user-forum.de/forum/supp...wiregate/25541

      vG
      Wolfgang

      Kommentar


        #4
        Für die Darstellung von Counter-RRD ist dann z.B. das diagram-plugin mit "steps=true" geeignet. Dann hast Du Balken anstatt der Kurve. Jedoch ist die Darstellung noch nicht ganz richtig (siehe hier).

        Kommentar


          #5
          Hallo

          Merci für die Info, ich habe das jetzt mal mit einem Aufrufzyklus von 60min eingerichtet.

          Sehe ich das richtig, dass du in deinem Beispiel beim Plugin den Aufrufzyklus auf 24h (1440s) gesetzt hast und das funktioniert?

          Ich hab momentan das Problem, dass es nicht klappt wenn ich eien Zykluszeit von 15min setzte bei 5min jedoch schon (siehe Hier)

          Gruss
          Iwan

          Kommentar


            #6
            Zitat von iwan Beitrag anzeigen
            Sehe ich das richtig, dass du in deinem Beispiel beim Plugin den Aufrufzyklus auf 24h (1440s) gesetzt hast und das funktioniert?
            Ja, es ist ein Counter mit 1440s. Jedoch wird das rrd von einem externen Skript gefüttert (also nicht von einem Wiregate Plugin). Aber in dem von Dir verlinkten Thread hast Du ja mittlerweile eine Antwort auf das Problem erhalten.

            Kommentar


              #7
              Hallo Wolfgang

              Vielen Dank für den Hinweis!

              Muss ich jetzt das RRD-Konstrukt noch anlegen oder ist das schon so vorhanden resp. muss ich einfach ein weiterer parameter "COUNTER" dem update_rrd() hinzufügen?

              Iwan

              Kommentar


                #8
                Hallo iwan,

                mittlerweilen habe ich mein Plugin ein wenig ergänzt:
                Code:
                # return 0;
                # COMPILE_PLUGIN
                
                
                my $rrdFile_15min="/var/www/rrd/Gaszaehler_15min.rrd";
                my $rrdFile_1h="/var/www/rrd/Gaszaehler_1h.rrd";
                my $rrdFile_1d="/var/www/rrd/Gaszaehler_1d.rrd";
                
                my $rrd_15min="Gaszaehler_15min";
                my $rrd_1h="Gaszaehler_1h";
                my $rrd_1d="Gaszaehler_1d";
                
                
                my $Gaszaehler_ga="15/2/50";
                my $Gasvolumen_ga="15/2/52";
                
                $plugin_info{$plugname . '_cycle'} = 300; # Aufrufzyklus - 5 Minuten
                
                
                if ($msg{'apci'} ne "A_GroupValue_Write") { # zyklisch
                                if ($msg{'dst'} ne $Gaszaehler_ga) {
                                $plugin_subscribe{$Gaszaehler_ga}{$plugname} = 1;
                                }
                               }
                
                
                  # RRD ggf. anlegen
                  if (!-e $rrdFile_15min)
                  {
                    RRDs::create($rrdFile_15min,
                      '--step' => 900,  # 15 Minuten
                      'DS:value:COUNTER:2700:0:2147483647',
                      # 15 min (für 7,5 d)      1 h (für 35 d)           24 h (für 5 y)            7 d (für 25 y)
                      'RRA:AVERAGE:0.5:1:720', 'RRA:AVERAGE:0.5:4:840', 'RRA:AVERAGE:0.5:96:1826', 'RRA:AVERAGE:0.5:672:1300',
                      'RRA:MIN:0.5:1:720',     'RRA:MIN:0.5:4:840',     'RRA:MIN:0.5:96:1826',     'RRA:MIN:0.5:672:1300',
                      'RRA:MAX:0.5:1:720',     'RRA:MAX:0.5:4:840',     'RRA:MAX:0.5:96:1826',     'RRA:MAX:0.5:672:1300'
                    );
                
                    if (RRDs::error) {
                      plugin_log($plugname, "Create COUNTER-RRDs failed for $rrdFile_15min: ".RRDs::error);
                    } else {
                      plugin_log($plugname, "Created COUNTER-RRD for $rrdFile_15min");
                    }
                  }
                 # RRD für 1 Stunde
                  if (!-e $rrdFile_1h)
                  {
                    RRDs::create($rrdFile_1h,
                      '--step' => 3600,  # 1 Stunde
                      'DS:value:COUNTER:2700:0:2147483647',
                      # 1 h (für 35 d)           24 h (für 5 y)            7 d (für 25 y)
                      'RRA:AVERAGE:0.5:1:840', 'RRA:AVERAGE:0.5:24:1826', 'RRA:AVERAGE:0.5:168:1300',
                      'RRA:MIN:0.5:1:840',     'RRA:MIN:0.5:24:1826',     'RRA:MIN:0.5:168:1300',
                      'RRA:MAX:0.5:1:840',     'RRA:MAX:0.5:24:1826',     'RRA:MAX:0.5:168:1300'
                    );
                
                    if (RRDs::error) {
                      plugin_log($plugname, "Create COUNTER-RRDs failed for $rrdFile_1h: ".RRDs::error);
                    } else {
                      plugin_log($plugname, "Created COUNTER-RRD for $rrdFile_1h");
                    }
                  }
                 # RRD für 1 Tag
                  if (!-e $rrdFile_1d)
                  {
                    RRDs::create($rrdFile_1d,
                      '--start' => -86410,
                      '--step' => 86400,  # 1 Tag
                      'DS:value:COUNTER:2700:0:2147483647',
                      # 24 h (für 5 y)            7 d (für 25 y)
                      'RRA:AVERAGE:0.5:1:1826', 'RRA:AVERAGE:0.5:672:1300',
                      'RRA:MIN:0.5:1:1826',     'RRA:MIN:0.5:672:1300',
                      'RRA:MAX:0.5:1:1826',     'RRA:MAX:0.5:672:1300'
                    );
                
                    if (RRDs::error) {
                      plugin_log($plugname, "Create COUNTER-RRDs failed for $rrdFile_1d: ".RRDs::error);
                    } else {
                      plugin_log($plugname, "Created COUNTER-RRD for $rrdFile_1d");
                    }
                  }
                
                #Zählerstand auslesen
                        my $Zaehlerstand=knx_read($Gaszaehler_ga,0,13);
                
                #RRDs schreiben und Zählerstand auf den Bus
                        my $count_15min=(time()-900).":".($Zaehlerstand * 9);
                        my $count_1h=(time()-3600).":".($Zaehlerstand * 36);
                        my $count_1d=(time()-86400).":".($Zaehlerstand * 864);
                        RRDs::update("$rrdFile_15min","$count_15min");
                        RRDs::update("$rrdFile_1h","$count_1h");
                        RRDs::update("$rrdFile_1d","$count_1d");
                        knx_write($Gasvolumen_ga,$Zaehlerstand/100,14);
                 
                  
                return;
                Ich lege ein Counter - RRD für 15min, 1h und 1-Tages - Werte an, jeweils für eine Periode zuvor wegen der Anzeige im RRD - Tool.

                Das Plugin wird alle 5 Minuten bzw. immer wenn ein neuer Zählerwert kommt aufgerufen.

                Muss ich jetzt das RRD-Konstrukt noch anlegen oder ist das schon so vorhanden resp. muss ich einfach ein weiterer parameter "COUNTER" dem update_rrd() hinzufügen?
                Das war IMHO ein Vorschlag für einen Patch gegen den wiregated. Soweit ich weis, ist dies noch nicht in den Code eingeflossen.

                vG
                Wolfgang

                Kommentar


                  #9
                  Hallo

                  Merci für den Input.

                  Ich habe das jetzt mal so eingerichtet und lasse das jetzt mal einen Tag laufen.

                  Code:
                  # return 0;
                  # COMPILE_PLUGIN
                   
                  my $rrdFile_15min="/var/www/rrd/Energie_12OG_15min.rrd";
                  my $rrdFile_1h="/var/www/rrd/Energie_12OG_1h.rrd";
                  my $rrdFile_1d="/var/www/rrd/Energie_12OG_1d.rrd";
                  my $rrd_15min="Energie_12OG_15min";
                  my $rrd_1h="Energie_12OG_1h";
                  my $rrd_1d="Energie_12OG_1d";
                   
                  my $Energie_ga="5/2/72";
                  #my $Gasvolumen_ga="15/2/52";
                  $plugin_info{$plugname . '_cycle'} = 300; # Aufrufzyklus - 5 Minuten
                   
                  if ($msg{'apci'} ne "A_GroupValue_Write") { # zyklisch
                                  if ($msg{'dst'} ne $Energie_ga) {
                                  $plugin_subscribe{$Energie_ga}{$plugname} = 1;
                                  }
                                 }
                   
                    # RRD ggf. anlegen
                    if (!-e $rrdFile_15min)
                    {
                      RRDs::create($rrdFile_15min,
                        '--step' => 900,  # 15 Minuten
                        'DS:value:COUNTER:2700:0:2147483647',
                        # 15 min (für 7,5 d)      1 h (für 35 d)           24 h (für 5 y)            7 d (für 25 y)
                        'RRA:AVERAGE:0.5:1:720', 'RRA:AVERAGE:0.5:4:840', 'RRA:AVERAGE:0.5:96:1826', 'RRA:AVERAGE:0.5:672:1300',
                        'RRA:MIN:0.5:1:720',     'RRA:MIN:0.5:4:840',     'RRA:MIN:0.5:96:1826',     'RRA:MIN:0.5:672:1300',
                        'RRA:MAX:0.5:1:720',     'RRA:MAX:0.5:4:840',     'RRA:MAX:0.5:96:1826',     'RRA:MAX:0.5:672:1300'
                      );
                      if (RRDs::error) {
                        plugin_log($plugname, "Create COUNTER-RRDs failed for $rrdFile_15min: ".RRDs::error);
                      } else {
                        plugin_log($plugname, "Created COUNTER-RRD for $rrdFile_15min");
                      }
                    }
                   # RRD für 1 Stunde
                    if (!-e $rrdFile_1h)
                    {
                      RRDs::create($rrdFile_1h,
                        '--step' => 3600,  # 1 Stunde
                        'DS:value:COUNTER:2700:0:2147483647',
                        # 1 h (für 35 d)           24 h (für 5 y)            7 d (für 25 y)
                        'RRA:AVERAGE:0.5:1:840', 'RRA:AVERAGE:0.5:24:1826', 'RRA:AVERAGE:0.5:168:1300',
                        'RRA:MIN:0.5:1:840',     'RRA:MIN:0.5:24:1826',     'RRA:MIN:0.5:168:1300',
                        'RRA:MAX:0.5:1:840',     'RRA:MAX:0.5:24:1826',     'RRA:MAX:0.5:168:1300'
                      );
                      if (RRDs::error) {
                        plugin_log($plugname, "Create COUNTER-RRDs failed for $rrdFile_1h: ".RRDs::error);
                      } else {
                        plugin_log($plugname, "Created COUNTER-RRD for $rrdFile_1h");
                      }
                    }
                   # RRD für 1 Tag
                    if (!-e $rrdFile_1d)
                    {
                      RRDs::create($rrdFile_1d,
                        '--start' => -86410,
                        '--step' => 86400,  # 1 Tag
                        'DS:value:COUNTER:2700:0:2147483647',
                        # 24 h (für 5 y)            7 d (für 25 y)
                        'RRA:AVERAGE:0.5:1:1826', 'RRA:AVERAGE:0.5:672:1300',
                        'RRA:MIN:0.5:1:1826',     'RRA:MIN:0.5:672:1300',
                        'RRA:MAX:0.5:1:1826',     'RRA:MAX:0.5:672:1300'
                      );
                      if (RRDs::error) {
                        plugin_log($plugname, "Create COUNTER-RRDs failed for $rrdFile_1d: ".RRDs::error);
                      } else {
                        plugin_log($plugname, "Created COUNTER-RRD for $rrdFile_1d");
                      }
                    }
                  #Zählerstand auslesen
                          my $Zaehlerstand=knx_read($Energie_ga,0,12);
                  #RRDs schreiben und Zählerstand auf den Bus
                          my $count_15min=(time()-900).":".($Zaehlerstand * 9);
                          my $count_1h=(time()-3600).":".($Zaehlerstand * 36);
                          my $count_1d=(time()-86400).":".($Zaehlerstand * 864);
                          RRDs::update("$rrdFile_15min","$count_15min");
                          RRDs::update("$rrdFile_1h","$count_1h");
                          RRDs::update("$rrdFile_1d","$count_1d");
                          #knx_write($Gasvolumen_ga,$Zaehlerstand/100,14);
                   
                   
                  return;
                  Energie statt Gas und das senden auf den Bus habe ich weggelassen.
                  Bei mir ist der Wert DPT 12 und nicht 13, das sollte aber nichts ausmachen oder?
                  Irgendwie blicke ich nicht durch was da genau beim "#RRDs schreiben" geschieht, aber muss ja auch nicht ;-)

                  Iwan

                  Kommentar


                    #10
                    Nur zur Info, das 24 h Diagramm siehst Du erst nach 48h (3 Datenpunkte um 0.00 UTC vorhanden).
                    Umgezogen? Ja! ... Fertig? Nein!
                    Baustelle 2.0 !

                    Kommentar


                      #11
                      Ich habe soeben gesehen, dass scheinbar Energie_12OG_1h.rrd nicht updated wird, kann das sein?

                      Iwan
                      Angehängte Dateien

                      Kommentar


                        #12
                        Ohne logs (plugin-log) sind wir blind.
                        Umgezogen? Ja! ... Fertig? Nein!
                        Baustelle 2.0 !

                        Kommentar


                          #13
                          Hallo

                          Ist nur was vom Erstellen der Files drin:
                          Code:
                          2013-11-05 21:33:23.837,Energie_12OG,Created COUNTER-RRD for /var/www/rrd/Energie_12OG_15min.rrd
                          2013-11-05 21:33:23.914,Energie_12OG,Created COUNTER-RRD for /var/www/rrd/Energie_12OG_1h.rrd
                          2013-11-05 21:33:23.928,Energie_12OG,Created COUNTER-RRD for /var/www/rrd/Energie_12OG_1d.rrd
                          Iwan

                          Kommentar


                            #14
                            Hallo iwan

                            Irgendwie blicke ich nicht durch was da genau beim "#RRDs schreiben" geschieht, aber muss ja auch nicht ;-)
                            Naja so ein wenig wäre nicht schlecht !

                            Bei einem Counter - RRD muß der Zählwert mit dem Intervall multipliziert werden. Also bei 15min Werten mit 900(sec) bei 1Stunden Werten mit 3600(sec) und bei 1Tag Werten mit 86400(sec).
                            In meinem Fall zählt der Zähler 1/100 Kubikmeter, deshalb die Werte /100.
                            In Deinem Fall wird der Elektrozähler ja ganze kWh ausgeben, damit sind Deine Werte den Faktor 100 zu klein

                            vG
                            Wolfgang

                            Kommentar


                              #15
                              Achso ;-)
                              Habs soeben angepasst und die RRD nochmals gelöscht...

                              Iwan

                              Kommentar

                              Lädt...
                              X