diff --git a/fhem/FHEM/00_ZWDongle.pm b/fhem/FHEM/00_ZWDongle.pm index cc2601fe3..f643a09b3 100755 --- a/fhem/FHEM/00_ZWDongle.pm +++ b/fhem/FHEM/00_ZWDongle.pm @@ -26,9 +26,9 @@ sub ZWave_ProcessSendStack($); # https://bitbucket.org/bradsjm/aeonzstickdriver my %sets = ( "addNode" => { cmd => "4a%02x@", # ZW_ADD_NODE_TO_NETWORK' - param => {nwOn=>0xc1, on=>0x81, off=>0x05 } }, + param => {nwOn=>0xc1, on=>0x81, off=>0x05 } }, "removeNode" => { cmd => "4b%02x@", # ZW_REMOVE_NODE_FROM_NETWORK' - param => {nwOn=>0xc1, on=>0x81, off=>0x05 } }, + param => {nwOn=>0xc1, on=>0x81, off=>0x05 } }, "createNode" => { cmd => "60%02x" }, # ZW_REQUEST_NODE_INFO' "removeFailedNode" => { cmd => "61%02x" }, # ZW_REMOVE_FAILED_NODE_ID "replaceFailedNode"=> { cmd => "63%02x" }, # ZW_REPLACE_FAILED_NODE @@ -294,6 +294,15 @@ ZWDongle_Set($@) $cmd =~ s/\@/$c/g; } + if($type eq "addNode") { + if(@a == 2 && $a[2] =~ m/^sec/i) { + $hash->{addSecure} = pop(@a); + } else { + delete($hash->{addSecure}); + } + Log 1, "CMD:".join("/",@a)."/"; + } + my @ca = split("%", $cmd, -1); my $nargs = int(@ca)-1; return "set $name $type needs $nargs arguments" if($nargs != int(@a)); @@ -652,9 +661,8 @@ ZWDongle_Read($@) next; } $hash->{nrNAck} = 0; - Log3 $name, 5, "ZWDongle_Read -> sending ACK"; + Log3 $name, 5, "ZWDongle_Read $name: ACK, processing $msg"; DevIo_SimpleWrite($hash, "06", 1); # Send ACK - Log3 $name, 5, "ZWDongle_Read $name: processing $msg"; # SEND_DATA OK: remove message from SendStack. TODO: check the callbackId if($msg =~ m/^0013..00/ ){ @@ -669,6 +677,7 @@ ZWDongle_Read($@) last if(defined($local) && (!defined($regexp) || ($msg =~ m/$regexp/))); $hash->{PARTIAL} = $data; # Recursive call by ZWave get, Forum #37418 ZWDongle_Parse($hash, $name, $msg); + $data = $hash->{PARTIAL}; $msg = undef; } @@ -855,14 +864,17 @@ ZWDongle_Ready($) Set