2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-09 20:57:11 +00:00

10_CUL_HM: add get DeviceInfo command. Some bug fixes.

git-svn-id: https://svn.fhem.de/fhem/trunk@19144 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
martinp876 2019-04-07 18:04:37 +00:00
parent 0d006abb96
commit ba1e4013c9

View File

@ -30,6 +30,7 @@ my $culHmGlobalGets =\%HMConfig::culHmGlobalGets;
my $culHmVrtGets =\%HMConfig::culHmVrtGets;
my $culHmSubTypeGets =\%HMConfig::culHmSubTypeGets;
my $culHmModelGets =\%HMConfig::culHmModelGets;
my $culHmGlobalGetsDev =\%HMConfig::culHmGlobalGetsDev;
my $culHmSubTypeDevSets =\%HMConfig::culHmSubTypeDevSets;
my $culHmGlobalSetsChn =\%HMConfig::culHmGlobalSetsChn;
@ -158,6 +159,7 @@ sub CUL_HM_Initialize($) {
my @modellist;
foreach my $model (keys %{$culHmModel}){
next if (!$model);
push @modellist,$culHmModel->{$model}{name};
}
@ -3821,6 +3823,7 @@ sub CUL_HM_Get($@) {#+++++++++++++++++ get command+++++++++++++++++++++++++++++
$h = $culHmVrtGets->{$cmd} if(!defined($h) && $roleV);
$h = $culHmSubTypeGets->{$st}{$cmd} if(!defined($h) && $culHmSubTypeGets->{$st});
$h = $culHmModelGets->{$md}{$cmd} if(!defined($h) && $culHmModelGets->{$md});
$h = $culHmGlobalGetsDev->{$cmd} if(!defined($h) && $roleD);
$h = "" if(!defined($h) && (eval "defined(&HMinfo_GetFn)" && $cmd eq "regTable"));
my @h;
@ -3832,17 +3835,20 @@ sub CUL_HM_Get($@) {#+++++++++++++++++ get command+++++++++++++++++++++++++++++
if($roleV) {foreach(keys %{$culHmVrtGets} ){push @arr,"$_:".$culHmVrtGets->{$_} }};
if($culHmSubTypeGets->{$st}) {foreach(keys %{$culHmSubTypeGets->{$st}}){push @arr,"$_:".${$culHmSubTypeGets->{$st}}{$_} }};
if($culHmModelGets->{$md}) {foreach(keys %{$culHmModelGets->{$md}} ){push @arr,"$_:".${$culHmModelGets->{$md}}{$_} }};
if($culHmModelGets->{$md}) {foreach(keys %{$culHmModelGets->{$md}} ){push @arr,"$_:".${$culHmModelGets->{$md}}{$_} }};
if(eval"defined(&HMinfo_GetFn)"){ {push @arr,"regTable:" }};
if($roleD) {foreach(keys %{$culHmGlobalGetsDev} ){push @arr,"$_:".$culHmGlobalGetsDev->{$_} }};
if(eval"defined(&HMinfo_GetFn)"){ {push @arr,"regTable:" }};
foreach(@arr){
my ($cmd,$val) = split(":",$_,2);
if (!$val ||
my ($cmdS,$val) = split(":",$_,2);
if (!$val){
$_ = "$cmdS:noArg";
}
elsif (
$val !~ m/^\[.*\]$/ ||
$val =~ m/\[.*\[/ ||
$val =~ m/(\<|\>)]/
){
$_ = $cmd;
$_ = $cmdS;
}
else{
$val =~ s/(\[|\])//g;
@ -3854,7 +3860,7 @@ sub CUL_HM_Get($@) {#+++++++++++++++++ get command+++++++++++++++++++++++++++++
$_ = join(",",@list);
}
}
$_ = "$cmd:".join(",",@vArr);
$_ = "$cmdS:".join(",",@vArr);
}
}
@ -3944,8 +3950,9 @@ sub CUL_HM_Get($@) {#+++++++++++++++++ get command+++++++++++++++++++++++++++++
elsif($cmd eq "cmdList") { #################################################
my @arr;
if(!$roleV) {push @arr,"$_ $culHmGlobalGets->{$_}" foreach (keys %{$culHmGlobalGets})};
if($roleV) {push @arr,"$_ $culHmVrtGets->{$_}" foreach (keys %{$culHmVrtGets})};
if(!$roleV) {push @arr,"$_ $culHmGlobalGets->{$_}" foreach (keys %{$culHmGlobalGets} )};
if($roleV) {push @arr,"$_ $culHmVrtGets->{$_}" foreach (keys %{$culHmVrtGets} )};
if($roleD) {push @arr,"$_ $culHmGlobalGetsDev->{$_}" foreach (keys %{$culHmGlobalGetsDev})};
push @arr,"$_ $culHmSubTypeGets->{$st}{$_}" foreach (keys %{$culHmSubTypeGets->{$st}});
push @arr,"$_ $culHmModelGets->{$md}{$_}" foreach (keys %{$culHmModelGets->{$md}});
@ -4051,9 +4058,51 @@ sub CUL_HM_Get($@) {#+++++++++++++++++ get command+++++++++++++++++++++++++++++
}
}
}
elsif($cmd eq "info"){ #####################################################
elsif($cmd eq "status"){ ###################################################
return CUL_HM_ActInfo();
}
elsif($cmd eq "deviceInfo"){ ###############################################
my $infoTypeLong = (!defined $a[2] || $a[2] ne 'long')?0:1 ;
my $orgMId = AttrVal($devName,".mId","");
my $FrcMd = AttrVal($devName,"modelForce","");
my $actMId = $defs{$devName}{helper}{mId}; # active mId
my $act = ReadingsVal($devName,"Activity","-");
my $ret = " Device name:".$devName;
if($infoTypeLong){
$ret .= "\n org ID \t:".$orgMId ." Model=".$culHmModel->{$orgMId}{name};
$ret .= "\n forced \t:".CUL_HM_getmIdFromModel($FrcMd)." Model=".$FrcMd if($FrcMd ne "");
$ret .= "\n alias ID \t:".$actMId ." Model=".$culHmModel->{$actMId}{alias} if($orgMId ne $devName);
}
else{
$ret .= "\n mId \t:".CUL_HM_getmIdFromModel($md)." Model=$md";
}
{ my $mode = $culHmModel->{$defs{$devName}{helper}{mId}}{rxt};
$mode =~ s/\bc\b/config/;
$mode =~ s/\bw\b/wakeup/;
$mode =~ s/\bb\b/burst/;
$mode =~ s/\b3\b/3Burst/;
$mode =~ s/\bl\b/lazyConf/;
$mode =~ s/\bf\b/burstCond/;
$mode =~ s/:/,/g;
$mode = "normal" if (!$mode);
$ret .= "\n mode \t:".$mode;
}
if(!$roleV){
$ret .= " - activity:".$act if ($act ne "-");
$ret .= "\n protState\t: " .InternalVal($devName,"protState" ,(!$roleC ? InternalVal($devName,"STATE","unknown"):"unknown"));
$ret .= " pending: ".InternalVal($devName,"protCmdPend","none" );
$ret .= "\n";
}
if ($infoTypeLong){
foreach (grep(/^channel_/,keys %{$defs{$devName}})){
$ret .= "\n " .$defs{$devName}{$_}."\t state:".InternalVal($defs{$devName}{$_},"STATE","unknown");
}
}
return $ret;
}
Log3 $name,3,"CUL_HM get $name " . join(" ", @a[1..$#a]);
@ -4164,7 +4213,7 @@ sub CUL_HM_Set($@) {#+++++++++++++++++ set command+++++++++++++++++++++++++++++
}
}
@arr1 = ("--") if (!scalar @arr1);
my $usg = "Unknown argument $cmd, choose one of ".join(" ",sort @arr1);
my $usg = "Unknown argument $cmd, choose one of ".join(" ",sort @arr1)." ";
my $pl = CUL_HM_getPeerOption($name);
$usg .= " peerSmart:$pl" if ($pl);
@ -4199,8 +4248,8 @@ sub CUL_HM_Set($@) {#+++++++++++++++++ set command+++++++++++++++++++++++++++++
$usg =~ s/ (trgPress.:)/ $1all,$peers/g;
}
else{#remove command
$usg =~ s/ (press|event)[SL]//g;
$usg =~ s/ trg(Press|Event)[SL]//g;
$usg =~ s/(press|event)[SL]\S*? //g;
$usg =~ s/trg(Press|Event)[SL]\S*? //g;
}
}
return $usg;
@ -8524,6 +8573,7 @@ sub CUL_HM_initRegHash() { #duplicate short and long press register
else { # success - now update some datafiels
Log3 undef, 3, "additional HM config file loaded: $file";
foreach (keys %{$culHmModel}){
next if(!$_);
$culHmModel2Id->{$culHmModel->{$_}{name}} = $_ ;
$culHmModel->{$_}{alias} = $culHmModel->{$_}{name} if (!defined $culHmModel->{$_}{alias});
}