FHEM Forum

FHEM - Hausautomations-Systeme => Homematic => Thema gestartet von: gichtl am 08 Juni 2021, 21:31:31

Titel: Reading text1 und text2 abgeschnitten bei HM-ES-TX-WM
Beitrag von: gichtl am 08 Juni 2021, 21:31:31
In den beiden Channels vom HM-ES-TX-WM sind die Readings text1 und text2 (für die OBIS-Kennzahlen) abgeschnitten.

text1 hatte ich auf 16.7.0 eingestellt, angezeigt wird für den Stromzähler (firmware 2.5 fir ES-IEC) jedoch nur:
text1  16.7.
text2  1.8.0


Und beim Gaszähler (firmware 1.2) anstatt 1.7.0 und 1.8.0
text1  1-0:1.7
text2  1-0:1.8


Vermutlich ist die hinterlegte Feldlänge zu kurz?
Titel: Antw:Reading text1 und text2 abgeschnitten bei HM-ES-TX-WM
Beitrag von: DeeSPe am 22 August 2022, 14:29:44
Ich würde gern hier auf diese Problematik noch einmal hinweisen.
Wie hier (https://forum.fhem.de/index.php/topic,128237.msg1231454.html#msg1231454) beschrieben habe ich auch das Problem die richtigen Text-Daten zu übergeben.
Gibt es evtl. eine alternative Lösung um das zu setzen?

Gruß
Dan
Titel: Aw: Reading text1 und text2 abgeschnitten bei HM-ES-TX-WM
Beitrag von: tndx am 08 September 2023, 21:50:54
Guten Abend,

gibt es hierfür mittlerweile eine Lösung? Ich habe nämlich das gleiche Problem.
Titel: Aw: Reading text1 und text2 abgeschnitten bei HM-ES-TX-WM
Beitrag von: noansi am 10 September 2023, 23:11:40
Hallo Zusammen,

ZitatHM-ES-TX-WM sind die Readings text1 und text2 (für die OBIS-Kennzahlen) abgeschnitten.

in 10_CUL_HM.pm unter "text"
    my $maxLineLen = $md =~ /^HM-(?:DIS-WM55|DIS-EP-WM55|PB-4DIS-WM|RC-DIS-H-X-EU)/s ? 12 : 16;
    my $s = 0x36;
    $l1 = '' if (!defined($l1));
    $l1 =~ s/\\_/ /g;
    $l1 = substr($l1."\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 0, $maxLineLen);
    $l1 =~ s/(.)/sprintf(" %02X:%02X",$s++,ord($1))/ge;
    if (defined($l2)) {
      $s = 0x46;
      $l2 =~ s/\\_/ /g;
      $l2 = substr($l2."\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 0, $maxLineLen); #HM-DIS-EP-WM55 Fw 1.2 has bug at character 9, it is set as the same as character 8 in channels 04 to 08 for text2
      $l2 =~ s/(.)/sprintf(" %02X:%02X",$s++,ord($1))/ge;
    }
    else {
      $l2 = '';
    }
würde die unterschiedlichen Längen der Textfelder beim Setzen berücksichtigen.

und
sub CUL_HM_4DisText($) {      # convert text for 4dis
  #text1: start at 54 (0x36) length 12 (0x0c)
  #text2: start at 70 (0x46) length 12 (0x0c)
  my ($hash)=@_;
  my $name = $hash->{NAME};
  my $devName = InternalVal($name,'device',$name);
  my $md      = defined $defs{$devName}{helper}{mId} ? $culHmModel->{$defs{$devName}{helper}{mId}}{name} : AttrVal($devName, 'model'  , '');
  my $maxLineLen = $md =~ /^HM-(?:DIS-WM55|DIS-EP-WM55|PB-4DIS-WM|RC-DIS-H-X-EU)/s ? 12 : 16;
  my $regPre = ($hash->{helper}{expert}{raw}?'':'.');
  my $reg1 = ReadingsVal($name,$regPre.'RegL_01.' ,'');
  my $pref = '';
  if ($hash->{helper}{shadowReg}{'RegL_01.'}){
    $pref = 'set_';
    $reg1 = $hash->{helper}{shadowReg}{'RegL_01.'};
  }
  my %txt;
  for my $sAddr (54,70){
    my $txtHex = $reg1;  #one row
    my $sStr = sprintf('%02X:',$sAddr);
    $txtHex =~ s/.* $sStr//;       #remove reg prior to string
    $sStr = sprintf('%02X:',$sAddr+11);
    $txtHex =~ s/$sStr(..).*/,$1/; #remove reg after string
    $txtHex =~ s/ ..:/,/g;         #remove addr
    $txtHex =~ s/ //g;             #remove space
    $txtHex =~ s/,00.*//;          #remove trailing string
    $txt{$sAddr} = '';
    my @ch = split(/,/,$txtHex,$maxLineLen);
    for (@ch){$txt{$sAddr}.=chr(hex($_)) if (length($_)==2)};
  }
  CUL_HM_UpdtReadBulk($hash,1,'text1:'.$pref.$txt{54},
                              'text2:'.$pref.$txt{70});
  return 'text1:'.$txt{54}."\n".
         'text2:'.$txt{70}."\n";
}
beim Lesen.

Eventuell zu verfeinern, weil ich selbst nur mit HM-DIS-EP-WM55 testen kann.

Gruß, Ansgar.
Titel: Aw: Reading text1 und text2 abgeschnitten bei HM-ES-TX-WM
Beitrag von: tndx am 16 September 2023, 19:18:10
Hi Ansgar,

danke für die Änderungsvorschläge. Leider konnte ich sie noch nicht ausprobieren, da ich gerade damit kämpfe, mein FHEM samt aller Abhängigkeiten auf den aktuellen Stand zu bringen, erst dann würde ich an den Bestandteilen rumpatchen.

Aber mittlerweile habe ich wohl auch ganz ohne dieser Änderungen den HM-ES-TX-WM ans Laufen gekriegt, inkl. Leistungsanzeige. Scheint also nur ein kosmetisches Problem zu sein? Kann das jemand noch bestätigen?