From 79122d94c14c7dc7c198f2fa71a7f3bc4592afc1 Mon Sep 17 00:00:00 2001 From: rudolfkoenig Date: Sat, 21 May 2016 19:17:55 +0000 Subject: [PATCH] ZWave/ZWDongle: SUC/SIS Patches from krikan (Forum #53066) git-svn-id: https://svn.fhem.de/fhem/trunk@11488 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/00_ZWDongle.pm | 35 ++++++++++++++++++++++++++++++++--- fhem/FHEM/10_ZWave.pm | 37 +++++++++++++++++++++++++++++++------ 2 files changed, 63 insertions(+), 9 deletions(-) diff --git a/fhem/FHEM/00_ZWDongle.pm b/fhem/FHEM/00_ZWDongle.pm index d0b03e733..867f86dc8 100755 --- a/fhem/FHEM/00_ZWDongle.pm +++ b/fhem/FHEM/00_ZWDongle.pm @@ -47,6 +47,8 @@ my %sets = ( # SERIAL_API_APPL_NODE_INFORMATION "sucNodeId" => { cmd => "54%02x%02x00%02x@"}, # ZW_SET_SUC_NODE_ID + "sucRequestUpdate" => { cmd => "53%02x@"}, # ZW_REQUEST_NETWORK_UPDATE + "sucSendNodeId" => { cmd => "57%02x25@"}, # ZW_SEND_SUC_ID "timeouts" => { cmd => "06%02x%02x" }, # SERIAL_API_SET_TIMEOUTS ); @@ -943,6 +945,14 @@ ZWDongle_Ready($) <capabilities>: 0 = basic SUC; 1 = SIS +
  • sucRequestUpdate <decimal nodeId of SUC/SIS>
    + Request network updates from SUC/SIS. Primary do not need it. +
  • + +
  • sucSendNodeId <decimal nodeId>
    + Send SUC/SIS nodeId to the specified decimal controller nodeId. +
  • +
    @@ -1015,7 +1025,13 @@ ZWDongle_Ready($) -
    sucRouteAdd / sucRouteDel +
    sucRouteAdd
  • ZW_ASSIGN_SUC_RETURN_ROUTE [started|alreadyActive|transmitOk| transmitNoAck|transmitFail|transmitNotIdle| transmitNoRoute]
  • +
    sucRouteDel +
  • ZW_DELETE_SUC_RETURN_ROUTE [started|alreadyActive|transmitOk| + transmitNoAck|transmitFail|transmitNotIdle| + transmitNoRoute]
  • + +
    sucSendNodeId +
  • ZW_SEND_SUC_ID [started|alreadyActive|transmitOk| + transmitNoAck|transmitFail|transmitNotIdle| + transmitNoRoute]
  • + diff --git a/fhem/FHEM/10_ZWave.pm b/fhem/FHEM/10_ZWave.pm index 68903b230..3655a8179 100755 --- a/fhem/FHEM/10_ZWave.pm +++ b/fhem/FHEM/10_ZWave.pm @@ -3718,10 +3718,10 @@ ZWave_Parse($$@) return ""; } - if($cmd eq "ZW_SET_SUC_NODE_ID") { + if($cmd eq "ZW_REQUEST_NETWORK_UPDATE") { my $retval; - if($arg eq "00") { $retval = 'failed'; - } elsif($arg eq "01") { $retval = 'ok'; + if($arg eq "00") { $retval = 'selfOrNoSUC'; + } elsif($arg eq "01") { $retval = 'started'; } else { $retval = 'unknown_'.$arg; # should never happen } DoTrigger($ioName, "$cmd $retval"); @@ -3729,7 +3729,8 @@ ZWave_Parse($$@) } if($cmd eq "ZW_ASSIGN_SUC_RETURN_ROUTE" || - $cmd eq "ZW_DELETE_SUC_RETURN_ROUTE") { + $cmd eq "ZW_DELETE_SUC_RETURN_ROUTE" || + $cmd eq "ZW_SEND_SUC_ID") { my $retval; if($arg eq "00") { $retval = 'alreadyActive'; } elsif($arg eq "01") { $retval = 'started'; @@ -3739,6 +3740,15 @@ ZWave_Parse($$@) return ""; } + if($cmd eq "ZW_SET_SUC_NODE_ID") { + my $retval; + if($arg eq "00") { $retval = 'failed'; + } elsif($arg eq "01") { $retval = 'ok'; + } else { $retval = 'unknown_'.$arg; # should never happen + } + DoTrigger($ioName, "$cmd $retval"); + return ""; + } Log3 $ioName, 4, "$ioName unhandled ANSWER: $cmd $arg"; return ""; @@ -3913,7 +3923,8 @@ ZWave_Parse($$@) } } elsif($cmd eq "ZW_ASSIGN_SUC_RETURN_ROUTE" || - $cmd eq "ZW_DELETE_SUC_RETURN_ROUTE") { + $cmd eq "ZW_DELETE_SUC_RETURN_ROUTE" || + $cmd eq "ZW_SEND_SUC_ID") { if($id eq "00") { $evt = 'transmitOk'; } elsif($id eq "01") { $evt = 'transmitNoAck'; } elsif($id eq "02") { $evt = 'transmitFail'; @@ -3922,6 +3933,15 @@ ZWave_Parse($$@) } else { $evt = 'unknown_'.$id; # should never happen } + } elsif($cmd eq "ZW_REQUEST_NETWORK_UPDATE") { + if($id eq "00") { $evt = 'done'; + } elsif($id eq "01") { $evt = 'abort'; + } elsif($id eq "02") { $evt = 'wait'; + } elsif($id eq "03") { $evt = 'disabled'; + } elsif($id eq "04") { $evt = 'overflow'; + } 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'; @@ -5145,11 +5165,16 @@ s2Hex($)
    neighborUpdate
  • ZW_REQUEST_NODE_NEIGHBOR_UPDATE [started|done|failed]
  • -
    sucRouteAdd / sucRouteDel +
    sucRouteAdd
  • ZW_ASSIGN_SUC_RETURN_ROUTE [started|alreadyActive|transmitOk| transmitNoAck|transmitFail|transmitNotIdle| transmitNoRoute]
  • +
    sucRouteDel +
  • ZW_DELETE_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