From a5cc50b15781750a6296fe959cbe9080bf6a86f4 Mon Sep 17 00:00:00 2001 From: rudolfkoenig Date: Fri, 25 Nov 2016 15:12:14 +0000 Subject: [PATCH] ZWLib: add PRIORITY_ROUTING get git-svn-id: https://svn.fhem.de/fhem/trunk@12651 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/00_ZWDongle.pm | 14 ++++++++++++++ fhem/FHEM/ZWLib.pm | 2 ++ 2 files changed, 16 insertions(+) diff --git a/fhem/FHEM/00_ZWDongle.pm b/fhem/FHEM/00_ZWDongle.pm index b5e0cb141..c1ca2e82c 100755 --- a/fhem/FHEM/00_ZWDongle.pm +++ b/fhem/FHEM/00_ZWDongle.pm @@ -64,6 +64,7 @@ my %gets = ( "nodeList" => "02", # SERIAL_API_GET_INIT_DATA "random" => "1c%02x", # ZW_GET_RANDOM "raw" => "%s", # hex + "routeFor" => "92%02x", # hex "sucNodeId" => "56", # ZW_GET_SUC_NODE_ID "timeouts" => "06", # SERIAL_API_SET_TIMEOUTS "version" => "15", # ZW_GET_VERSION @@ -434,8 +435,10 @@ ZWDongle_Get($@) return "No $cmd for dummies" if(IsDummy($name)); + my $a0 = $a[0]; if($cmd eq "neighborList" || $cmd eq "nodeInfo" || + $cmd eq "routeFor" || $cmd eq "isFailedNode") { $a[0] =~ s/^UNKNOWN_//; @@ -451,6 +454,7 @@ ZWDongle_Get($@) return $err if($err); my $msg=""; + $a[0] = $a0 if(defined($a0)); $msg = $ret if($ret); my @r = map { ord($_) } split("", pack('H*', $ret)) if(defined($ret)); @@ -517,6 +521,16 @@ ZWDongle_Get($@) } elsif($cmd eq "sucNodeId") { ############################ $msg = ($r[2]==0)?"no":$r[2]; + } elsif($cmd eq "routeFor") { ############################ + my $homeId = $hash->{homeId}; + my @list = (hex(substr($msg, 6, 2))); + for(my $off=8; $off<16; $off+=2) { + my $dec = hex(substr($msg, $off, 2)); + my $hex = sprintf("%02x", $dec); + my $h = $modules{ZWave}{defptr}{"$homeId $hex"}; + push @list, ($h ? $h->{NAME} : "UNKNOWN_$dec") if($dec); + } + $msg = "NrRouters:".join(" ", @list); } $cmd .= "_".join("_", @a) if(@a); diff --git a/fhem/FHEM/ZWLib.pm b/fhem/FHEM/ZWLib.pm index 29c440a0c..792035d44 100644 --- a/fhem/FHEM/ZWLib.pm +++ b/fhem/FHEM/ZWLib.pm @@ -90,6 +90,8 @@ use vars qw(%zw_type6); '84' => 'STORE_HOME_ID', '90' => 'LOCK_ROUTE_RESPONSE', '91' => 'ZW_SEND_DATA_ROUTE_DEMO', + '92' => 'ZW_GET_PRIORITY_ROUTE', + '93' => 'ZW_SET_PRIORITY_ROUTE', '95' => 'SERIAL_API_TEST', 'a0' => 'SERIAL_API_SLAVE_NODE_INFO', 'a1' => 'APPLICATION_SLAVE_COMMAND_HANDLER',