mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-03-04 05:16:45 +00:00
HMtemplate:add command overview
git-svn-id: https://svn.fhem.de/fhem/trunk@17839 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
195ebc50f3
commit
0f0a14bba5
@ -49,6 +49,19 @@ my %HtState =(
|
|||||||
]}
|
]}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
my %cmdDesc =(
|
||||||
|
select =>{param=>["name" ] ,desc=>"choose a template for assign "}
|
||||||
|
,dismiss =>{param=>["-" ] ,desc=>"remove template selection (opposit of select)"}
|
||||||
|
,defTmpl =>{param=>["name" ] ,desc=>"define a new template"}
|
||||||
|
,delete =>{param=>["name" ] ,desc=>"delete a template"}
|
||||||
|
,edit =>{param=>["name" ] ,desc=>"edit a template"}
|
||||||
|
,importReg =>{param=>["entity" ] ,desc=>"import register from a CUL_HM entity to start generatng a template"}
|
||||||
|
,save =>{param=>["-" ] ,desc=>"save the template"}
|
||||||
|
,saveAs =>{param=>["filename" ] ,desc=>"save the template under a new name"}
|
||||||
|
,assign =>{param=>["-" ] ,desc=>"assign the template to a CUL_HM entity defined in attributes"}
|
||||||
|
,unassign =>{param=>["entity","peer"] ,desc=>"remove the template assignment from a CUL_HM entity"}
|
||||||
|
);
|
||||||
|
|
||||||
sub HMtemplate_Initialize($$) {################################################
|
sub HMtemplate_Initialize($$) {################################################
|
||||||
my ($hash) = @_;
|
my ($hash) = @_;
|
||||||
|
|
||||||
@ -263,7 +276,7 @@ sub HMtemplate_GetFn($@) {#####################################################
|
|||||||
|
|
||||||
$cmd = "?" if(!$cmd);# by default print options
|
$cmd = "?" if(!$cmd);# by default print options
|
||||||
#------------ statistics ---------------
|
#------------ statistics ---------------
|
||||||
if($cmd eq "defineCmd"){##print protocol-events-------------------------
|
if ($cmd eq "defineCmd"){##print protocol-events-------------------------
|
||||||
my ($tN) = @a;
|
my ($tN) = @a;
|
||||||
return "template not given" if(!defined $tN);
|
return "template not given" if(!defined $tN);
|
||||||
return "template unknown $tN" if(!defined $culHmTpl->{$tN});
|
return "template unknown $tN" if(!defined $culHmTpl->{$tN});
|
||||||
@ -274,7 +287,7 @@ sub HMtemplate_GetFn($@) {#####################################################
|
|||||||
." ".join(" ",map{$_.=":".$culHmTpl->{$tN}{reg}{$_}} keys %{$culHmTpl->{$tN}{reg}})
|
." ".join(" ",map{$_.=":".$culHmTpl->{$tN}{reg}{$_}} keys %{$culHmTpl->{$tN}{reg}})
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
elsif($cmd eq "regInfo"){##print protocol-events-------------------------
|
elsif($cmd eq "regInfo") {##print protocol-events-------------------------
|
||||||
my @regArr = map { $_ =~ s/Reg_//g; $_ }
|
my @regArr = map { $_ =~ s/Reg_//g; $_ }
|
||||||
grep /^Reg_/,keys %{$attr{$name}};
|
grep /^Reg_/,keys %{$attr{$name}};
|
||||||
if (InternalVal($name,"tpl_type","") =~ m/peer-(short|long)/){
|
if (InternalVal($name,"tpl_type","") =~ m/peer-(short|long)/){
|
||||||
@ -282,9 +295,26 @@ sub HMtemplate_GetFn($@) {#####################################################
|
|||||||
}
|
}
|
||||||
return CUL_HM_getRegInfo($name); #
|
return CUL_HM_getRegInfo($name); #
|
||||||
}
|
}
|
||||||
|
elsif($cmd eq "cmdList") {##print protocol-events-------------------------
|
||||||
|
#select : choose a template to assign it to an entity
|
||||||
|
my %cmdInfo;
|
||||||
|
foreach my $s(keys %HtState){
|
||||||
|
foreach(@{$HtState{$s}{cmd}}){
|
||||||
|
$cmdInfo{$_}{state}{$HtState{$s}{name}} = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
my $ret = "under construction\n";
|
||||||
|
foreach(sort keys %cmdInfo){
|
||||||
|
$ret .= "\n $_: $cmdDesc{$_}{desc}\n";
|
||||||
|
$ret .= " param: ".join(", ",@{$cmdDesc{$_}{param}})."\n";
|
||||||
|
$ret .= " available in state: ".join(",",sort keys %{$cmdInfo{$_}{state}});#join(",",sort keys %{$cmdInfo{$_}{state}});
|
||||||
|
}
|
||||||
|
return $ret;
|
||||||
|
}
|
||||||
else{
|
else{
|
||||||
my @cmdLst = ( "defineCmd"
|
my @cmdLst = ( "defineCmd"
|
||||||
,"regInfo"
|
,"regInfo"
|
||||||
|
,"cmdList"
|
||||||
);
|
);
|
||||||
|
|
||||||
my $tList = ":".join(",",sort keys%{$culHmTpl});
|
my $tList = ":".join(",",sort keys%{$culHmTpl});
|
||||||
@ -309,7 +339,7 @@ sub HMtemplate_SetFn($@) {#####################################################
|
|||||||
return "$tName is not defined" if (! defined $culHmTpl->{$tName});
|
return "$tName is not defined" if (! defined $culHmTpl->{$tName});
|
||||||
${$eSt} = "s0";
|
${$eSt} = "s0";
|
||||||
if (eval "defined(&HMinfo_templateMark)"){
|
if (eval "defined(&HMinfo_templateMark)"){
|
||||||
HMinfo_templateDef($tName,"del");
|
return HMinfo_templateDef($tName,"del");
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
return "HMInfo is not defined";
|
return "HMInfo is not defined";
|
||||||
@ -359,16 +389,10 @@ sub HMtemplate_SetFn($@) {#####################################################
|
|||||||
my @r = keys %{$culHmTpl->{$templ}{reg}};
|
my @r = keys %{$culHmTpl->{$templ}{reg}};
|
||||||
|
|
||||||
################### maybe store type in template hash##########
|
################### maybe store type in template hash##########
|
||||||
my $tType;
|
# first reg is same as all. check if peer is required or it is used in
|
||||||
foreach my $rN (@r){
|
my $tType = ($culHmRegDef->{$r[0]}{p} eq "n" ? "basic"
|
||||||
if ($culHmRegDefLS->{$rN}){# template for short/long
|
:($culHmRegDefLS->{$r[0]} ? "peer-Long"
|
||||||
$tType = "peer-Long";
|
: "peer-both"));
|
||||||
}
|
|
||||||
elsif ($culHmRegDef->{$rN}){
|
|
||||||
if($culHmRegDef->{$rN}{l} eq 3){$tType = "peer-both"}
|
|
||||||
else{ $tType = "basic"; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
###################
|
###################
|
||||||
#### find matching entities ##########
|
#### find matching entities ##########
|
||||||
my @e = HMtemplate_sourceList($tType);
|
my @e = HMtemplate_sourceList($tType);
|
||||||
@ -399,7 +423,7 @@ sub HMtemplate_SetFn($@) {#####################################################
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
elsif ($cmd eq "assign" ) {#
|
elsif ($cmd eq "assign" ) {#
|
||||||
my @p = split(" ",$culHmTpl->{$hash->{tpl_Name}}{p});## get params in correct order
|
my @p = split(" ",$culHmTpl->{$hash->{tpl_Name}}{p});## get params in correct order
|
||||||
$_ = $attr{$name}{"tpl_param_$_"} foreach (@p);
|
$_ = $attr{$name}{"tpl_param_$_"} foreach (@p);
|
||||||
return HMinfo_templateSet( $attr{$name}{tpl_entity}
|
return HMinfo_templateSet( $attr{$name}{tpl_entity}
|
||||||
@ -409,7 +433,7 @@ sub HMtemplate_SetFn($@) {#####################################################
|
|||||||
,@p
|
,@p
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
elsif ($cmd eq "unassign" ) {# General - still open
|
elsif ($cmd eq "unassign" ) {#
|
||||||
my ($entityName,$entityPeer) = split(";",$a[0]);
|
my ($entityName,$entityPeer) = split(";",$a[0]);
|
||||||
|
|
||||||
return HMinfo_templateDel( $entityName
|
return HMinfo_templateDel( $entityName
|
||||||
@ -476,7 +500,7 @@ sub HMtemplate_SetFn($@) {#####################################################
|
|||||||
elsif ($cmd eq "save" ) {#
|
elsif ($cmd eq "save" ) {#
|
||||||
my $tName = $hash->{tpl_Name};
|
my $tName = $hash->{tpl_Name};
|
||||||
if (eval "defined(&HMinfo_templateMark)"){
|
if (eval "defined(&HMinfo_templateMark)"){
|
||||||
HMinfo_templateDef($tName,"del");# overwrite means: delete and write!
|
HMinfo_templateDef($tName,"delForce");# overwrite means: delete and write!
|
||||||
return HMtemplate_save($name,$tName);
|
return HMtemplate_save($name,$tName);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
@ -515,14 +539,14 @@ sub HMtemplate_SetFn($@) {#####################################################
|
|||||||
$hash->{"tpl_Info".$i++}= $_ foreach (@{$HtState{${$eSt}}{info}});
|
$hash->{"tpl_Info".$i++}= $_ foreach (@{$HtState{${$eSt}}{info}});
|
||||||
return $ret;
|
return $ret;
|
||||||
}
|
}
|
||||||
sub HMtemplate_intersection($$) {#
|
sub HMtemplate_intersection($$) {##############################################
|
||||||
my ($x, $y) = @_;
|
my ($x, $y) = @_;
|
||||||
my %seen;
|
my %seen;
|
||||||
@seen{ @$x } = (1) x @$x;
|
@seen{ @$x } = (1) x @$x;
|
||||||
return grep { $seen{ $_} } @$y;
|
return grep { $seen{ $_} } @$y;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub HMtemplate_import(@){####################################################
|
sub HMtemplate_import(@){######################################################
|
||||||
my ($name,$eName,$tType,$tPeer) = @_;
|
my ($name,$eName,$tType,$tPeer) = @_;
|
||||||
my @regReads;
|
my @regReads;
|
||||||
my ($ty,$match) = ("","");
|
my ($ty,$match) = ("","");
|
||||||
@ -584,7 +608,7 @@ sub HMtemplate_init(@) {#
|
|||||||
delete $attr{$name}{$_} foreach(grep /^tpl_/,keys %{$attr{$name}});#clean the settings
|
delete $attr{$name}{$_} foreach(grep /^tpl_/,keys %{$attr{$name}});#clean the settings
|
||||||
$modules{HMtemplate}{AttrList} = $hash->{helper}{attrList};
|
$modules{HMtemplate}{AttrList} = $hash->{helper}{attrList};
|
||||||
}
|
}
|
||||||
sub HMtemplate_noDup(@) {#return list with no duplicates###########################
|
sub HMtemplate_noDup(@) {#return list with no duplicates#######################
|
||||||
my %all;
|
my %all;
|
||||||
return "" if (scalar(@_) == 0);
|
return "" if (scalar(@_) == 0);
|
||||||
$all{$_}=0 foreach (grep {defined($_)} @_);
|
$all{$_}=0 foreach (grep {defined($_)} @_);
|
||||||
@ -595,12 +619,13 @@ sub HMtemplate_noDup(@) {#return list with no duplicates########################
|
|||||||
sub HMtemplate_sourceList($){
|
sub HMtemplate_sourceList($){
|
||||||
my $type = shift;
|
my $type = shift;
|
||||||
my $match;
|
my $match;
|
||||||
if ($type =~ m/peer-(Long|Short|both)/){$match = "RegL_03"}
|
if ($type =~ m/peer-(Long|Short)/){$match = "RegL_03.*"}
|
||||||
elsif($type eq "basic" ){$match = "RegL_(01|00)"}
|
elsif($type =~ m/peer/ ){$match = "RegL_..\..*"}
|
||||||
|
elsif($type eq "basic" ){$match = "RegL_..\."}
|
||||||
|
|
||||||
my @list;
|
my @list;
|
||||||
foreach my $e (devspec2array("TYPE=CUL_HM:FILTER=subType!=virtual")){
|
foreach my $e (devspec2array("TYPE=CUL_HM:FILTER=subType!=virtual")){
|
||||||
my @l1 = grep/$match/,CUL_HM_reglUsed($e);
|
my @l1 = grep/$match$/,CUL_HM_reglUsed($e);
|
||||||
$_ = $e foreach(@l1);
|
$_ = $e foreach(@l1);
|
||||||
push @list,@l1;
|
push @list,@l1;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user