Guck mal was http://wiregatexxx/busmonitor.cgi sagt.
DPT richtig in der eibga.conf eingetragen ???
Ankündigung
Einklappen
Keine Ankündigung bisher.
Brenner-Einschaltdauer in ein RRD
Einklappen
Dieses Thema ist geschlossen.
X
X
-
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:
-
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:
-
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:
-
Nein, das hatte ich vergessen. in der linknx.xml war's, in der Visu auch. Ist jetzt aber auch in der eibga.confZitat von JuMi2006 Beitrag anzeigenHast Du die GA in der eibga.conf entsprechend dem DPT angelegt?
info:Hilfreich wäre ein Auszug aus rrdtool info /var/www/rrd/filename.rrd oder sogar rrdtool fetch /var/www/rrd/filename.rrd AVERAGE
fetch: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
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
Stimmt, tut es. Da stehen 0:26:4.
Zeigt das Pluginlog nicht die Laufzeit an?
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:
-
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:
-
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:
-
ABSOLUTEstatt COUNTER sollte bei einem festen Zyklus da auch klappen.is for counters which get reset upon reading.
Letztlich bleibt COMPUTE, das rrdtool kann in dem Bereich mehr als man denkt
Aber lesen muss man selber..
Makki
Einen Kommentar schreiben:
-
Betriebsstundenzähler:
RRDs erstellenCode:###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";
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.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 Kommentar schreiben:
-
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:
-
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:
-
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.Zitat von JuMi2006 Beitrag anzeigenJa 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:
-
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:
-
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?Stichworte: -


Einen Kommentar schreiben: