mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-02-07 16:59:18 +00:00
CUL_HM: minor enhancements
git-svn-id: https://svn.fhem.de/fhem/trunk@12138 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
70b999e894
commit
01489e1e05
@ -80,7 +80,7 @@ sub HMLAN_Initialize($) {
|
||||
"loadLevel ".
|
||||
"hmLanQlen:1_min,2_low,3_normal,4_high,5_critical ".
|
||||
"wdTimer:5,10,15,20,25 ".
|
||||
"logIDs ".
|
||||
"logIDs:multiple,sys,all ".
|
||||
$readingFnAttributes;
|
||||
}
|
||||
sub HMLAN_Define($$) {#########################################################
|
||||
@ -250,6 +250,7 @@ sub HMLAN_Attr(@) {############################################################
|
||||
}
|
||||
}
|
||||
elsif($aName eq "logIDs"){
|
||||
HMLAN_UpdtLogId();
|
||||
if ($cmd eq "set"){
|
||||
if ($init_done){
|
||||
if ($aVal){
|
||||
@ -349,6 +350,15 @@ sub HMLAN_Attr(@) {############################################################
|
||||
return;
|
||||
}
|
||||
|
||||
sub HMLAN_UpdtLogId() {####################################################
|
||||
$modules{HMLAN}{AttrList} =~ s/logIDs:.*? //;
|
||||
$modules{HMLAN}{AttrList} =~ s/logIDs:.*?$//;
|
||||
$modules{HMLAN}{AttrList} .= " logIDs:multiple,sys,all,"
|
||||
.join(",",(devspec2array("TYPE=CUL_HM:FILTER=DEF=......:FILTER=subType!=virtual")));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
sub HMLAN_UpdtMsgLoad($$) {####################################################
|
||||
my($name,$val) = @_;
|
||||
my $hash = $defs{$name};
|
||||
@ -949,7 +959,6 @@ sub HMLAN_assignIDs($){
|
||||
sub HMLAN_writeAesKey($) {#####################################################
|
||||
my ($name) = @_;
|
||||
return if (!$name || !$defs{$name} || $defs{$name}{TYPE} ne "HMLAN");
|
||||
# return if (!$init_done); General: need to wait for init done and then redo
|
||||
my %keys = ();
|
||||
my $vccu = InternalVal($name,"owner_CCU",$name);
|
||||
$vccu = $name if(!AttrVal($vccu,"hmKey",""));
|
||||
|
@ -4786,7 +4786,10 @@ sub CUL_HM_Set($@) {#+++++++++++++++++ set command+++++++++++++++++++++++++++++
|
||||
}
|
||||
elsif($cmd eq "playTone") { #################################################
|
||||
my $msg;
|
||||
if ($a[2] eq 'replay'){
|
||||
if (!defined $a[2]){
|
||||
return "please enter parameter";
|
||||
}
|
||||
elsif ($a[2] eq 'replay'){
|
||||
$msg = ReadingsVal($chnHash->{NAME},".lastTone","");
|
||||
}
|
||||
else{
|
||||
@ -6267,6 +6270,9 @@ sub CUL_HM_pushConfig($$$$$$$$@) {#generate messages to config data to register
|
||||
next if (!$change);#no changes
|
||||
$change =~ s/00:00//;
|
||||
$change =~ s/(\ |:)//g;
|
||||
if ($nrRd){
|
||||
$chnhash->{READINGS}{$regPre.$nrn}{VAL} =~ s/00:00// #mark incomplete as wego for a change;
|
||||
}
|
||||
my $pN;
|
||||
$changed = 1;# yes, we did
|
||||
($list,$pN) = ($1,$2) if($nrn =~ m/RegL_(..)\.(.*)/);
|
||||
@ -6293,7 +6299,10 @@ sub CUL_HM_pushConfig($$$$$$$$@) {#generate messages to config data to register
|
||||
}
|
||||
#########
|
||||
}
|
||||
CUL_HM_qAutoRead($hash->{NAME},3) if ($changed);
|
||||
if ($changed){
|
||||
CUL_HM_complConfig($hash->{NAME},1);
|
||||
CUL_HM_qAutoRead($hash->{NAME},3) ;
|
||||
}
|
||||
}
|
||||
sub CUL_HM_PushCmdStack($$) {
|
||||
my ($chnhash, $cmd) = @_;
|
||||
|
@ -426,7 +426,6 @@ sub HMinfo_regCheck(@) { ######################################################
|
||||
|
||||
foreach my $rNm (@lsNo){# check non-peer lists
|
||||
next if (!$rNm || $rNm eq "");
|
||||
|
||||
if ( !$ehash->{READINGS}{$rNm}
|
||||
|| !$ehash->{READINGS}{$rNm}{VAL}) {push @mReg, $rNm;}
|
||||
elsif ( $ehash->{READINGS}{$rNm}{VAL} !~ m/00:00/){push @iReg, $rNm;}
|
||||
@ -1578,7 +1577,18 @@ sub HMinfo_SetFn($@) {#########################################################
|
||||
my $fn = $a[0]?$a[0]:AttrVal($name,"configFilename","regSave.cfg");
|
||||
$fn = "$attr{global}{modpath}/".AttrVal($name,"configDir",".")."\/".$fn
|
||||
if ($fn !~ m/\//);
|
||||
$ret = HMinfo_verifyConfig($filter,$fn);
|
||||
|
||||
if ($hash->{CL}){
|
||||
my $id = ++$hash->{nb}{cnt};
|
||||
my $bl = BlockingCall("HMinfo_verifyConfig", join(",",("$name;$id;$hash->{CL}{NAME}",$fn)),
|
||||
"HMinfo_bpPost", 30,
|
||||
"HMinfo_bpAbort", "$name:$id");
|
||||
$hash->{nb}{$id}{$_} = $bl->{$_} foreach (keys %{$bl});
|
||||
$ret = "";
|
||||
}
|
||||
else{
|
||||
$ret = HMinfo_verifyConfig("$name;0;none,$fn");
|
||||
}
|
||||
}
|
||||
elsif($cmd eq "purgeConfig"){##action: purgeConfig---------------------------
|
||||
my $id = ++$hash->{nb}{cnt};
|
||||
@ -1709,28 +1719,28 @@ sub HMInfo_help(){ ############################################################
|
||||
;
|
||||
}
|
||||
|
||||
sub HMinfo_verifyConfig($@) {##################################################
|
||||
my ($filter,$fName)=@_;
|
||||
$filter = "." if (!$filter);
|
||||
my $ret;
|
||||
|
||||
sub HMinfo_verifyConfig($) {##################################################
|
||||
my ($param) = @_;
|
||||
my ($id,$fName) = split ",",$param;
|
||||
HMinfo_purgeConfig($param);
|
||||
open(aSave, "$fName") || return("Can't open $fName: $!");
|
||||
my @elPeer = ();
|
||||
my @elReg = ();
|
||||
my @entryNF = ();
|
||||
my @elOk = ();
|
||||
my %nh;
|
||||
while(<aSave>){
|
||||
chomp;
|
||||
my $line = $_;
|
||||
$line =~ s/\r//g;
|
||||
next if ( $line !~ m/set .* (peerBulk|regBulk) .*/);
|
||||
$line =~ s/#.*//;
|
||||
my ($cmd1,$eN,$cmd,$param) = split(" ",$line,4);
|
||||
next if ($eN !~ m/$filter/);
|
||||
if (!$eN || !$defs{$eN}){
|
||||
push @entryNF,"$eN deleted";
|
||||
next;
|
||||
}
|
||||
|
||||
$nh{$eN} = 1 if (!defined $nh{$eN});#
|
||||
if($cmd eq "peerBulk"){
|
||||
my $ePeer = AttrVal($eN,"peerIDs","");
|
||||
if ($param ne $ePeer){
|
||||
@ -1742,6 +1752,7 @@ sub HMinfo_verifyConfig($@) {##################################################
|
||||
my @onlyEnt = grep { !$ep{$_} } @ePeers;
|
||||
push @elPeer,"$eN peer deleted: $_" foreach(@onlyFile);
|
||||
push @elPeer,"$eN peer added : $_" foreach(@onlyEnt);
|
||||
$nh{$eN} = 0 if(scalar@onlyFile || scalar @onlyEnt);
|
||||
}
|
||||
}
|
||||
elsif($cmd eq "regBulk"){
|
||||
@ -1788,22 +1799,24 @@ sub HMinfo_verifyConfig($@) {##################################################
|
||||
push @elReg,"$eN "
|
||||
.($peer?": peer:$peer ":"")
|
||||
."addr:$a changed from $r{$a}{f} to $r{$a}{c} - effected RegName:$rgN";
|
||||
$nh{$eN} = 0;
|
||||
}
|
||||
|
||||
}
|
||||
push @elOk," $eN" if ( !scalar @elPeer
|
||||
&&!scalar @elReg);
|
||||
}
|
||||
}
|
||||
close(aSave);
|
||||
@elReg = HMinfo_noDup(@elReg);
|
||||
@elOk = HMinfo_noDup(@elOk);
|
||||
$ret .= "\nverified:\n " .join("\n ",sort(@elOk)) if (scalar @elOk);
|
||||
foreach (sort keys(%nh)){
|
||||
push @elOk,"$_" if($nh{$_});
|
||||
}
|
||||
my $ret;
|
||||
$ret .= "\npeer mismatch:\n " .join("\n ",sort(@elPeer)) if (scalar @elPeer);
|
||||
$ret .= "\nreg mismatch:\n " .join("\n ",sort(@elReg )) if (scalar @elReg);
|
||||
$ret .= "\nmissing devices:\n " .join("\n ",sort(@entryNF)) if (scalar @entryNF);
|
||||
|
||||
return $ret;
|
||||
# $ret .= "\nverified:\n " .join("\n ",sort(@elOk)) if (scalar @elOk);
|
||||
$ret =~ s/\n/-ret-/g;
|
||||
return "$id;$ret";
|
||||
}
|
||||
sub HMinfo_loadConfig($@) {####################################################
|
||||
my ($filter,$fName)=@_;
|
||||
@ -1944,6 +1957,12 @@ sub HMinfo_purgeConfig($) {####################################################
|
||||
chomp;
|
||||
my $line = $_;
|
||||
$line =~ s/\r//g;
|
||||
if($line =~ m/entity:/){#remove an old entry. Last entry is the final.
|
||||
my $name = $line;
|
||||
$name =~ s/.*entity://;
|
||||
$name =~ s/ .*//;
|
||||
delete $purgeH{$name};
|
||||
}
|
||||
next if ( $line !~ m/set (.*) (peerBulk|regBulk) (.*)/
|
||||
&& $line !~ m/(setreading) .*/);
|
||||
my ($command,$timeStamp) = split("#",$line,2);
|
||||
|
Loading…
x
Reference in New Issue
Block a user