2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-04-07 19:04:20 +00:00

CUL_HM:correct cfgState after reboot

git-svn-id: https://svn.fhem.de/fhem/trunk@22806 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
martinp876 2020-09-20 18:12:13 +00:00
parent dbe4747ff7
commit 49a8b90d30

View File

@ -550,9 +550,8 @@ sub CUL_HM_updateConfig($){##########################
CUL_HM_setAssotiat($name); CUL_HM_setAssotiat($name);
} }
delete $modules{CUL_HM}{helper}{updtCfgLst}; delete $modules{CUL_HM}{helper}{updtCfgLst};
my ($hm) = devspec2array("TYPE=HMinfo"); $modules{CUL_HM}{helper}{initDone} = 1;# we made init once - now we are operational. Check with HMInfo as well
HMinfo_GetFn($defs{$hm},$hm,"configCheck") if(defined $hm && !$modules{CUL_HM}{helper}{hmManualOper}); ## configCheck will be issues by HMInfo once
} }
sub CUL_HM_Define($$) {############################## sub CUL_HM_Define($$) {##############################
@ -3578,6 +3577,7 @@ sub CUL_HM_parseCommon(@){#####################################################
delete $mhp->{cHash}{helper}{shadowReg}{$regLNp}; #rm shadow delete $mhp->{cHash}{helper}{shadowReg}{$regLNp}; #rm shadow
# peerChannel name from/for user entry. <IDorName> <deviceID> <ioID> # peerChannel name from/for user entry. <IDorName> <deviceID> <ioID>
CUL_HM_updtRegDisp($mhp->{cHash},$list,CUL_HM_peerChId($peer,$mhp->{devH}{DEF})); CUL_HM_updtRegDisp($mhp->{cHash},$list,CUL_HM_peerChId($peer,$mhp->{devH}{DEF}));
CUL_HM_cfgStateDelay($mhp->{cHash}{NAME});
} }
else{ else{
CUL_HM_respPendToutProlong($mhp->{devH});#wasn't last - reschedule timer CUL_HM_respPendToutProlong($mhp->{devH});#wasn't last - reschedule timer
@ -3601,6 +3601,7 @@ sub CUL_HM_parseCommon(@){#####################################################
if($data eq "00"){#update finished for mStp 05. Now update display if($data eq "00"){#update finished for mStp 05. Now update display
CUL_HM_updtRegDisp($fHash,$list,$peerID); CUL_HM_updtRegDisp($fHash,$list,$peerID);
CUL_HM_cfgStateDelay($fName);
} }
else{ else{
my $regLNp = "RegL_".$list.".".$peer; my $regLNp = "RegL_".$list.".".$peer;
@ -3633,7 +3634,10 @@ sub CUL_HM_parseCommon(@){#####################################################
$shdwReg =~ s/ $a:..// if ($shdwReg);# confirmed: remove from shadow $shdwReg =~ s/ $a:..// if ($shdwReg);# confirmed: remove from shadow
} }
CUL_HM_UpdtReadSingle($fHash,$regLN,$rCur,0); CUL_HM_UpdtReadSingle($fHash,$regLN,$rCur,0);
CUL_HM_updtRegDisp($fHash,$list,$peerID) if ($mhp->{mStp} eq "04"); if ($mhp->{mStp} eq "04"){
CUL_HM_updtRegDisp($fHash,$list,$peerID);
CUL_HM_cfgStateDelay($fName);
}
} }
} }
$ret= "parsed"; # send ACK $ret= "parsed"; # send ACK
@ -7356,6 +7360,7 @@ sub CUL_HM_pushConfig($$$$$$$$@) {#generate messages to config data to register
} }
######### #########
} }
CUL_HM_cfgStateDelay($hash->{NAME});
if ($changed){ if ($changed){
CUL_HM_complConfig($hash->{NAME},1); CUL_HM_complConfig($hash->{NAME},1);
CUL_HM_qAutoRead($hash->{NAME},3) ; CUL_HM_qAutoRead($hash->{NAME},3) ;
@ -8718,7 +8723,10 @@ sub CUL_HMTmplSetParam($){
my @pv = split(" ",$defs{$name}{helper}{tmpl}{$t}); my @pv = split(" ",$defs{$name}{helper}{tmpl}{$t});
my $pCnt = 0; #parameter count my $pCnt = 0; #parameter count
$t =~ s/[:>]/_/g; # replace illegal chars for command $t =~ s/[:>]/_/g; # replace illegal chars for command
next if(!defined $HMConfig::culHmTpl{$tn}||
!defined $HMConfig::culHmTpl{$tn}{p});
my $tnH = $HMConfig::culHmTpl{$tn}; my $tnH = $HMConfig::culHmTpl{$tn};
for my $pm (split(" ",$tnH->{p})){ for my $pm (split(" ",$tnH->{p})){
my ($reg1) = map{(my $foo = $_) =~ s/:.*//; $foo;} my ($reg1) = map{(my $foo = $_) =~ s/:.*//; $foo;}
grep/p$pCnt/, grep/p$pCnt/,
@ -8869,11 +8877,11 @@ sub CUL_HM_updtRegDisp($$$) {
CUL_HM_SD_2($hash) if ($list == 0); CUL_HM_SD_2($hash) if ($list == 0);
} }
CUL_HM_cfgStateDelay($name);
} }
sub CUL_HM_cfgStateDelay($) {#update cfgState timer sub CUL_HM_cfgStateDelay($) {#update cfgState timer
my $name = shift; my $name = shift;
$name = CUL_HM_getDeviceName($name); $name = CUL_HM_getDeviceName($name);
# stacktrace();
RemoveInternalTimer("cfgStateUpdate:$name"); RemoveInternalTimer("cfgStateUpdate:$name");
if (InternalVal($name,"protCmdPend","none" ) eq "none"){ if (InternalVal($name,"protCmdPend","none" ) eq "none"){
CUL_HM_cfgStateUpdate("cfgStateUpdate:$name"); CUL_HM_cfgStateUpdate("cfgStateUpdate:$name");
@ -8929,6 +8937,7 @@ sub CUL_HM_refreshRegs($){ # renew all register readings from Regl_
delete $defs{$name}{READINGS}{$_};# peer for This List not found delete $defs{$name}{READINGS}{$_};# peer for This List not found
} }
} }
CUL_HM_cfgStateDelay($name);
} }
############################# #############################