From f54c4b4da4961713d3e3851e54e25ce4edbf5949 Mon Sep 17 00:00:00 2001 From: nasseeder1 Date: Thu, 12 Dec 2019 21:11:06 +0000 Subject: [PATCH] 77_SMAEM: contrib 3.5.0 git-svn-id: https://svn.fhem.de/fhem/trunk@20722 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/contrib/DS_Starter/77_SMAEM.pm | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/fhem/contrib/DS_Starter/77_SMAEM.pm b/fhem/contrib/DS_Starter/77_SMAEM.pm index e8cfc6e0f..856ceb171 100644 --- a/fhem/contrib/DS_Starter/77_SMAEM.pm +++ b/fhem/contrib/DS_Starter/77_SMAEM.pm @@ -301,9 +301,9 @@ sub SMAEM_Read ($) { $socket->recv($data, 608); my $dl = length($data); if($dl == 600) { - $hash->{FIRMWARE} = "1.02.04.R"; + $hash->{MODEL} = "EM / HM 2.0 < 2.03.4.R"; } elsif($dl == 608) { - $hash->{FIRMWARE} = ">= 2.03.4.R"; + $hash->{MODEL} = "HM 2.0 >= 2.03.4.R"; } else { Log3 ($name, 1, "SMAEM $name - Buffer length ".$dl." is invalid. Don't parse it."); return; @@ -312,12 +312,16 @@ sub SMAEM_Read ($) { return if (time() <= $hash->{HELPER}{STARTTIME}+30); # decode serial number of dataset received + # unpack big-endian to 2-digit hex (bin2hex) my $hex = unpack('H*', $data); my $smaserial = hex(substr($hex,40,8)); return if(!$smaserial); return if($refsn && $refsn ne $smaserial); # nur selektiv eine EM mit angegebener Serial lesen (default: alle) + $hex =~ /.*90000000(.{6})5200000000$/; + $hash->{FIRMWARE} = $1 if($1); + # alle Serialnummern in HELPER sammeln und ggf. speichern if(!defined($hash->{HELPER}{ALLSERIALS}) || $hash->{HELPER}{ALLSERIALS} !~ /$smaserial/) { my $sep = $hash->{HELPER}{ALLSERIALS}?"_":undef; @@ -406,7 +410,8 @@ sub SMAEM_DoParse ($) { if($1 eq "000e04") { $grid_freq = hex($2)/1000; $offset = 16; - } + } + Log3 ($name, 4, "SMAEM $name - Offset: $offset"); ################ Aufbau Ergebnis-Array #################### # Extract datasets from hex: