Hallo,
seit Kurzem betreibe ich den Gaszähler EM1000-GZ.
Nun ist mir aufgefallen, dass der basis-Werte immer wieder auf 65536
gesetzt wird.
Wenn der Zähler kurz vom Strom genommen wird und wieder angeschlossen wird,
so wird der von mir zuvor gesetzter basis-Wert von Null wieder auf 65536
gesetzt. Dabei wurde FHEM *nicht* zwischendurch beendet. Auch CUM_DAY
ergibt dann keinen Sinn.
Ich denke, dass es nicht im Sinne des Erfinders ist, denn dann müsste man
jedes Mal, wenn man den Zähler kurz abschaltet, den basis-Wert wieder
neusetzen und die Logs korrigieren.
Hier die Log-Auszüge: nach 19:58 wurde Zähler abgeschaltet und um 19:58
wieder eingeschaltet.
2012-11-28_19:28:44 CUL_GZ CNT: 44 CUM: 14.700 5MIN: 0.080 TOP: 0.020
2012-11-28_19:33:45 CUL_GZ CNT: 45 CUM: 14.780 5MIN: 0.080 TOP: 0.020
2012-11-28_19:58:11 CUL_GZ CNT: 0 CUM: 655.360 5MIN: 0.000 TOP: 0.000
2012-11-28_20:00:06 CUL_GZ CNT: 0 CUM: 655.360 5MIN: 0.000 TOP: 0.000
2012-11-28_20:05:06 CUL_GZ CNT: 1 CUM: 655.410 5MIN: 0.050 TOP: 6.000
RAW
CNT: 13 CUM: 19 5MIN: 0 TOP: 192012-11-28 21:05:18
basis
655362012-11-28 19:58:11
cum_day
CUM_DAY: -649.270 CUM: 6.900 COST: -0.002012-11-28 00:04:51
current
02012-11-28 21:05:18
current_cnt
02012-11-28 21:05:18
peak
02012-11-28 21:05:18
peak_cnt
192012-11-28 21:05:18
seqno
132012-11-28 21:05:18
total
655.552012-11-28 21:05:18
total_cnt
192012-11-28 21:05:18
tsecs
13541331182012-11-28 21:05:18
Gruß
Damian
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Hallo Rudi,
ich nehme an, dass du der Autor der CUL_EM-Source bist. Ich habe nun die
entsprechende Stelle für das obige Problem gefunden:
# correct counter wraparound
if($total_cnt< $total_cnt_last) {
$basis_cnt += 65536;
$readings{basis} = $basis_cnt;
}
Hier gehst du von einem Übertrag aus. Jedoch wird jedes Mal, wenn man den
Zähler vom Strom nimmt, der *CUM-Wert *vom Sender auf Null gesetzt. Bei dir
entspricht der *CUM-Wert *der Variablen *$total_cnt.* Damit ist der Wert
von *$total_cnt* kleiner als der vorherige *$total_cnt_last* und das führt
dazu, dass der *Basis-Wert *um 65536 erhöht wird, was in diesem Fall falsch
ist.
Wundert mich, dass diese Problem noch keinem aufgefallen ist. Es sei denn
das Gaszähler erfährt nie eine Stromunterbrechung;)
Gruß
Damian
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
> ich nehme an, dass du der Autor der CUL_EM-Source bist. Ich habe nun die
> entsprechende Stelle für das obige Problem gefunden:
So einfach ist das nicht, ich habe keinen Gaszaehler :) Meine EM Zaehler
haengen am Stromnetz, und da gab es seit etlichen Jahren keine Unterbrechung.
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
>
> So einfach ist das nicht, ich habe keinen Gaszaehler :) Meine EM Zaehler
> haengen am Stromnetz, und da gab es seit etlichen Jahren keine
> Unterbrechung.
>
OK sehe ich ein.
Ich habe mit dem Gaszähler etwas rum experimentiert, nachdem ich ihn, wegen
Falschzählung umgebaut habe. Dennoch sollte man die Trennung vom Netz
berücksichtigen. Da könnte man z. B. einbauen:
if ($total_cnt< $total_cnt_last* && $total_cnt_last>65000*) {
$basis_cnt += 65536;
$readings{basis} = $basis_cnt;
}
wenn man davon ausgeht, dass innerhalb von fünf Minuten nicht mehr als 535
Impulse stattfinden.
Gruß
Damian
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Am Donnerstag, 29. November 2012 19:07:46 UTC+1 schrieb Damian:
>
>
>
>> So einfach ist das nicht, ich habe keinen Gaszaehler :) Meine EM Zaehler
>> haengen am Stromnetz, und da gab es seit etlichen Jahren keine
>> Unterbrechung.
>>
>
> OK sehe ich ein.
>
> Ich habe mit dem Gaszähler etwas rum experimentiert, nachdem ich ihn,
> wegen Falschzählung umgebaut habe. Dennoch sollte man die Trennung vom Netz
> berücksichtigen. Da könnte man z. B. einbauen:
>
> if ($total_cnt< $total_cnt_last* && $total_cnt_last>65000*) {
> $basis_cnt += 65536;
> $readings{basis} = $basis_cnt;
> }
> wenn man davon ausgeht, dass innerhalb von fünf Minuten nicht mehr als 535
> Impulse stattfinden.
>
> Gruß
>
> Damian
>
oder noch eleganter
if ($total_cnt< $total_cnt_last) {
* if ($total_cnt_last>65000) {*
* $basis_cnt += 65536;*
* $readings{basis} = $basis_cnt;*
* }*
* else*
* {*
* $basis_cnt += $total_cnt_last;*
* $readings{basis} = $basis_cnt;*
* }*
so würde man zumindest die letzten CUM-Werte noch retten.
Gruß
Damian
>
>
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
> if ($total_cnt< $total_cnt_last) {
> * if ($total_cnt_last>65000) {*
> * $basis_cnt += 65536;*
> * $readings{basis} = $basis_cnt;*
> * }*
> * else*
> * {*
> * $basis_cnt += $total_cnt_last;*
> * $readings{basis} = $basis_cnt;*
> * }*
>
> so würde man zumindest die letzten CUM-Werte noch retten.
>
>
habe mal eben die Änderung bei mir eingebaut und mit einer
Stromunterbrechung getestet
2012-11-29_21:27:49 CUL_GZ CNT: 44 CUM: 1.540 5MIN: 0.000 TOP: 0.000
2012-11-29_21:32:50 CUL_GZ CNT: 45 CUM: 1.540 5MIN: 0.000 TOP: 0.000
2012-11-29_21:37:51 CUL_GZ CNT: 46 CUM: 1.540 5MIN: 0.000 TOP: 0.000
2012-11-29_21:42:44 CUL_GZ CNT: 0 CUM: 1.540 5MIN: 0.000 TOP: 0.000
2012-11-29_21:47:45 CUL_GZ CNT: 1 CUM: 1.540 5MIN: 0.000 TOP: 0.000
2012-11-29_21:52:45 CUL_GZ CNT: 2 CUM: 1.540 5MIN: 0.000 TOP: 0.000
RAW
CNT: 2 CUM: 0 5MIN: 0 TOP: 02012-11-29 21:52:45
basis
1542012-11-29 21:42:44
cum_day
CUM_DAY: 10.000 CUM: 4.730 COST: 0.002012-11-29 00:00:53
current
02012-11-29 21:52:45
current_cnt
02012-11-29 21:52:45
peak
02012-11-29 21:52:45
peak_cnt
02012-11-29 21:52:45
seqno
22012-11-29 21:52:45
total
1.542012-11-29 21:52:45
total_cnt
02012-11-29 21:52:45
tsecs
13542223652012-11-29 21:52:45
Funktioniert wie gewünscht, sogar ohne Impulsverluste bei kurzer
Unterbrechung;)
Gruß
Damian
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
> so würde man zumindest die letzten CUM-Werte noch retten.
Danke, ich habe es (in eine etwas kuerzere Variante) eingecheckt.
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com