diff --git a/fhem/FHEM/00_ZWDongle.pm b/fhem/FHEM/00_ZWDongle.pm index 7aaaa0bd9..d0b03e733 100755 --- a/fhem/FHEM/00_ZWDongle.pm +++ b/fhem/FHEM/00_ZWDongle.pm @@ -26,7 +26,7 @@ my %sets = ( onNwSec=>0xc1, onSec=>0x81 } }, "backupCreate" => { cmd => "" }, "backupRestore" => { cmd => "" }, - "controllerChange" => { cmd => "4d%02x@", #ZW_CONTROLLER_CHANGE + "controllerChange" => { cmd => "4d%02x@", # ZW_CONTROLLER_CHANGE param => { on =>0x02, stop =>0x05, stopFailed =>0x06 } }, "createNewPrimary" => { cmd => "4c%02x@", # ZW_CREATE_NEW_PRIMARY @@ -1057,6 +1057,11 @@ ZWDongle_Ready($)
  • ZW_SET_SUC_NODE_ID [ok|failed|callbackSucceeded|callbackFailed]
  • +
    sucRouteAdd / sucRouteDel +
  • ZW_ASSIGN_SUC_RETURN_ROUTE [started|alreadyActive|transmitOk| + transmitNoAck|transmitFail|transmitNotIdle| + transmitNoRoute]
  • + diff --git a/fhem/FHEM/10_ZWave.pm b/fhem/FHEM/10_ZWave.pm index 2581ec225..68903b230 100755 --- a/fhem/FHEM/10_ZWave.pm +++ b/fhem/FHEM/10_ZWave.pm @@ -745,6 +745,10 @@ ZWave_Cmd($$@) if($type eq "set") { $cmdList{neighborUpdate}{fmt} = "48$id"; $cmdList{neighborUpdate}{id} = ""; + $cmdList{sucRouteAdd}{fmt} = "51$id"; + $cmdList{sucRouteAdd}{id} = ""; + $cmdList{sucRouteDel}{fmt} = "55$id"; + $cmdList{sucRouteDel}{id} = ""; } $cmdList{neighborList}{fmt} = "x" if($type eq "get"); # Add meta command } @@ -851,8 +855,11 @@ ZWave_Cmd($$@) } my $data; - if($cmd eq "neighborUpdate") { + if($cmd eq "neighborUpdate" || + $cmd eq "sucRouteAdd" || + $cmd eq "sucRouteDel" ) { $data = $cmdFmt; + $data .= ZWave_callbackId($baseHash); } else { my $len = sprintf("%02x", length($cmdFmt)/2+1); @@ -895,7 +902,11 @@ ZWave_Cmd($$@) $val = ($data ? ZWave_Parse($iohash, $data, $type) : "no data returned"); } elsif($type ne "get") { - ZWave_processSendStack($hash, "next") if($cmd eq "neighborUpdate"); + if($cmd eq "neighborUpdate" || + $cmd eq "sucRouteAdd" || + $cmd eq "sucRouteDel" ) { + ZWave_processSendStack($hash, "next"); + } $cmd .= " ".join(" ", @a) if(@a); readingsSingleUpdate($hash, "state", $cmd, 1); @@ -3717,6 +3728,18 @@ ZWave_Parse($$@) return ""; } + if($cmd eq "ZW_ASSIGN_SUC_RETURN_ROUTE" || + $cmd eq "ZW_DELETE_SUC_RETURN_ROUTE") { + my $retval; + if($arg eq "00") { $retval = 'alreadyActive'; + } elsif($arg eq "01") { $retval = 'started'; + } else { $retval = 'unknown_'.$arg; # should never happen + } + DoTrigger($ioName, "$cmd $retval"); + return ""; + } + + Log3 $ioName, 4, "$ioName unhandled ANSWER: $cmd $arg"; return ""; } @@ -3889,6 +3912,16 @@ ZWave_Parse($$@) } else { $evt = 'unknown_'.$id; # should never happen } + } elsif($cmd eq "ZW_ASSIGN_SUC_RETURN_ROUTE" || + $cmd eq "ZW_DELETE_SUC_RETURN_ROUTE") { + if($id eq "00") { $evt = 'transmitOk'; + } elsif($id eq "01") { $evt = 'transmitNoAck'; + } elsif($id eq "02") { $evt = 'transmitFail'; + } elsif($id eq "03") { $evt = 'transmitFailNotIdle'; + } elsif($id eq "04") { $evt = 'transmitNoRoute'; + } else { $evt = 'unknown_'.$id; # should never happen + } + } elsif($cmd eq "ZW_SET_SUC_NODE_ID") { if($id eq "05") { $evt = 'callbackSucceeded'; } elsif($id eq "06") { $evt = 'callbackFailed'; @@ -4246,6 +4279,13 @@ s2Hex($) update process. To read node's neighbor list see neighborList get below. +
  • sucRouteAdd
    + Inform the routing/enhanced slave of the presence of a SUC/SIS. Assign + up to 4 static return routes to SUC/SIS.
  • + +
  • sucRouteDel
    + Delete static return routes to SUC/SIS node.
  • +

    Class ASSOCIATION
  • associationAdd groupId nodeId ...
    Add the specified list of nodeIds to the association group groupId.
    Note: @@ -5105,6 +5145,11 @@ s2Hex($)
    neighborUpdate
  • ZW_REQUEST_NODE_NEIGHBOR_UPDATE [started|done|failed]
  • +
    sucRouteAdd / sucRouteDel +
  • ZW_ASSIGN_SUC_RETURN_ROUTE [started|alreadyActive|transmitOk| + transmitNoAck|transmitFail|transmitNotIdle| + transmitNoRoute]
  • +
    Class ALARM
  • Devices with class version 1 support: alarm_type_X:level Y
  • For higher class versions more detailed events with 100+ different