diff --git a/fhem/FHEM/15_CUL_EM.pm b/fhem/FHEM/15_CUL_EM.pm
index 166fa2d3c..44bde3cf4 100755
--- a/fhem/FHEM/15_CUL_EM.pm
+++ b/fhem/FHEM/15_CUL_EM.pm
@@ -23,7 +23,7 @@ CUL_EM_Initialize($)
$hash->{ParseFn} = "CUL_EM_Parse";
$hash->{AttrList} = "IODev do_not_notify:0,1 showtime:0,1 " .
"model:EMEM,EMWZ,EMGZ ignore:0,1 ".
- "maxPeak ".
+ "maxPeak CounterOffset ".
$readingFnAttributes;
$hash->{AutoCreate}=
{ "CUL_EM.*" => { GPLOT => "power8:Power,", FILTER => "%NAME:CNT.*" } };
@@ -98,7 +98,7 @@ CUL_EM_Parse($$)
# basis_cnt= correction to total (cumulated) value in ticks to account for
# counter wraparounds
# total = total (cumulated) value in device units
- # current = current value (average over latest 5 minutes) in device units
+ # current_cnt = current value (average over latest 5 minutes) in device units
# peak = maximum value in device units
my $seqno = hex($a[5].$a[6]);
@@ -177,8 +177,9 @@ CUL_EM_Parse($$)
$basis_cnt += ($total_cnt_last > 65000 ? 65536 : $total_cnt_last);
$readings{basis} = $basis_cnt;
}
+ my $counter_offset = AttrVal($n,"CounterOffset",0);
- my $total = ($basis_cnt+$total_cnt)*$corr2;
+ my $total = (($basis_cnt+$total_cnt)*$corr2)+$counter_offset;
my $current = $current_cnt*$corr1;
$val = sprintf("CNT: %d CUM: %0.3f 5MIN: %0.3f TOP: %0.3f",
@@ -350,7 +351,18 @@ CUL_EM_Parse($$)
For example if it's not possible to consume more than 40kW of
power set maxPeak to 40 to make the readings of the power meter
more robust.
+
+
+
CounterOffset
+ Specifies the difference between true (gas) meter value and
+ value reported by the EMGZ.
+ CounterOffset = true Value - Reading "total"
+ Example:
+
+ attr Gaszaehler CounterOffset 15427.434
+
+
@@ -372,16 +384,19 @@ CUL_EM_Parse($$)
define <name> CUL_EM <code> [corr1 corr2
CostPerUnit BasicFeePerMonth]
- <code> ist der Code, der am EM Gerät eingestellt wird. Gütige Werte sind
- 1 bis 12. 1-4 gilt für EMWZ, 5-8 für EMEM und 9-12 für EMGZ Geräte.
+ <code> ist der Code, der am EM Gerät eingestellt wird.
+ Gütige Werte sind 1 bis 12. 1-4 gilt für EMWZ, 5-8 für EMEM
+ und 9-12 für EMGZ Geräte.
+
+ corr1 ist der Kalibrierfaktor für den Momentanverbrauch,
+ corr2 für den Gesamtverbrauch.
- corr1 ist der Kalibrierfaktor für den Momentanverbrauch, corr2
- für den Gesamtverbrauch.
- für EMWZ Geräte wird die Umdrehungsgeschwindigkeit (U/kW)
des verwendeten Stromzählers (z.B. 150) für corr1 und 12 mal
diesen Wert für corr2 verwendet
- - für EMEM devices ist corr1 mit 0.01 und corr2 mit 0.001 anzugeben
+ - für EMEM devices ist corr1 mit 0.01 und corr2 mit 0.001
+ anzugeben
@@ -399,12 +414,12 @@ CUL_EM_Parse($$)
CUM_MONTH: 212.319 CUM: 60123.4 COST: 44.34
- Tipp: Das EMWZ Gerät kann so konfiguriert werden, dass es in der CUM Spalte
- des STATE Wertes den aktuellen Wert des Stromzählers anzeigt.
- Hierfür muss der aktuell am Stromzähler abgelesene Wert mit corr1 (U/kW)
- multipliziert werden und der CUM Rohwert aus der aktuellen fhem Messung ('reading')
- davon abgezogen werden. Dann muss dieser Wert als Basiswert des EMWZ Gerätes
- (im Beispiel emwz) gesetzt werden.
+ Tipp: Das EMWZ Gerät kann so konfiguriert werden, dass es in der CUM
+ Spalte des STATE Wertes den aktuellen Wert des Stromzählers anzeigt.
+ Hierfür muss der aktuell am Stromzähler abgelesene Wert mit corr1
+ (U/kW) multipliziert werden und der CUM Rohwert aus der aktuellen fhem
+ Messung ('reading') davon abgezogen werden. Dann muss dieser Wert als
+ Basiswert des EMWZ Gerätes (im Beispiel emwz) gesetzt werden.
@@ -432,7 +447,16 @@ CUL_EM_Parse($$)
Wenn es z.B. nicht möglich ist mehr zu 40kW Leistung
zu beziehen setzt man maxPeak auf 40 um das Auslesen des
Stromzählers robuster zu machen.
-
+
+ CounterOffset
+ Gibt den Unterschied zwischen dem tatsächlichen Zählerstand und
+ dem vom EMGZ gemeldeten Wert an.
+ CounterOffset = tatsächlicher Zählerstand - Reading "total"
+ Beispiel:
+
+ attr Gaszaehler CounterOffset 15427.434
+
+