From a3b84327d5bb9b54de6eefcbb8d6dc2ceb400bf9 Mon Sep 17 00:00:00 2001 From: rudolfkoenig Date: Sun, 20 Mar 2016 20:13:37 +0000 Subject: [PATCH] 10_ZWave.pm: fix auto-association at inclusion (Forum #51090) git-svn-id: https://svn.fhem.de/fhem/trunk@11107 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/10_ZWave.pm | 49 +++++++++++++++++-------------------------- 1 file changed, 19 insertions(+), 30 deletions(-) diff --git a/fhem/FHEM/10_ZWave.pm b/fhem/FHEM/10_ZWave.pm index de8c9eba3..c4dfdcec2 100755 --- a/fhem/FHEM/10_ZWave.pm +++ b/fhem/FHEM/10_ZWave.pm @@ -638,12 +638,10 @@ ZWave_Define($$) } sub -ZWave_initFromModelfile($$) +ZWave_initFromModelfile($$$) { - my ($name, $ctrlId) = @_; + my ($name, $ctrlId, $cfg) = @_; my @res; - my $cfg = ReadingsVal($name, "modelConfig", ""); - return @res if(!$cfg); ZWave_configParseModel($cfg) if(!$zwave_modelConfig{$cfg}); my $mc = $zwave_modelConfig{$cfg}; return @res if(!$mc); @@ -656,26 +654,9 @@ ZWave_initFromModelfile($$) } sub -ZWave_doExecInits($) +ZWave_execInits($$;$) { - my ($param) = @_; - my $cmdArr = $param->{cmdArr}; - - my $cmd = shift @{$cmdArr}; - my $ret = AnalyzeCommand(undef, $cmd); - Log 1, "ZWAVE INIT: $cmd: $ret" if ($ret); - - push(@{$cmdArr}, ZWave_initFromModelfile($1, $param->{ctrlId})) - if($cmd =~ m/^get (.*) model$/); - - InternalTimer(gettimeofday()+0.5, "ZWave_doExecInits", $param, 0) - if(@{$cmdArr}); -} - -sub -ZWave_execInits($$) -{ - my ($hash, $min) = @_; # min = 50 for model-specific stuff + my ($hash, $min, $cfg) = @_; # min = 50 for model-specific stuff my @clList = split(" ", $attr{$hash->{NAME}}{classes}); my (@initList, %seen); @@ -696,8 +677,14 @@ ZWave_execInits($$) push @cmd, eval $i->{CMD}; } - InternalTimer(gettimeofday()+0.5, "ZWave_doExecInits", - { cmdArr=>\@cmd, ctrlId=>$CTRLID }, 0) if(@cmd); + push @cmd, ZWave_initFromModelfile($hash->{NAME}, $CTRLID, $cfg) + if($cfg); # model specific init, called from "get model" + + foreach my $cmd (@cmd) { + my $ret = AnalyzeCommand(undef, $cmd); + Log 1, "ZWAVE INIT: $cmd: $ret" if ($ret); + } + } @@ -2117,7 +2104,6 @@ ZWave_mfsParse($$$$$) if($config == 2) { setReadingsVal($hash, "modelId", "$mf-$prod-$id", TimeNow()); - ZWave_execInits($hash, 50); return "modelId:$mf-$prod-$id"; } @@ -2136,10 +2122,10 @@ ZWave_mfsParse($$$$$) if($l =~ m/{addSecure}) {