mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-02-01 01:09:47 +00:00
10_ZWave.pm: add routeInfo oparsing from krikan (Forum #120800)
git-svn-id: https://svn.fhem.de/fhem/trunk@24394 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
6ea260caac
commit
4317070bee
@ -4864,6 +4864,57 @@ ZWave_addToSendStack($$$)
|
||||
return undef;
|
||||
}
|
||||
|
||||
sub
|
||||
ZWAVE_parseRouteInfo($$$)
|
||||
{
|
||||
my ($ioName, $hash, $arg) = @_;
|
||||
my $repeaters = hex(substr($arg,4,2));
|
||||
my @list;
|
||||
my $maxlen = $repeaters * 2 + 8;
|
||||
my $i;
|
||||
|
||||
for(my $off=6; $off<$maxlen; $off+=2,$i++) {
|
||||
my $dec = hex(substr($arg, $off, 2));
|
||||
my $msg = "reservedValue";
|
||||
if( $dec == 127) { $msg = "N/A";
|
||||
} elsif($dec == 126) { $msg = "aboveMaxPower";
|
||||
} elsif($dec == 125) { $msg = "belowReceiverSensitivity";
|
||||
} elsif($dec > 161 && $dec < 225) {
|
||||
$msg = unpack('c', pack('C', $dec))." dBm";
|
||||
}
|
||||
push(@list, "rssi$i:$msg");
|
||||
}
|
||||
my $rssi = join(" ", @list);
|
||||
|
||||
my $ackCh = hex(substr($arg,16,2));
|
||||
my $lastCh = hex(substr($arg,18,2));
|
||||
my $scheme = hex(substr($arg,20,2));
|
||||
my $homeId = $hash->{homeId};
|
||||
my @list2;
|
||||
|
||||
for(my $off=22; $off<($repeaters*2+22); $off+=2) {
|
||||
my $dec = hex(substr($arg, $off, 2));
|
||||
my $hex = sprintf("%02x", $dec);
|
||||
my $h = ($hex eq $hash->{nodeIdHex} ?
|
||||
$hash : $modules{ZWave}{defptr}{"$homeId $hex"});
|
||||
push @list2, ($h ? $h->{NAME} : "UNKNOWN_$dec") if($dec);
|
||||
}
|
||||
|
||||
my $f = substr($arg, 30, 2);
|
||||
push @list2, ("at ".($f==1 ? "9.6": ($f==2 ? "40":"100"))."kbps")
|
||||
if(@list2 && $f =~ m/[123]/);
|
||||
my $routefor = join(" ", @list2);
|
||||
|
||||
my $tries = hex(substr($arg,32,2));
|
||||
my $lastfailed = hex(substr($arg,34,4));
|
||||
my $timeToCb = hex(substr($arg,0,4))/100;
|
||||
my $msg = "timeToCb:$timeToCb repeaters:$repeaters $rssi ".
|
||||
"ackCh:$ackCh lastCh:$lastCh scheme:$scheme ".
|
||||
"rep:$routefor routeTries:$tries lastFailed:$lastfailed";
|
||||
Log3 $ioName, 5, $msg;
|
||||
readingsSingleUpdate($hash, "routeInfo", $msg, 1);
|
||||
}
|
||||
|
||||
|
||||
###################################
|
||||
# 0004000a03250300 (sensor binary off for id 11)
|
||||
@ -5106,6 +5157,7 @@ ZWave_Parse($$@)
|
||||
if($id eq "00") {
|
||||
my $name="";
|
||||
if($hash) {
|
||||
ZWAVE_parseRouteInfo($ioName, $hash, $arg) if(length($arg) == 38);
|
||||
ZWave_processSendStack($hash, "ack", $callbackid);
|
||||
readingsSingleUpdate($hash, "transmit", $lmsg, 0);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user