Autor Thema: EM 1000-WZ Sprung im Absolutzählerstand  (Gelesen 1431 mal)

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 16914
Antw:EM 1000-WZ Sprung im Absolutzählerstand
« Antwort #15 am: 04 Dezember 2016, 11:12:46 »
Da es zu viele Fehlermeldungen gibt, und ich nicht in der Lage bin (fehlende Zeit/Debuginfo/etc) die Probleme zu fixen, habe ich die Version von 2016-08-19 wieder als die Neueste eingecheckt.
Falls jemand das Problem besser beheben kann, bitte melden.

Offline noansi

  • Full Member
  • ***
  • Beiträge: 402
Antw:EM 1000-WZ Sprung im Absolutzählerstand
« Antwort #16 am: 05 März 2017, 10:58:21 »
Hallo Rudolf,

ich denke Deine Änderung machte eine doppelte Korrektur beim device restart.
Beim EM1000-S, mit dem ich testen kann, wird beim device restart eine seqno von 1 mit dem ersten Telegramm und Zählwerten von 0 gesendet. Im laufenden Betrieb wird eine seqno von 2 - 255 gesendet.

Deine bisherige basis_cnt Korrektur kann beim device restart schon mal scheitern, bei ungünstigen Zählwerten.
Die seqno von 1 kann man jedoch ausnutzen, sofern das Telegramm empfangen wird.

Daher folgender Vorschlag:

    #
    # translate into device units
    #
    my $corr1 = $hash->{corr1}; # EMEM power correction factor
    my $corr2 = $hash->{corr2}; # EMEM energy correction factor
    my $counter_offset = AttrVal($n,"CounterOffset",0);
    my $basis_cnt = ReadingsVal($n, "basis", 0);
#    my $oldraw = ReadingsVal($n, "RAW", "");          # Forum #55626
#    if($oldraw) {
#      my @a = split(" ", $oldraw);
#      if($a[3] > $total_cnt) {
#        $basis_cnt += ($a[3]+$total_cnt)/$corr2;
#        readingsSingleUpdate($hash, "basis", $basis_cnt, 0);
#        Log 1, "$n was reset, old CUM $a[3], new CUM: $total_cnt, ".
#                        "new basis $basis_cnt";
#      }
#    }
...
    # correct counter wraparound and device power on reset
    if ($seqno != 1) {
      if($total_cnt < $total_cnt_last) {
        # check: real wraparound or reset only
        $basis_cnt += ($total_cnt_last > 65000 ? 65536 : $total_cnt_last); # even in case seqno 1 was not received try to correct a device restart
        $readings{basis} = $basis_cnt;
      }
    }
    else {
      # definitely a device reset
      $basis_cnt += $total_cnt_last;
      $readings{basis} = $basis_cnt;
    }

Gruß,

Ansgar.

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 16914
Antw:EM 1000-WZ Sprung im Absolutzählerstand
« Antwort #17 am: 05 März 2017, 15:55:11 »
Hallo Ansgar,

danke fuers Nachdenken. Ich habe Schwierigkeiten die Aenderungen einzuspielen, weil es nicht als Patch kommt, und vermutlich auf der alten Version aufbaut. Ein Patch gegen die aktuelle Version faende ich wichtig.

Weiterhin sollten das bitte jemand mit den erwaehnten Problem testen, bevor ich es Einchecke, will nicht die gleichen Fehler wiederholen.

Gruss,
  Rudi

Offline noansi

  • Full Member
  • ***
  • Beiträge: 402
Antw:EM 1000-WZ Sprung im Absolutzählerstand
« Antwort #18 am: 05 März 2017, 16:20:09 »
Hallo Rudi,

Zitat
Ich habe Schwierigkeiten die Aenderungen einzuspielen, weil es nicht als Patch kommt, und vermutlich auf der alten Version aufbaut.
ich habe die $Id: 15_CUL_EM.pm 12259 2016-10-03 14:01:05Z rudolfkoenig $ als Basis.

Ein weiterer Punkt ist die 65000 bei basis_cnt += ($total_cnt_last > 65000 ? 65536 : $total_cnt_last); die Du verwendet hast, um einen Überlauf von einem Neustart zu unterscheiden.
Es hängt an den counts/Einheit und dem laufenden Verbrauch (und ggf. noch nicht empfangener Telegramme) ab, ob die Differenz zu 655356 ausreichend ist, ob es zu Fehlern kommen kann.
Dazu fehlt mir einiges an Informationsbasis.

Daher kein Patch, sondern ein Vorschlag zum Testen, da ich auch nur ein anderes device aus der Familie zum Testen habe.

Zitat
Weiterhin sollten das bitte jemand mit den erwaehnten Problem testen, bevor ich es Einchecke, will nicht die gleichen Fehler wiederholen.

Sehe ich genauso.

Gruß, Ansgar.

Offline FhemPiUser

  • Sr. Member
  • ****
  • Beiträge: 573
Antw:EM 1000-WZ Sprung im Absolutzählerstand
« Antwort #19 am: 05 März 2017, 19:15:07 »
Zitat
Weiterhin sollten das bitte jemand mit den erwaehnten Problem testen, bevor ich es Einchecke, will nicht die gleichen Fehler wiederholen.

Bei mir läuft alles stabil, es treten keine Probleme mehr auf, daher habe ich keinen Bedarf für Codeänderungen...

ich hatte nur probleme mit sprüngen nach stromausfall, habe jetzt aber eine usv...
« Letzte Änderung: 05 März 2017, 19:43:07 von FhemPiUser »

Offline cyberdwarf

  • Jr. Member
  • **
  • Beiträge: 76
Antw:EM 1000-WZ Sprung im Absolutzählerstand
« Antwort #20 am: 05 März 2017, 19:29:26 »
Bei mir läuft auch alles stabil.

Grüße
Torsten
RPi+COC | RFXtrx433 | HMLAN
fht80b, FHT80TF, S300TH, hms100-tf, EMFM, EMWZ
 FS20:bs,di,piri,rsu,s4a,s6a,sm4,sm8,s8m,st,tfk
YCR-1000, ITL-230, HE877, HE878A, AB440
KD101, RGR918, TS15C_10, WGR918, WS2300
HM-LC-Sw1PBU-FM, HM-LC-BL1-FM
ZWAVE(Test)