diff --git a/fhem/FHEM/00_HMLAN.pm b/fhem/FHEM/00_HMLAN.pm
index b78bebf1c..6d5ae56e1 100755
--- a/fhem/FHEM/00_HMLAN.pm
+++ b/fhem/FHEM/00_HMLAN.pm
@@ -255,21 +255,21 @@ HMLAN_Parse($$)
 {
   my ($hash, $rmsg) = @_;
   my $name = $hash->{NAME};
-  my $rssi;
   my $ll5 = GetLogLevel($name,5);
+  my ($src, $status, $msec, $d2, $rssi, $msg);
 
   my $dmsg = $rmsg;
 
   Log $ll5, "HMLAN $rmsg";
   if($rmsg =~ m/^E(......),(....),(........),(..),(....),(.*)/) {
-    my ($src, $d1, $msec, $d2, $rssi, $msg) =
-       ($1,   $2,  $3,    $4,  $5,    $6);
+    ($src, $status, $msec, $d2, $rssi, $msg) =
+    ($1,   $2,      $3,    $4,  $5,    $6);
     $dmsg = sprintf("A%02X%s", length($msg)/2, uc($msg));
     $hash->{uptime} = HMLAN_uptime($msec);
 
   } elsif($rmsg =~ m/^R(........),(....),(........),(..),(....),(.*)/) {
-    my ($src, $status, $msec, $d2, $rssi, $msg) =
-       ($1,   $2,      $3,    $4,  $5,    $6);
+    ($src, $status, $msec, $d2, $rssi, $msg) =
+    ($1,   $2,      $3,    $4,  $5,    $6);
 
     $dmsg = sprintf("A%02X%s", length($msg)/2, uc($msg));
     $dmsg .= "NACK" if($status !~ m/...1/);
@@ -301,6 +301,7 @@ HMLAN_Parse($$)
   $hash->{RAWMSG} = $rmsg;
   my %addvals = (RAWMSG => $rmsg);
   if(defined($rssi)) {
+    $rssi = hex($rssi)-65536;
     $hash->{RSSI} = $rssi;
     $addvals{RSSI} = $rssi;
   }