Fehler im EMGZ-Modul

Begonnen von Damian, 28 November 2012, 21:14:45

Vorheriges Thema - Nächstes Thema

Damian

                                                       

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
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

                                                       

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
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

rudolfkoenig

                                                   

> 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

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
 

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

                                                       

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
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

                                                       

> 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
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

rudolfkoenig

                                                   

> 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