From 95955e9d13584774cf4079a8268c6d4662bfc22c Mon Sep 17 00:00:00 2001 From: rudolfkoenig <> Date: Thu, 23 Nov 2017 21:39:50 +0000 Subject: [PATCH] 00_ZWDongle.pm: backgroundRSSI patch from krikan (Forum #79893) git-svn-id: https://svn.fhem.de/fhem/trunk@15489 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/00_ZWDongle.pm | 34 ++++++++++++++++++++++++++++++---- 1 file changed, 30 insertions(+), 4 deletions(-) diff --git a/fhem/FHEM/00_ZWDongle.pm b/fhem/FHEM/00_ZWDongle.pm index 0de8ed1de..9c544c843 100644 --- a/fhem/FHEM/00_ZWDongle.pm +++ b/fhem/FHEM/00_ZWDongle.pm @@ -58,6 +58,7 @@ my %sets = ( ); my %gets = ( + "backgroundRSSI" => "3b", # GET_BACKGROUND_RSSI "caps" => "07", # SERIAL_API_GET_CAPABILITIES "ctrlCaps" => "05", # ZW_GET_CONTROLLER_CAPS "homeId" => "20", # MEMORY_GET_ID @@ -561,6 +562,27 @@ ZWDongle_Get($@) push @list, ("at ".($f==1 ? "9.6": ($f==2 ? "40":"100"))."kbps") if(@list && $f =~ m/[123]/); $msg = (@list ? join(" ", @list) : "N/A"); + + } elsif($cmd eq "backgroundRSSI") { ############################ + my @list; + my $i=0; + my $maxlen = (length($msg) >= 12 ? 10 : length($msg)-2); + for(my $off=4; $off<$maxlen; $off+=2) { + my $dec = hex(substr($msg, $off, 2)); + if($dec == 127 || $dec == 0) { + push @list, ("ch".($i+1).":N/A"); + } elsif($dec == 126) { + push @list, ("ch".($i+1).":aboveMaxPower"); + } elsif($dec == 125) { + push @list, ("ch".($i+1).":belowReceiverSensitivity"); + } elsif($dec > 161 && $dec < 225) { + push @list, ("ch".($i+1).":".unpack('c', pack('C', $dec))." dBm"); + } else { + push @list, ("ch".($i+1).":reservedValue"); + } + $i++ + } + $msg = join(" ", @list); } $cmd .= "_".join("_", @a) if(@a); @@ -1180,10 +1202,9 @@ ZWDongle_Ready($)