2
0
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:
martinp876 2016-09-11 15:21:08 +00:00
parent 70b999e894
commit 01489e1e05
3 changed files with 56 additions and 19 deletions

View File

@ -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",""));

View File

@ -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) = @_;

View File

@ -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);