Ankündigung

Einklappen
Keine Ankündigung bisher.

Brenner-Einschaltdauer in ein RRD

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

  • JuMi2006
    antwortet
    Guck mal was http://wiregatexxx/busmonitor.cgi sagt.
    DPT richtig in der eibga.conf eingetragen ???

    Einen Kommentar schreiben:


  • johnnychicago
    antwortet
    Der Zähler an sich funktioniert hervorragend: heute früh hatte ich 42m16s auf der Uhr (laut dem Plugin Rückgabewert), und die 1611 zeigte 42m an (die ist nur minutengenau).

    Allerdings ist die Ausgabe der GA in der Cometvisu unsinnig - da wird wohl der DPT nicht richtig umgerechnet/ausgewertet.

    Einen Kommentar schreiben:


  • makki
    antwortet
    Also so falsch ist das nicht, mit ABSOLUTE*sekunden würde man halt noch Laufzeit/Aufrufunterschiede des Plugins komfortabel ausgleichen, ist im konkreten Fall aber vermutlich eher "kosmetik"

    Makki

    Einen Kommentar schreiben:


  • JuMi2006
    antwortet
    Ich seh den Fehler grad nicht, ist aber schon wieder 3 Monate her dass ich mich damit beschäftigt habe. Vielleicht kann noch jemand anderes mal raufgucken. Lass uns mal noch ein paar Werte sammeln. Oder mal ein simples Plugin mit my $value = knx_read($ga,0,$dpt); und gucken was das ausgibt...da bin ich grad unsicher.

    Das RRD wurde richtig angelegt, step = 3600 sek. und hat auch zweimal die Differenz zum Vorwert notiert. Wenn ich recht erinnere dann sollte:

    Differenz(rrd) = Differenz(zaehler)*step

    Damit das aber wiederum passt muss der Zählerwert mit step multipliziert werden bevor er ins rrd geschrieben wird. Basis ist immer 1 Sekunde.

    Richtig? Oder hab ich das jetzt vertüddelt?

    Einen Kommentar schreiben:


  • johnnychicago
    antwortet
    Zitat von JuMi2006 Beitrag anzeigen
    Hast Du die GA in der eibga.conf entsprechend dem DPT angelegt?
    Nein, das hatte ich vergessen. in der linknx.xml war's, in der Visu auch. Ist jetzt aber auch in der eibga.conf

    Hilfreich wäre ein Auszug aus rrdtool info /var/www/rrd/filename.rrd oder sogar rrdtool fetch /var/www/rrd/filename.rrd AVERAGE
    info:
    Code:
    filename = "/var/www/rrd/hours_burner_60.rrd"
    rrd_version = "0003"
    step = 3600
    last_update = 1346434511
    ds[value].type = "COUNTER"
    ds[value].minimal_heartbeat = 4200
    ds[value].min = 0,0000000000e+00
    ds[value].max = 1,0000000000e+10
    ds[value].last_ds = "100800"
    ds[value].value = 0,0000000000e+00
    ds[value].unknown_sec = 0
    rra[0].cf = "AVERAGE"
    rra[0].rows = 365
    rra[0].cur_row = 89
    rra[0].pdp_per_row = 1
    rra[0].xff = 5,0000000000e-01
    rra[0].cdp_prep[0].value = NaN
    rra[0].cdp_prep[0].unknown_datapoints = 0
    rra[1].cf = "AVERAGE"
    rra[1].rows = 300
    rra[1].cur_row = 224
    rra[1].pdp_per_row = 7
    rra[1].xff = 5,0000000000e-01
    rra[1].cdp_prep[0].value = 0,0000000000e+00
    rra[1].cdp_prep[0].unknown_datapoints = 0
    fetch:
    Code:
                              value
    1346349600: 0,0000000000e+00
    1346353200: 0,0000000000e+00
    1346356800: 0,0000000000e+00
    1346360400: 0,0000000000e+00
    1346364000: 0,0000000000e+00
    1346367600: 0,0000000000e+00
    1346371200: 0,0000000000e+00
    1346374800: 0,0000000000e+00
    1346378400: 0,0000000000e+00
    1346382000: 0,0000000000e+00
    1346385600: 0,0000000000e+00
    1346389200: 2,9491525424e+01
    1346392800: 1,2132553944e+06
    1346396400: 0,0000000000e+00
    1346400000: 0,0000000000e+00
    1346403600: 0,0000000000e+00
    1346407200: 0,0000000000e+00
    1346410800: 0,0000000000e+00
    1346414400: 0,0000000000e+00
    1346418000: 0,0000000000e+00
    1346421600: 0,0000000000e+00
    1346425200: 0,0000000000e+00
    1346428800: 0,0000000000e+00
    1346432400: 0,0000000000e+00
    1346436000: nan

    Zeigt das Pluginlog nicht die Laufzeit an?
    Stimmt, tut es. Da stehen 0:26:4.

    Morgen früh weiss ich welche Zeit die richtige ist (wenn der Brenner heute nicht mehr anspringen sollte), weil die 1611 einen Tageszähler hat.

    Einen Kommentar schreiben:


  • JuMi2006
    antwortet
    Das 1440er ist klar, da musst du einmal 24 Stunden warten, bzw. aktualisiert sich das Nachts um 2.00 Uhr. Der brauch erstmal einen ganzen Zyklus. -> Bitte frag nicht nach Details

    Hast Du die GA in der eibga.conf entsprechend dem DPT angelegt?
    Hilfreich wäre ein Auszug aus rrdtool info /var/www/rrd/filename.rrd oder sogar rrdtool fetch /var/www/rrd/filename.rrd AVERAGE

    Ehrlich gesagt weiß ich jetzt nicht was der DPT genau angibt, da kann man auch noch mit anderen experimentieren. Soweit ich das im Kopf habe werden die immer mit den Sekunden gefüttert aber vielleicht kann da jemand anderes was zu sagen.

    Zeigt das Pluginlog nicht die Laufzeit an?

    Einen Kommentar schreiben:


  • johnnychicago
    antwortet
    Hallo JuMi2006,

    Hat mit dem ersten Test etwas gedauert - so sehr oft wird der Brenner momentan nicht gebraucht ;-)

    Das RRD-Plugin bleibt direkt hängen, weil es eine $debug Variable nicht kennt. Die habe ich dann mit my $debug="0" initialisiert.

    Der Brenner lief heute früh einmal an und hatte laut der GA eine Brenndauer von 28 - ich nehme an, das waren Minuten, und das ist prinzipiell glaubhaft.

    Das rrd mit der Endung _60 wurde erstellt und zeigt einen entsprechenden Peak, das macht also auch Sinn. Allerdings peakt es bei 1200000, ich verstehe nicht ganz, welche Einheit das ist.

    Das _1440 rrd hat (noch) nichts.

    Einen Kommentar schreiben:


  • makki
    antwortet
    ABSOLUTE
    is for counters which get reset upon reading.
    statt COUNTER sollte bei einem festen Zyklus da auch klappen.
    Letztlich bleibt COMPUTE, das rrdtool kann in dem Bereich mehr als man denkt Aber lesen muss man selber..

    Makki

    Einen Kommentar schreiben:


  • JuMi2006
    antwortet
    Betriebsstundenzähler:
    Code:
    ###Betriebsstundenzaehler###
    
    # $reset = 1 -> Der Zaehler wird auf den den Startwert $reset_value gesetzt.
    # Dazu einmal Speichern und danach $reset wieder auf 0 setzen und speichern.
    # 
    # Das Plugin zeichnet die Betriebsdauer der $ga auf und kann mit zyklischem senden
    # der Quelladresse umgehen. 0 = Aus und 1 = An
    # 
    # Version: 0.1 (2012-07-04)
    # Lizenz: GPL
    # Autor: JuMi2006 (https://knx-user-forum.de)
    
    
    ###Konfiguration###
    $plugin_info{$plugname.'_cycle'} = 84600;
    my $ga = '1/1/10';  ###überwachen
    my $send_ga = '1/1/11; ###wert senden
    my $reset = '0';
    my $reset_value = '1234';
    
    
    ###Ende Konfiguration###
    
    
    ### Ab hier keine Aenderungen mehr ###
    
    my $time = time();
    my $diff;
    $plugin_subscribe{$ga}{$plugname} = 1;
    
    ### Reset
    if ($reset == 1)
    {
    $plugin_info{$plugname.'_bstunden'} = $reset_value;
    $plugin_info{$plugname.'_last-on'} = '0';
    $plugin_info{$plugname.'_status'} = '0';
    }
    
    else
    {
    
    ### Bei 1 und vorheriger Status = 1
    if ($msg{'apci'} eq "A_GroupValue_Write" && $msg{'dst'} eq $ga && $msg{'value'} == '1' && $plugin_info{$plugname.'_status'} == '1' )
    {
    if ($plugin_info{$plugname.'_last-on'} <= '0')
    {
    $diff = '0';
    }
    else
    {
    $diff = ($time - $plugin_info{$plugname.'_last-on'});
    }
    $plugin_info{$plugname.'_neustunden'} = ($plugin_info{$plugname.'_bstunden'} + $diff);
    $plugin_info{$plugname.'_bstunden'} = $plugin_info{$plugname.'_neustunden'};
    $plugin_info{$plugname.'_last-on'} = $time;
    $plugin_info{$plugname.'_status'} = '1';
    }
    else
    {}
    
    ### Bei 1 und vorheriger Status = 0
    if ($msg{'apci'} eq "A_GroupValue_Write" && $msg{'dst'} eq $ga && $msg{'value'} == '1' && $plugin_info{$plugname.'_status'} == '0' )
    {
    $diff = '0';
    $plugin_info{$plugname.'_neustunden'} = ($plugin_info{$plugname.'_bstunden'} + $diff);
    $plugin_info{$plugname.'_bstunden'} = $plugin_info{$plugname.'_neustunden'};
    $plugin_info{$plugname.'_last-on'} = $time;
    $plugin_info{$plugname.'_status'} = '1';
    }
    else
    {}
    
    ### Bei 0 und vorheriger Status = 1
    if ($msg{'apci'} eq "A_GroupValue_Write" && $msg{'dst'} eq $ga && $msg{'value'} == '0' && $plugin_info{$plugname.'_status'} == '1') 
    {
    my $diff = ($time - $plugin_info{$plugname.'_last-on'});
    $plugin_info{$plugname.'_neustunden'} = ($plugin_info{$plugname.'_bstunden'} + $diff);
    $plugin_info{$plugname.'_bstunden'} = $plugin_info{$plugname.'_neustunden'};
    $plugin_info{$plugname.'_status'} = '0';
    }
    }
    
    ### Ausgabe
    my $sec = int($plugin_info{$plugname.'_bstunden'});
    my $m = int $sec / 60;
    my $s = $sec - ($m * 60);
    my $h = int $m / 60;
    $m = $m - ($h * 60);
    
    knx_write($send_ga,$sec,6.020);
    return "$h:$m:$s";
    RRDs erstellen
    Code:
    #### COUNTER RRDs ERSTELLEN
    
    my $name = "Name" ; #### Name des RRDs
    my $ga = "0/0/0" ; #### Hier GA eintragen
    my $dpt = "6.020" ; 
    my $rrdpath = "/var/www/rrd"; #### default
    my @countermodes = (60,1440);	#### Stunde+Tag - Aufloesungen fuer COUNTER RRDs in Minuten (1440 = Tagesverbrauch)
    
    ###### HIER NIX MEHR ####
    
    $plugin_info{$plugname.'_cycle'} = 60;
    
    my $value = knx_read($ga,0,$dpt);
    &rrd_counter ($name,$value);
    
    ####
    sub rrd_counter
    {
    if ($debug==1){print ("COUNTER","\n")};
    foreach (@countermodes)
    {
    my $name = $_[0];
    my $value = $_[1];
    my $rrdname = $name."_".$_."\.rrd";
    my $rrdfile = $rrdpath."\/".$rrdname;
    unless (-e $rrdfile)
    {
    RRDs::create ($rrdfile,"DS:value:COUNTER:".(($_*60)+600).":0:10000000000","RRA:AVERAGE:0.5:1:365","RRA:AVERAGE:0.5:7:300","-s ".($_*60));
    }
    my $countervalue = int($value*$_*60);
    RRDs::update("$rrdfile", "N:$countervalue");
    }
    }
    Einen Haken hat die Sache, wenn Sie denn so ungetestet läuft. Der Betriebsstundenzähler mag es wenn der Zustand des Gerätes zyklisch gesendet wird, zumindest für die Verwendung beim RRD. Der Betriebsstundenzähler rechnet sonst erst nach einer Statusänderung (AN/AUS) die Laufzeit aus.

    Einen Kommentar schreiben:


  • JuMi2006
    antwortet
    Hier ungetestet weil ich den richtigen DPT nicht mehr finde
    Den muss ich nochmal raussuchen für die Betriebsstunden. Wird aber erst morgen was.

    Also dann das Plugin Betriebsstundenzähler installieren (mach ich morgen noch fertig mit senden auf Bus).

    Dann neues Plugin "Counter-RRD" oder so erstellen mit dem Code hier. Konfiguration müsste klar sein oder?

    Wie gesagt ist jetzt wirklich ungetestet - wichtig ist die GA auch in die eibga.conf einzutragen (Webmin).

    Code:
    #### COUNTER RRDs ERSTELLEN
    
    my $name = "Name" ; #### Name des RRDs
    my $ga = "0/0/0" ; #### Hier GA eintragen
    my $dpt = " " ; #### Hier DPT eintragen
    my $rrdpath = "/var/www/rrd"; #### default
    my @countermodes = (60,1440);	#### Aufloesungen fuer COUNTER RRDs in Minuten (1440 = Tagesverbrauch)
    
    ###### HIER NIX MEHR ####
    
    $plugin_info{$plugname.'_cycle'} = 60;
    
    my $value = knx_read($ga,0,$dpt);
    &rrd_counter ($name,$value);
    
    ####
    sub rrd_counter
    {
    if ($debug==1){print ("COUNTER","\n")};
    foreach (@countermodes)
    {
    my $name = $_[0];
    my $value = $_[1];
    my $rrdname = $name."_".$_."\.rrd";
    my $rrdfile = $rrdpath."\/".$rrdname;
    unless (-e $rrdfile)
    {
    RRDs::create ($rrdfile,"DS:value:COUNTER:".(($_*60)+600).":0:10000000000","RRA:AVERAGE:0.5:1:365","RRA:AVERAGE:0.5:7:300","-s ".($_*60));
    }
    my $countervalue = int($value*$_*60);
    RRDs::update("$rrdfile", "N:$countervalue");
    }
    }

    Einen Kommentar schreiben:


  • johnnychicago
    antwortet
    Stunde, Tag, Woche, Monat?

    Einen Kommentar schreiben:


  • JuMi2006
    antwortet
    Achja das war ich noch schuldig wird nachgereicht.

    Mit dem Counter ist eigentlich relativ einfach, welche Intervalle interessieren dich denn? Stunde und Tag?

    Einen Kommentar schreiben:


  • johnnychicago
    antwortet
    Zitat von JuMi2006 Beitrag anzeigen
    Ja das geht

    EDIT: Total übersehen, eine Summenbildung ist so einfach nicht möglich. Aber Du könntest Dir mit einem Betriebsstundenzähler (hab ich als Plugin ins SVN eingecheckt) und einem manuell angelegten COUNTER RRD sowas basteln. Damit würde das RRD immer die Differenz zum Vorwert addieren und nach einem bestimmten Zeitpunkt (z.B. 1 Tag oder 1 Stunde) die Laufzeit schreiben. Man könnte dann im Plugin sogar einen Multiplikator einbauen (1h Brenner = 0,33l Öl).
    Das "normale" RRD wäre nichts weiter als die Anzeige AN/AUS.
    Deinen Betriebsstundenzähler habe ich gefunden, danke. Aber wie ich manuell ein counter rrd anlege, und da dann einen Wert reinpacke, das überblicke ich jetzt noch nicht. Dein Plugin erwähnt ausserdem, dass es keine Ausgabe in eine GA gibt.

    Einen Kommentar schreiben:


  • JuMi2006
    antwortet
    Ja das geht

    EDIT: Total übersehen, eine Summenbildung ist so einfach nicht möglich. Aber Du könntest Dir mit einem Betriebsstundenzähler (hab ich als Plugin ins SVN eingecheckt) und einem manuell angelegten COUNTER RRD sowas basteln. Damit würde das RRD immer die Differenz zum Vorwert addieren und nach einem bestimmten Zeitpunkt (z.B. 1 Tag oder 1 Stunde) die Laufzeit schreiben. Man könnte dann im Plugin sogar einen Multiplikator einbauen (1h Brenner = 0,33l Öl).
    Das "normale" RRD wäre nichts weiter als die Anzeige AN/AUS.

    Einen Kommentar schreiben:


  • johnnychicago
    hat ein Thema erstellt [wiregate] Brenner-Einschaltdauer in ein RRD.

    Brenner-Einschaltdauer in ein RRD

    Hallo --

    Mein 'klassischer' einstufiger Ölbrenner wird von einer UVR1611 gesteuert, die über das CAN-BC Modul am Bus hängt.

    Da der Ölverbrauch (gemessen) einigermassen proportional zur Brenndauer ist, und bei eingeschaltetem Brenner eine DPT1-GA von 0 auf 1 gesetzt wird, würde ich das Event gerne in einem RRD erfassen, und somit Einschaltdauer/Ölverbrauch auf Tag/Woche/Monat sehen können.

    Nur bin ich momentan etwas verwirrt, was das RRD angeht. Ich bin zwar mit Temperaturen, Prozentwerten etc vertraut, aber kann ein RRD einfach einen 0/1 Wert sehen, und kann es diesen Wert aggregieren? Oder bin ich da ganz auf dem falschen Dampfer und ich sollte das anders lösen?
Lädt...
X