HMInfo:cfgState correction after reboot

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

View File

@ -250,10 +250,21 @@ sub HMinfo_Notify(@){##########################################################
HMinfo_archConfig($hash,$name,"","") if(AttrVal($name,"autoArchive",undef)); HMinfo_archConfig($hash,$name,"","") if(AttrVal($name,"autoArchive",undef));
} }
if (grep /INITIALIZED/,@{$events}){ if (grep /INITIALIZED/,@{$events}){
HMinfo_SetFn($hash,$name,"loadConfig") if ( substr(AttrVal($name, "autoLoadArchive", 0),0,1) ne 0); HMinfo_init();
} }
return undef; return undef;
} }
sub HMinfo_init(){#############################################################
RemoveInternalTimer("HMinfo_init");# just to be secure...
if (defined $modules{CUL_HM}{helper}{initDone} && $modules{CUL_HM}{helper}{initDone}){
my ($hm) = devspec2array("TYPE=HMinfo");
HMinfo_SetFn($defs{$hm},$hm,"loadConfig") if ( substr(AttrVal($hm, "autoLoadArchive", 0),0,1) ne 0);
$modules{HMinfo}{helper}{initDone} = 1;
}
else{
InternalTimer(gettimeofday()+5,"HMinfo_init", "HMinfo_init", 0);
}
}
sub HMinfo_status($){########################################################## sub HMinfo_status($){##########################################################
# - count defined HM entities, selected readings, errors on filtered readings # - count defined HM entities, selected readings, errors on filtered readings
# - display Assigned IO devices # - display Assigned IO devices
@ -768,7 +779,7 @@ sub HMinfo_applTxt2Check($) { #################################################
$ret =~ s/$_/$chkIds{$_}{txt}/g foreach(keys %chkIds); $ret =~ s/$_/$chkIds{$_}{txt}/g foreach(keys %chkIds);
return $ret; return $ret;
} }
sub HMinfo_getTxt2Check($) { ################################################# sub HMinfo_getTxt2Check($) { ##################################################
my $id = shift; my $id = shift;
if(defined $chkIds{$id}){ if(defined $chkIds{$id}){
return ($chkIds{$id}{Fkt} return ($chkIds{$id}{Fkt}
@ -1218,7 +1229,7 @@ sub HMinfo_GetFn($@) {#########################################################
my ($opt,$optEmpty,$filter) = ("",1,""); my ($opt,$optEmpty,$filter) = ("",1,"");
my $ret; my $ret;
$doAli = 0;#set default $doAli = 0;#set default
Log3 $hash,4,"HMinfo $name get:$cmd :".join(",",@a) if ($cmd && $cmd ne "?"); Log3 $hash,2,"HMinfo $name get:$cmd :".join(",",@a) if ($cmd && $cmd ne "?");
if (@a && ($a[0] =~ m/^(-[dcivpase2]+)/)){# options provided if (@a && ($a[0] =~ m/^(-[dcivpase2]+)/)){# options provided
$opt = $1; $opt = $1;
$a[0] =~ s/^(-[dcivpase2]*)//; $a[0] =~ s/^(-[dcivpase2]*)//;
@ -1413,7 +1424,7 @@ sub HMinfo_GetFn($@) {#########################################################
$ret = $cmd." done:" .HMinfo_peerCheck(@entities); $ret = $cmd." done:" .HMinfo_peerCheck(@entities);
} }
elsif($cmd eq "configCheck"){##check peers and register---------------------- elsif($cmd eq "configCheck"){##check peers and register----------------------
if($modules{HMinfo}{helper}{initDone}){
if ($hash->{CL}){ if ($hash->{CL}){
$defs{$name}{helper}{cfgChkResult} = ""; $defs{$name}{helper}{cfgChkResult} = "";
my $id = ++$hash->{nb}{cnt}; my $id = ++$hash->{nb}{cnt};
@ -1428,6 +1439,9 @@ sub HMinfo_GetFn($@) {#########################################################
$ret = HMinfo_bpPost("$name;;;$ret"); $ret = HMinfo_bpPost("$name;;;$ret");
} }
} }
else{
}
}
elsif($cmd eq "configChkResult"){##check peers and register------------------ elsif($cmd eq "configChkResult"){##check peers and register------------------
return $defs{$name}{helper}{cfgChkResult} ? $defs{$name}{helper}{cfgChkResult} :"no results available"; return $defs{$name}{helper}{cfgChkResult} ? $defs{$name}{helper}{cfgChkResult} :"no results available";
} }
@ -2167,6 +2181,7 @@ sub HMinfo_loadConfig($$@) {####################################################
my @rUpdate; my @rUpdate;
my @tmplList = (); #collect template definitions my @tmplList = (); #collect template definitions
$modules{HMinfo}{helper}{initDone} = 0; #supress configCheck while loading
my ($cntTStart,$cntDef,$cntSet,$cntEWT,$cntPBulk,$cntRBulk) = (0,0,0,0,0,0); my ($cntTStart,$cntDef,$cntSet,$cntEWT,$cntPBulk,$cntRBulk) = (0,0,0,0,0,0);
while(<rFile>){ while(<rFile>){
chomp; chomp;
@ -2263,6 +2278,15 @@ sub HMinfo_loadConfig($$@) {####################################################
} }
close(rFile); close(rFile);
foreach ( @tmplList){
my @tmplCmd = split("=>",$_);
next if (!defined $tmplCmd[4]);
delete $HMConfig::culHmTpl{$tmplCmd[1]};
my $r = HMinfo_templateDef($tmplCmd[1],$tmplCmd[2],$tmplCmd[3],split(" ",$tmplCmd[4]));
$cntDef++;
}
$tmplDefChange = 0;# all changes are obsolete
$tmplUsgChange = 0;# all changes are obsolete
foreach my $eN (keys %changes){ foreach my $eN (keys %changes){
foreach my $reg (keys %{$changes{$eN}}){ foreach my $reg (keys %{$changes{$eN}}){
$defs{$eN}{READINGS}{$reg}{VAL} = $changes{$eN}{$reg}{d}; $defs{$eN}{READINGS}{$reg}{VAL} = $changes{$eN}{$reg}{d};
@ -2279,15 +2303,6 @@ sub HMinfo_loadConfig($$@) {####################################################
$ret .= "\nadded data:\n " .join("\n ",@el) if (scalar@el); $ret .= "\nadded data:\n " .join("\n ",@el) if (scalar@el);
$ret .= "\nfile data incomplete:\n ".join("\n ",@elincmpl) if (scalar@elincmpl); $ret .= "\nfile data incomplete:\n ".join("\n ",@elincmpl) if (scalar@elincmpl);
$ret .= "\nentries not defind:\n " .join("\n ",@entryNF) if (scalar@entryNF); $ret .= "\nentries not defind:\n " .join("\n ",@entryNF) if (scalar@entryNF);
foreach ( @tmplList){
my @tmplCmd = split("=>",$_);
next if (!defined $tmplCmd[4]);
delete $HMConfig::culHmTpl{$tmplCmd[1]};
my $r = HMinfo_templateDef($tmplCmd[1],$tmplCmd[2],$tmplCmd[3],split(" ",$tmplCmd[4]));
$cntDef++;
}
$tmplDefChange = 0;# all changes are obsolete
$tmplUsgChange = 0;# all changes are obsolete
foreach my $tmpN(devspec2array("TYPE=CUL_HM")){ foreach my $tmpN(devspec2array("TYPE=CUL_HM")){
$defs{$tmpN}{helper}{tmplChg} = 0 if(!$defs{$tmpN}{helper}{role}{vrt}); $defs{$tmpN}{helper}{tmplChg} = 0 if(!$defs{$tmpN}{helper}{role}{vrt});
CUL_HM_setTmplDisp($defs{$tmpN});#set readings if desired CUL_HM_setTmplDisp($defs{$tmpN});#set readings if desired
@ -2299,7 +2314,7 @@ sub HMinfo_loadConfig($$@) {####################################################
} }
} }
} }
Log3 $hash,4,"HMinfo load config file" Log3 $hash,4,"HMinfo load config file:$fName"
."\n templateReDefinition:$cntTStart" ."\n templateReDefinition:$cntTStart"
."\n templateDef:$cntDef" ."\n templateDef:$cntDef"
."\n templateSet:$cntSet" ."\n templateSet:$cntSet"
@ -2307,7 +2322,8 @@ sub HMinfo_loadConfig($$@) {####################################################
."\n peerListUpdate:$cntPBulk" ."\n peerListUpdate:$cntPBulk"
."\n regListUpdate:$cntRBulk" ."\n regListUpdate:$cntRBulk"
; ;
HMinfo_GetFn($hash,$hash->{NAME},"templateChk"); $modules{HMinfo}{helper}{initDone} = 1; #enable configCheck again
HMinfo_GetFn($hash,$hash->{NAME},"configCheck");
return $ret; return $ret;
} }
sub HMinfo_purgeConfig($) {#################################################### sub HMinfo_purgeConfig($) {####################################################