From 0c82f3084c2a6bdd1a45e75a14422dbe5b0f52f2 Mon Sep 17 00:00:00 2001 From: rudolfkoenig <> Date: Mon, 10 May 2021 08:48:46 +0000 Subject: [PATCH] 10_ZWave.pm: add routeInfo patch from krikan (Forum #120800) git-svn-id: https://svn.fhem.de/fhem/trunk@24407 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/01_FHEMWEB.pm | 7 +++++++ fhem/FHEM/10_ZWave.pm | 27 ++++++++++++++++++++++++--- 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/fhem/FHEM/01_FHEMWEB.pm b/fhem/FHEM/01_FHEMWEB.pm index 58e78ff64..5193fd379 100644 --- a/fhem/FHEM/01_FHEMWEB.pm +++ b/fhem/FHEM/01_FHEMWEB.pm @@ -2385,18 +2385,24 @@ FW_fileNameToPath($) my $cfgFileName = $1; if($name eq $cfgFileName) { return $attr{global}{configfile}; + } elsif($name =~ m/.*(js|css|_defs.svg)$/) { return "$FW_cssdir/$name"; + } elsif($name =~ m/.*(png|svg)$/) { my $d=""; map { $d = $_ if(!$d && -d "$FW_icondir/$_") } @FW_iconDirs; return "$FW_icondir/$d/$name"; + } elsif($name =~ m/.*gplot$/) { return "$FW_gplotdir/$name"; + } elsif($name =~ m/.*log$/) { return Logdir()."/$name"; + } else { return "$MW_dir/$name"; + } } @@ -2924,6 +2930,7 @@ FW_iconName($) my $name = $oname; $name =~ s/@.*//; foreach my $pe (@FW_iconDirs) { +Log 1, "iconName: $pe / $name" if($pe && $FW_icons{$pe} && $FW_icons{$pe}{$name}); return $oname if($pe && $FW_icons{$pe} && $FW_icons{$pe}{$name}); } return undef; diff --git a/fhem/FHEM/10_ZWave.pm b/fhem/FHEM/10_ZWave.pm index dc6e383b4..80274ce3e 100644 --- a/fhem/FHEM/10_ZWave.pm +++ b/fhem/FHEM/10_ZWave.pm @@ -748,6 +748,7 @@ ZWave_Initialize($) dummy:1,0 eventForRaw extendedAlarmReadings:0,1,2 + generateRouteInfoEvents:1,0 ignore:1,0 ignoreDupMsg:1,0 neighborListPos @@ -4888,7 +4889,13 @@ ZWAVE_parseRouteInfo($$$) my $ackCh = hex(substr($arg,16,2)); my $lastCh = hex(substr($arg,18,2)); - my $scheme = hex(substr($arg,20,2)); + + my @schemeEncoding = qw( Idle DirectTransmission ApplicationStaticRoute + LastWorkingRoute NextToLastWorkingRoute + ReturnRoutOrControllerAutoRoute DirectResort + ExplorerFrame ); + my $scheme= $schemeEncoding[hex(substr($arg,20,2))]; + my $homeId = $hash->{homeId}; my @list2; @@ -4907,12 +4914,26 @@ ZWAVE_parseRouteInfo($$$) my $tries = hex(substr($arg,32,2)); my $lastfailed = hex(substr($arg,34,4)); + my @list3; + + for(my $off=34; $off<=38; $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 @list3, ($h ? $h->{NAME} : "UNKNOWN_$dec") if($dec); + } + $lastfailed=join(" ", @list3); + 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); + Log3 $ioName, 5, "$hash->{NAME}: $msg"; + if(AttrVal($hash->{NAME}, "generateRouteInfoEvents", 0)) { + DoTrigger($hash->{NAME}, $msg); + } + readingsSingleUpdate($hash, "routeInfo", $msg, 0); }