mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-03-10 09:16:53 +00:00
98_DOIF.pm: fixed: incorrect assignment of the device for set and get functions in Perl mode
git-svn-id: https://svn.fhem.de/fhem/trunk@22570 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
fdde1b85b6
commit
d9420dbb8f
@ -2119,6 +2119,7 @@ sub DOIF_CheckCond($$) {
|
|||||||
}
|
}
|
||||||
$cmdFromAnalyze="$hash->{NAME}: ".sprintf("warning in condition c%02d",($condition+1));
|
$cmdFromAnalyze="$hash->{NAME}: ".sprintf("warning in condition c%02d",($condition+1));
|
||||||
$lastWarningMsg="";
|
$lastWarningMsg="";
|
||||||
|
my $cur_hs=$hs;
|
||||||
$hs=$hash;
|
$hs=$hash;
|
||||||
my $ret=$hash->{MODEL} eq "Perl" ? eval("package DOIF; $command"):eval ($command);
|
my $ret=$hash->{MODEL} eq "Perl" ? eval("package DOIF; $command"):eval ($command);
|
||||||
if($@){
|
if($@){
|
||||||
@ -2134,7 +2135,7 @@ sub DOIF_CheckCond($$) {
|
|||||||
}
|
}
|
||||||
$lastWarningMsg="";
|
$lastWarningMsg="";
|
||||||
$cmdFromAnalyze = undef;
|
$cmdFromAnalyze = undef;
|
||||||
|
$hs=$cur_hs;
|
||||||
return ($ret,$err);
|
return ($ret,$err);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3210,6 +3211,7 @@ CmdDoIfPerl($$)
|
|||||||
my $ret;
|
my $ret;
|
||||||
my $err="";
|
my $err="";
|
||||||
my $i=0;
|
my $i=0;
|
||||||
|
my $cur_hs=$hs;
|
||||||
$hs=$hash;
|
$hs=$hash;
|
||||||
my $msg;
|
my $msg;
|
||||||
|
|
||||||
@ -3235,8 +3237,10 @@ CmdDoIfPerl($$)
|
|||||||
$hash->{helper}{last_timer}=0;
|
$hash->{helper}{last_timer}=0;
|
||||||
$hash->{helper}{sleeptimer}=-1;
|
$hash->{helper}{sleeptimer}=-1;
|
||||||
|
|
||||||
return("","") if ($tail =~ /^ *$/);
|
if ($tail =~ /^ *$/) {
|
||||||
|
$hs=$cur_hs;
|
||||||
|
return("","");
|
||||||
|
}
|
||||||
$tail =~ s/\$VAR/\$hash->{var}/g;
|
$tail =~ s/\$VAR/\$hash->{var}/g;
|
||||||
$tail =~ s/\$_(\w+)/\$hash->\{var\}\{$1\}/g;
|
$tail =~ s/\$_(\w+)/\$hash->\{var\}\{$1\}/g;
|
||||||
$tail =~ s/\$SELF/$hash->{NAME}/g;
|
$tail =~ s/\$SELF/$hash->{NAME}/g;
|
||||||
@ -3245,16 +3249,27 @@ CmdDoIfPerl($$)
|
|||||||
return ($msg,$err) if ($err);
|
return ($msg,$err) if ($err);
|
||||||
|
|
||||||
($err,$tail)=DOIF_DEF_TPL($hash,"defs",$tail);
|
($err,$tail)=DOIF_DEF_TPL($hash,"defs",$tail);
|
||||||
return ($tail,$err) if ($err);
|
if ($err) {
|
||||||
|
$hs=$cur_hs;
|
||||||
|
return ($tail,$err);
|
||||||
|
}
|
||||||
($err,$tail)=DOIF_FOR($hash,"defs",$tail);
|
($err,$tail)=DOIF_FOR($hash,"defs",$tail);
|
||||||
return($tail,$err) if ($err);
|
if ($err) {
|
||||||
|
$hs=$cur_hs;
|
||||||
|
return ($tail,$err);
|
||||||
|
}
|
||||||
|
|
||||||
($err,$tail)=DOIF_TPL($hash,"defs",$tail);
|
($err,$tail)=DOIF_TPL($hash,"defs",$tail);
|
||||||
return ($tail,$err) if ($err);
|
if ($err) {
|
||||||
|
$hs=$cur_hs;
|
||||||
|
return ($tail,$err);
|
||||||
|
}
|
||||||
|
|
||||||
($err,$msg)=DOIF_Perlblock($hash,"defs",$tail);
|
($err,$msg)=DOIF_Perlblock($hash,"defs",$tail);
|
||||||
return ($tail,$msg) if ($err);
|
if ($err) {
|
||||||
|
$hs=$cur_hs;
|
||||||
|
return ($tail,$err);
|
||||||
|
}
|
||||||
|
|
||||||
# while ($tail ne "") {
|
# while ($tail ne "") {
|
||||||
# ($beginning,$perlblock,$err,$tail)=GetBlockDoIf($tail,'[\{\}]');
|
# ($beginning,$perlblock,$err,$tail)=GetBlockDoIf($tail,'[\{\}]');
|
||||||
@ -3300,6 +3315,7 @@ CmdDoIfPerl($$)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
$hs=$cur_hs;
|
||||||
return("","")
|
return("","")
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3435,6 +3451,7 @@ DOIF_Define($$$)
|
|||||||
return undef if (AttrVal($hash->{NAME},"disable",""));
|
return undef if (AttrVal($hash->{NAME},"disable",""));
|
||||||
my $err;
|
my $err;
|
||||||
my $msg;
|
my $msg;
|
||||||
|
my $cur_hs=$hs;
|
||||||
$hs=$hash;
|
$hs=$hash;
|
||||||
if (AnalyzeCommandChain(undef,"version 98_DOIF.pm noheader") =~ "^98_DOIF.pm (.*)Z") {
|
if (AnalyzeCommandChain(undef,"version 98_DOIF.pm noheader") =~ "^98_DOIF.pm (.*)Z") {
|
||||||
$hash->{VERSION}=$1;
|
$hash->{VERSION}=$1;
|
||||||
@ -3462,9 +3479,11 @@ DOIF_Define($$$)
|
|||||||
if ($err ne "") {
|
if ($err ne "") {
|
||||||
$msg=$cmd if (!$msg);
|
$msg=$cmd if (!$msg);
|
||||||
my $errmsg="$name $type: $err: $msg";
|
my $errmsg="$name $type: $err: $msg";
|
||||||
|
$hs=$cur_hs;
|
||||||
return $errmsg;
|
return $errmsg;
|
||||||
} else {
|
} else {
|
||||||
DOIF_Set_Filter ($hash);
|
DOIF_Set_Filter ($hash);
|
||||||
|
$hs=$cur_hs;
|
||||||
return undef;
|
return undef;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3478,6 +3497,7 @@ DOIF_Attr(@)
|
|||||||
my $hash = $defs{$a[1]};
|
my $hash = $defs{$a[1]};
|
||||||
my $pn=$hash->{NAME};
|
my $pn=$hash->{NAME};
|
||||||
my $ret="";
|
my $ret="";
|
||||||
|
my $cur_hs=$hs;
|
||||||
$hs=$hash;
|
$hs=$hash;
|
||||||
|
|
||||||
if (($a[0] eq "set" and $a[2] eq "disable" and ($a[3] eq "0")) or (($a[0] eq "del" and $a[2] eq "disable")))
|
if (($a[0] eq "set" and $a[2] eq "disable" and ($a[3] eq "0")) or (($a[0] eq "del" and $a[2] eq "disable")))
|
||||||
@ -3504,6 +3524,7 @@ DOIF_Attr(@)
|
|||||||
|
|
||||||
if ($err ne "") {
|
if ($err ne "") {
|
||||||
$msg=$cmd if (!$msg);
|
$msg=$cmd if (!$msg);
|
||||||
|
$hs=$cur_hs;
|
||||||
return ("$err: $msg");
|
return ("$err: $msg");
|
||||||
}
|
}
|
||||||
} elsif($a[0] eq "set" and $a[2] eq "disable" and $a[3] eq "1") {
|
} elsif($a[0] eq "set" and $a[2] eq "disable" and $a[3] eq "1") {
|
||||||
@ -3518,6 +3539,7 @@ DOIF_Attr(@)
|
|||||||
} elsif($a[0] eq "set" && $a[2] eq "state") {
|
} elsif($a[0] eq "set" && $a[2] eq "state") {
|
||||||
delete $hash->{Regex}{"STATE"};
|
delete $hash->{Regex}{"STATE"};
|
||||||
my ($block,$err)=ReplaceAllReadingsDoIf($hash,$a[3],-2,0);
|
my ($block,$err)=ReplaceAllReadingsDoIf($hash,$a[3],-2,0);
|
||||||
|
$hs=$cur_hs;
|
||||||
return $err if ($err);
|
return $err if ($err);
|
||||||
} elsif($a[0] eq "del" && $a[2] eq "state") {
|
} elsif($a[0] eq "del" && $a[2] eq "state") {
|
||||||
delete $hash->{Regex}{"STATE"};
|
delete $hash->{Regex}{"STATE"};
|
||||||
@ -3562,6 +3584,7 @@ DOIF_Attr(@)
|
|||||||
} elsif($a[0] eq "set" && ($a[2] eq "DOIF_Readings" or $a[2] eq "event_Readings")) {
|
} elsif($a[0] eq "set" && ($a[2] eq "DOIF_Readings" or $a[2] eq "event_Readings")) {
|
||||||
my ($def,$err)=addDOIF_Readings($hash,$a[3],$a[2]);
|
my ($def,$err)=addDOIF_Readings($hash,$a[3],$a[2]);
|
||||||
if ($err) {
|
if ($err) {
|
||||||
|
$hs=$cur_hs;
|
||||||
return ("error in $a[2] $def, $err");
|
return ("error in $a[2] $def, $err");
|
||||||
} else {
|
} else {
|
||||||
if ($init_done) {
|
if ($init_done) {
|
||||||
@ -3576,6 +3599,7 @@ DOIF_Attr(@)
|
|||||||
} elsif($a[0] eq "set" && ($a[2] eq "uiTable" || $a[2] eq "uiState")) {
|
} elsif($a[0] eq "set" && ($a[2] eq "uiTable" || $a[2] eq "uiState")) {
|
||||||
if ($init_done) {
|
if ($init_done) {
|
||||||
my $err=DOIF_uiTable_def($hash,$a[3],$a[2]);
|
my $err=DOIF_uiTable_def($hash,$a[3],$a[2]);
|
||||||
|
$hs=$cur_hs;
|
||||||
return $err if ($err);
|
return $err if ($err);
|
||||||
DOIF_reloadFW;
|
DOIF_reloadFW;
|
||||||
}
|
}
|
||||||
@ -3585,10 +3609,12 @@ DOIF_Attr(@)
|
|||||||
} elsif($a[0] eq "set" && $a[2] eq "startup") {
|
} elsif($a[0] eq "set" && $a[2] eq "startup") {
|
||||||
my ($cmd,$err)=ParseCommandsDoIf($hash,$a[3],0);
|
my ($cmd,$err)=ParseCommandsDoIf($hash,$a[3],0);
|
||||||
if ($err) {
|
if ($err) {
|
||||||
|
$hs=$cur_hs;
|
||||||
return ("error in startup $a[3], $err");
|
return ("error in startup $a[3], $err");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
DOIF_Set_Filter($hash);
|
DOIF_Set_Filter($hash);
|
||||||
|
$hs=$cur_hs;
|
||||||
return undef;
|
return undef;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3617,10 +3643,12 @@ DOIF_Set($@)
|
|||||||
my $arg = $a[1];
|
my $arg = $a[1];
|
||||||
my $value = (defined $a[2]) ? $a[2] : "";
|
my $value = (defined $a[2]) ? $a[2] : "";
|
||||||
my $ret="";
|
my $ret="";
|
||||||
|
my $cur_hs=$hs;
|
||||||
$hs=$hash;
|
$hs=$hash;
|
||||||
|
|
||||||
if ($arg eq "disable" or $arg eq "initialize" or $arg eq "enable") {
|
if ($arg eq "disable" or $arg eq "initialize" or $arg eq "enable") {
|
||||||
if (AttrVal($hash->{NAME},"disable","")) {
|
if (AttrVal($hash->{NAME},"disable","")) {
|
||||||
|
$hs=$cur_hs;
|
||||||
return ("modul ist deactivated by disable attribut, delete disable attribut first");
|
return ("modul ist deactivated by disable attribut, delete disable attribut first");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3681,6 +3709,7 @@ DOIF_Set($@)
|
|||||||
$cmdList.=$hash->{perlblock}{$i}.":noArg ";
|
$cmdList.=$hash->{perlblock}{$i}.":noArg ";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
$hs=$cur_hs;
|
||||||
return "unknown argument ? for $pn, choose one of disable:noArg enable:noArg $initialize $checkall $cmdList $setList";
|
return "unknown argument ? for $pn, choose one of disable:noArg enable:noArg $initialize $checkall $cmdList $setList";
|
||||||
} else {
|
} else {
|
||||||
my @rl = split(" ", AttrVal($pn, "readingList", ""));
|
my @rl = split(" ", AttrVal($pn, "readingList", ""));
|
||||||
@ -3693,7 +3722,10 @@ DOIF_Set($@)
|
|||||||
$doRet = 1;
|
$doRet = 1;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
return if($doRet);
|
if($doRet) {
|
||||||
|
$hs=$cur_hs;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (ReadingsVal($pn,"mode","") ne "disabled") {
|
if (ReadingsVal($pn,"mode","") ne "disabled") {
|
||||||
if ($hash->{MODEL} ne "Perl") {
|
if ($hash->{MODEL} ne "Perl") {
|
||||||
foreach my $i (keys %{$hash->{attr}{cmdState}}) {
|
foreach my $i (keys %{$hash->{attr}{cmdState}}) {
|
||||||
@ -3718,6 +3750,7 @@ DOIF_Set($@)
|
|||||||
#return "unknown argument $arg for $pn, choose one of disable:noArg initialize:noArg enable:noArg cmd $setList";
|
#return "unknown argument $arg for $pn, choose one of disable:noArg initialize:noArg enable:noArg cmd $setList";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
$hs=$cur_hs;
|
||||||
return $ret;
|
return $ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3748,6 +3781,7 @@ sub DOIF_ExecTimer
|
|||||||
my $name=$hash->{NAME};
|
my $name=$hash->{NAME};
|
||||||
my $subname=${$timer}->{subname};
|
my $subname=${$timer}->{subname};
|
||||||
my $param=${$timer}->{param} if (defined ${$timer}->{param});
|
my $param=${$timer}->{param} if (defined ${$timer}->{param});
|
||||||
|
my $cur_hs=$hs;
|
||||||
$hs=$hash;
|
$hs=$hash;
|
||||||
delete ($::defs{$name}{READINGS}{"timer_$timername"});
|
delete ($::defs{$name}{READINGS}{"timer_$timername"});
|
||||||
if (!defined ($param)) {
|
if (!defined ($param)) {
|
||||||
@ -3760,6 +3794,7 @@ sub DOIF_ExecTimer
|
|||||||
::Log3 ($::defs{$name}{NAME},1 , "$name error in $subname: $@");
|
::Log3 ($::defs{$name}{NAME},1 , "$name error in $subname: $@");
|
||||||
::readingsSingleUpdate ($hash, "error", "in $subname: $@",1);
|
::readingsSingleUpdate ($hash, "error", "in $subname: $@",1);
|
||||||
}
|
}
|
||||||
|
$hs=$cur_hs;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub set_Exec
|
sub set_Exec
|
||||||
|
Loading…
x
Reference in New Issue
Block a user