2
0
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:
martinp876 2018-11-25 10:51:55 +00:00
parent 195ebc50f3
commit 0f0a14bba5

View File

@ -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($$) {################################################
my ($hash) = @_;
@ -282,9 +295,26 @@ sub HMtemplate_GetFn($@) {#####################################################
}
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{
my @cmdLst = ( "defineCmd"
,"regInfo"
,"cmdList"
);
my $tList = ":".join(",",sort keys%{$culHmTpl});
@ -309,7 +339,7 @@ sub HMtemplate_SetFn($@) {#####################################################
return "$tName is not defined" if (! defined $culHmTpl->{$tName});
${$eSt} = "s0";
if (eval "defined(&HMinfo_templateMark)"){
HMinfo_templateDef($tName,"del");
return HMinfo_templateDef($tName,"del");
}
else{
return "HMInfo is not defined";
@ -359,16 +389,10 @@ sub HMtemplate_SetFn($@) {#####################################################
my @r = keys %{$culHmTpl->{$templ}{reg}};
################### maybe store type in template hash##########
my $tType;
foreach my $rN (@r){
if ($culHmRegDefLS->{$rN}){# template for short/long
$tType = "peer-Long";
}
elsif ($culHmRegDef->{$rN}){
if($culHmRegDef->{$rN}{l} eq 3){$tType = "peer-both"}
else{ $tType = "basic"; }
}
}
# first reg is same as all. check if peer is required or it is used in
my $tType = ($culHmRegDef->{$r[0]}{p} eq "n" ? "basic"
:($culHmRegDefLS->{$r[0]} ? "peer-Long"
: "peer-both"));
###################
#### find matching entities ##########
my @e = HMtemplate_sourceList($tType);
@ -409,7 +433,7 @@ sub HMtemplate_SetFn($@) {#####################################################
,@p
);
}
elsif ($cmd eq "unassign" ) {# General - still open
elsif ($cmd eq "unassign" ) {#
my ($entityName,$entityPeer) = split(";",$a[0]);
return HMinfo_templateDel( $entityName
@ -476,7 +500,7 @@ sub HMtemplate_SetFn($@) {#####################################################
elsif ($cmd eq "save" ) {#
my $tName = $hash->{tpl_Name};
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);
}
else{
@ -515,14 +539,14 @@ sub HMtemplate_SetFn($@) {#####################################################
$hash->{"tpl_Info".$i++}= $_ foreach (@{$HtState{${$eSt}}{info}});
return $ret;
}
sub HMtemplate_intersection($$) {#
sub HMtemplate_intersection($$) {##############################################
my ($x, $y) = @_;
my %seen;
@seen{ @$x } = (1) x @$x;
return grep { $seen{ $_} } @$y;
}
sub HMtemplate_import(@){####################################################
sub HMtemplate_import(@){######################################################
my ($name,$eName,$tType,$tPeer) = @_;
my @regReads;
my ($ty,$match) = ("","");
@ -584,7 +608,7 @@ sub HMtemplate_init(@) {#
delete $attr{$name}{$_} foreach(grep /^tpl_/,keys %{$attr{$name}});#clean the settings
$modules{HMtemplate}{AttrList} = $hash->{helper}{attrList};
}
sub HMtemplate_noDup(@) {#return list with no duplicates###########################
sub HMtemplate_noDup(@) {#return list with no duplicates#######################
my %all;
return "" if (scalar(@_) == 0);
$all{$_}=0 foreach (grep {defined($_)} @_);
@ -595,12 +619,13 @@ sub HMtemplate_noDup(@) {#return list with no duplicates########################
sub HMtemplate_sourceList($){
my $type = shift;
my $match;
if ($type =~ m/peer-(Long|Short|both)/){$match = "RegL_03"}
elsif($type eq "basic" ){$match = "RegL_(01|00)"}
if ($type =~ m/peer-(Long|Short)/){$match = "RegL_03.*"}
elsif($type =~ m/peer/ ){$match = "RegL_..\..*"}
elsif($type eq "basic" ){$match = "RegL_..\."}
my @list;
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);
push @list,@l1;
}