diff --git a/fhem/FHEM/00_ZWDongle.pm b/fhem/FHEM/00_ZWDongle.pm index ae69590d1..89a788b55 100644 --- a/fhem/FHEM/00_ZWDongle.pm +++ b/fhem/FHEM/00_ZWDongle.pm @@ -28,6 +28,7 @@ my %sets = ( onNwSec=>0xc1, onSec=>0x81 } }, "backupCreate" => { cmd => "" }, "backupRestore" => { cmd => "" }, + "clearStatistics" => { cmd => "39" }, # CLEAR_NETWORK_STATS "controllerChange" => { cmd => "4d%02x@", # ZW_CONTROLLER_CHANGE param => { on =>0x02, stop =>0x05, stopFailed =>0x06 } }, @@ -69,6 +70,7 @@ my %gets = ( "random" => "1c%02x", # ZW_GET_RANDOM "raw" => "%s", # hex "routeFor" => "92%02x", # hex + "statistics" => "3a", # GET_NETWORK_STATS "sucNodeId" => "56", # ZW_GET_SUC_NODE_ID # "timeouts" => "06", # Forum #71333 "version" => "15", # ZW_GET_VERSION @@ -583,7 +585,14 @@ ZWDongle_Get($@) $i++ } $msg = join(" ", @list); - } + + } elsif($cmd eq "statistics") { ############################ + $msg = sprintf("Transmitted:%s BackOffs:%s ReceivedNoErrors:%s + ChecksumErrors:%s CRC16Errors:%s ForeignHomeId:%s", + hex(substr($ret,4,4)), hex(substr($ret,8,4)), + hex(substr($ret,12,4)), hex(substr($ret,16,4)), + hex(substr($ret,20,4)), hex(substr($ret,24,4))); + } $cmd .= "_".join("_", @a) if(@a); readingsSingleUpdate($hash, $cmd, $msg, 0); @@ -1099,6 +1108,10 @@ ZWDongle_Ready($) the MEMORY functions. +
  • clearStatistics
    + clear network statistics. +
  • +
  • controllerChange on|stop|stopFailed
    Add a controller to the current network and transfer role as primary to it. Invoking controller is converted to secondary.
    @@ -1247,6 +1260,10 @@ ZWDongle_Ready($) request priority routing for <device>. <device> is either device name or decimal nodeId.
  • +
  • statistics
    + return the current network statistics. +
  • +
  • sucNodeId
    return the currently registered decimal SUC nodeId.
  • @@ -1315,6 +1332,9 @@ ZWDongle_Ready($)
  • ZW_ADD_NODE_TO_NETWORK [learnReady|nodeFound|slave|controller| done|failed]
  • +
    clearStatistics +
  • CLEAR_NETWORK_STATS ok
  • +
    controllerChange
  • ZW_CONTROLLER_CHANGE [learnReady|nodeFound|controller|done|failed]
  • diff --git a/fhem/FHEM/10_ZWave.pm b/fhem/FHEM/10_ZWave.pm index 9bd689243..263dd6303 100644 --- a/fhem/FHEM/10_ZWave.pm +++ b/fhem/FHEM/10_ZWave.pm @@ -4592,6 +4592,15 @@ ZWave_Parse($$@) return ""; } + if($cmd eq "CLEAR_NETWORK_STATS") { + my $retval; + if($arg eq "01") { $retval = 'ok'; + } else { $retval = 'unknown_'.$arg; # should never happen + } + DoTrigger($ioName, "$cmd $retval"); + return ""; + } + if($cmd eq "ZW_SET_PRIORITY_ROUTE" && $arg =~ m/(..)(..)/) { DoTrigger($ioName, "$cmd node $1 result $2"); return ""; diff --git a/fhem/FHEM/ZWLib.pm b/fhem/FHEM/ZWLib.pm index c43a88f7b..e77418b31 100644 --- a/fhem/FHEM/ZWLib.pm +++ b/fhem/FHEM/ZWLib.pm @@ -37,6 +37,7 @@ use vars qw(%zw_type6); '23' => 'MEMORY_GET_BUFFER', '24' => 'MEMORY_PUT_BUFFER', '27' => 'FLASH_AUTO_PROG_SET', + '28' => 'ZW_NVR_GET_VALUE', '29' => 'NVM_GET_ID', '2a' => 'NVM_EXT_READ_LONG_BUFFER', '2b' => 'NVM_EXT_WRITE_LONG_BUFFER', @@ -49,6 +50,8 @@ use vars qw(%zw_type6); '34' => 'RTC_TIMER_READ', '35' => 'RTC_TIMER_DELETE', '36' => 'RTC_TIMER_CALL', + '37' => 'ZW_CLEAR_TX_TIMERS', + '38' => 'ZW_GET_TX_TIMERS', '39' => 'CLEAR_NETWORK_STATS', '3a' => 'GET_NETWORK_STATS', '3b' => 'GET_BACKGROUND_RSSI', @@ -67,6 +70,7 @@ use vars qw(%zw_type6); '4b' => 'ZW_REMOVE_NODE_FROM_NETWORK', '4c' => 'ZW_CREATE_NEW_PRIMARY', '4d' => 'ZW_CONTROLLER_CHANGE', + '4f' => 'ZW_ASSIGN_PRIORITY_RETURN_ROUTE', '50' => 'ZW_SET_LEARN_MODE', '51' => 'ZW_ASSIGN_SUC_RETURN_ROUTE', '52' => 'ZW_ENABLE_SUC', @@ -75,11 +79,13 @@ use vars qw(%zw_type6); '55' => 'ZW_DELETE_SUC_RETURN_ROUTE', '56' => 'ZW_GET_SUC_NODE_ID', '57' => 'ZW_SEND_SUC_ID', + '58' => 'ZW_ASSIGN_PRIORITY_SUC_RETURN_ROUTE', '59' => 'ZW_REDISCOVERY_NEEDED', '5b' => 'ZW_SUPPORT_9600_ONLY', # Appl. Guide '5c' => 'ZW_REQUEST_NEW_ROUTE_DESTINATIONS', # Appl. Guide '5d' => 'ZW_IS_NODE_WIHTIN_DIRECT_RANGE', # Appl. Guide '5e' => 'ZW_EXPLORE_REQUEST_INCLUSION', + '5f' => 'ZW_EXPLORE_REQUEST_EXCLUSION', '60' => 'ZW_REQUEST_NODE_INFO', '61' => 'ZW_REMOVE_FAILED_NODE_ID', '62' => 'ZW_IS_FAILED_NODE', @@ -88,6 +94,7 @@ use vars qw(%zw_type6); '71' => 'TIMER_RESTART', '72' => 'TIMER_CANCEL', '73' => 'TIMER_CALL', + '78' => 'ZW_FIRMWARE_UPDATE_NVM', '80' => 'GET_ROUTING_TABLE_LINE', '81' => 'GET_T_X_COUNTER', '82' => 'RESET_T_X_COUNTER', @@ -124,6 +131,7 @@ use vars qw(%zw_type6); 'd1' => 'PROMISCUOUS_COMMAND_HANDLER', 'd2' => 'WATCHDOG_START', 'd3' => 'WATCHDOG_STOP', + 'd4' => 'ZW_SET_ROUTING_MAX', 'f2' => 'ZME_FREQ_CHANGE', 'f4' => 'ZME_BOOTLOADER_FLASH', 'f5' => 'ZME_CAPABILITIES',