From 3d73eb79e43b40e8256ca3f86f4dc3633a26ed50 Mon Sep 17 00:00:00 2001 From: zap <> Date: Wed, 26 Apr 2017 17:35:16 +0000 Subject: [PATCH] HMCCU: Fixed config commands git-svn-id: https://svn.fhem.de/fhem/trunk@14113 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/CHANGED | 1 + fhem/FHEM/88_HMCCU.pm | 42 ++++++++++++++++++++++-------------------- fhem/FHEM/HMCCUConf.pm | 10 +++++----- 3 files changed, 28 insertions(+), 25 deletions(-) diff --git a/fhem/CHANGED b/fhem/CHANGED index 8feb8b4a7..946a075df 100644 --- a/fhem/CHANGED +++ b/fhem/CHANGED @@ -1,5 +1,6 @@ # Add changes at the top of the list. Keep it in ASCII, and 80-char wide. # Do not insert empty lines here, update check depends on it. + - bugfix: 88_HMCCU: fixed config commands - feature: 30_pilight_contact: add battery reading if information is available - update: 88_HMCCU: Homematic firmware download, advanced scripting - feature: 98_TRAFFIC: v1.3.2, stroke styles, warnings reduced, bugfix diff --git a/fhem/FHEM/88_HMCCU.pm b/fhem/FHEM/88_HMCCU.pm index b9f3d27b2..ae94b7bca 100755 --- a/fhem/FHEM/88_HMCCU.pm +++ b/fhem/FHEM/88_HMCCU.pm @@ -4,7 +4,7 @@ # # $Id$ # -# Version 4.0.001 +# Version 4.0.002 # # Module for communication between FHEM and Homematic CCU2. # @@ -36,7 +36,7 @@ # get dump {devtypes|datapoints} [] # get dutycycle # get exportdefaults {filename} -# get firmware [list] +# get firmware # get parfile [] # get rpcevents # get rpcstate @@ -105,7 +105,7 @@ my %HMCCU_CUST_CHN_DEFAULTS; my %HMCCU_CUST_DEV_DEFAULTS; # HMCCU version -my $HMCCU_VERSION = '4.0.001'; +my $HMCCU_VERSION = '4.0.002'; # RPC Ports and URL extensions my $HMCCU_RPC_PORT_DEFAULT = 2001; @@ -4589,17 +4589,18 @@ sub HMCCU_GetVariables ($$) my $ccureadings = AttrVal ($hash->{NAME}, 'ccureadings', 1); - my $script = qq( -object osysvar; -string ssysvarid; -foreach (ssysvarid, dom.GetObject(ID_SYSTEM_VARIABLES).EnumUsedIDs()) -{ - osysvar = dom.GetObject(ssysvarid); - WriteLine (osysvar.Name() # "=" # osysvar.Variable() # "=" # osysvar.Value()); -} - ); - - my $response = HMCCU_HMScript ($hash, $script); +# my $script = qq( +# object osysvar; +# string ssysvarid; +# foreach (ssysvarid, dom.GetObject(ID_SYSTEM_VARIABLES).EnumUsedIDs()) +# { +# osysvar = dom.GetObject(ssysvarid); +# WriteLine (osysvar.Name() # "=" # osysvar.Variable() # "=" # osysvar.Value()); +# } +# ); +# +# my $response = HMCCU_HMScript ($hash, $script); + my $response = HMCCU_HMScriptExt ($hash, "!GetVariables", undef); return (-2, $result) if ($response eq ''); readingsBeginUpdate ($hash) if ($ccureadings); @@ -4894,21 +4895,22 @@ sub HMCCU_RPCGetConfig ($$$$) HMCCU_Trace ($hash, 2, "HMCCU: $fnc: Method=$method Addr=$addr Port=$port", $ccuflags); $res = HMCCURPC_SendBinRequest ($defs{$rpcdev}, $port, $method, $BINRPC_STRING, $addr, $BINRPC_STRING, "MASTER"); - if ($ccuflags =~ /trace/ && defined ($res)) { - Log3 $name, 2, "HMCCU: $fnc: Dump of binary RPC request $method $addr:"; - Log3 $name, 2, HMCCU_RefToString ($res); - } } else { my $url = "http://".$hmccu_hash->{host}.":".$port."/"; $url .= $HMCCU_RPC_URL{$port} if (exists ($HMCCU_RPC_URL{$port})); HMCCU_Trace ($hash, 2, "HMCCU: $fnc: Method=$method Addr=$addr Port=$port", $ccuflags); my $client = RPC::XML::Client->new ($url); - my $res = $client->simple_request ($method, $addr, "MASTER"); + $res = $client->simple_request ($method, $addr, "MASTER"); } - + return (-5, "Function not available") if (!defined ($res)); + if ($ccuflags =~ /trace/ && defined ($res)) { + Log3 $name, 2, "HMCCU: $fnc: Dump of RPC request $method $addr. Result type=".ref($res); + Log3 $name, 2, HMCCU_RefToString ($res); + } + if (ref ($res) eq 'HASH') { my $parcount = scalar (keys %$res); if (exists ($res->{faultString})) { diff --git a/fhem/FHEM/HMCCUConf.pm b/fhem/FHEM/HMCCUConf.pm index 4ce63806b..865c4134a 100644 --- a/fhem/FHEM/HMCCUConf.pm +++ b/fhem/FHEM/HMCCUConf.pm @@ -4,7 +4,7 @@ # # $Id$ # -# Version 4.0.001 +# Version 4.0.002 # # Configuration parameters for HomeMatic devices. # @@ -713,7 +713,7 @@ object oSV = dom.GetObject("\$name"); if (!oSV){ object oSysVars = dom.GetObject(ID_SYSTEM_VARIABLES); oSV = dom.CreateObject(OT_VARDP); - oSysVars.Add(svObj.ID()); + oSysVars.Add(oSV.ID()); oSV.Name("\$name"); oSV.ValueType(ivtString); oSV.ValueSubType(istChar8859); @@ -738,7 +738,7 @@ object oSV = dom.GetObject("\$name"); if (!oSV){ object oSysVars = dom.GetObject(ID_SYSTEM_VARIABLES); oSV = dom.CreateObject(OT_VARDP); - oSysVars.Add(svObj.ID()); + oSysVars.Add(oSV.ID()); oSV.Name("\$name"); oSV.ValueType(ivtFloat); oSV.ValueSubType(istGeneric); @@ -765,7 +765,7 @@ object oSV = dom.GetObject("\$name"); if (!oSV){ object oSysVars = dom.GetObject(ID_SYSTEM_VARIABLES); oSV = dom.CreateObject(OT_VARDP); - oSysVars.Add(svObj.ID()); + oSysVars.Add(oSV.ID()); oSV.Name("\$name"); oSV.ValueType(ivtBinary); oSV.ValueSubType(istBool); @@ -789,7 +789,7 @@ object oSV = dom.GetObject("p2"); if (!oSV){ object oSysVars = dom.GetObject(ID_SYSTEM_VARIABLES); oSV = dom.CreateObject(OT_VARDP); - oSysVars.Add(svObj.ID()); + oSysVars.Add(oSV.ID()); oSV.Name("\$name"); oSV.ValueType(ivtInteger); oSV.ValueSubType(istEnum);