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?
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
Guten Abend,
gibt es hierfür mittlerweile eine Lösung? Ich habe nämlich das gleiche Problem.
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.
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?