1
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-05-04 22:19:38 +00:00

98_DOIF.pm: various corrections in connection with the conversion to NOTIFYDEV, disable attribute fixed

git-svn-id: https://svn.fhem.de/fhem/trunk@20210 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
Damian 2019-09-20 21:37:33 +00:00
parent 5b2df96f24
commit d17a53de44

View File

@ -79,6 +79,8 @@ sub DOIF_delAll($)
delete ($hash->{Regex}); delete ($hash->{Regex});
#foreach my $key (keys %{$hash->{Regex}}) { #foreach my $key (keys %{$hash->{Regex}}) {
# delete $hash->{Regex}{$key} if ($key !~ "STATE|DOIF_Readings|uiTable"); # delete $hash->{Regex}{$key} if ($key !~ "STATE|DOIF_Readings|uiTable");
#} #}
@ -1455,6 +1457,7 @@ sub setDOIF_Reading
readingsSingleUpdate ($hash,$DOIF_Reading,$ret,1); readingsSingleUpdate ($hash,$DOIF_Reading,$ret,1);
} elsif ($ret ne ReadingsVal($hash->{NAME},$DOIF_Reading,"") or !defined $defs{$hash->{NAME}}{READINGS}{$DOIF_Reading}) { } elsif ($ret ne ReadingsVal($hash->{NAME},$DOIF_Reading,"") or !defined $defs{$hash->{NAME}}{READINGS}{$DOIF_Reading}) {
push (@{$hash->{helper}{DOIF_Readings_events}},"$DOIF_Reading: $ret"); push (@{$hash->{helper}{DOIF_Readings_events}},"$DOIF_Reading: $ret");
push (@{$hash->{helper}{DOIF_Readings_eventsState}},"$DOIF_Reading: $ret");
readingsSingleUpdate ($hash,$DOIF_Reading,$ret,0); readingsSingleUpdate ($hash,$DOIF_Reading,$ret,0);
} }
} }
@ -2213,6 +2216,7 @@ sub CheckRegexpDoIf
} }
return $i; return $i;
} }
if (defined $eventa and defined $eventas) {
my @events_temp; my @events_temp;
if (substr($i,0,1) eq '"') { if (substr($i,0,1) eq '"') {
@events_temp=@{$eventa}; @events_temp=@{$eventa};
@ -2241,6 +2245,7 @@ sub CheckRegexpDoIf
} }
} }
} }
}
return undef; return undef;
} }
@ -2271,6 +2276,7 @@ sub DOIF_Perl_Trigger
$event="timer_".($timerNr+1); $event="timer_".($timerNr+1);
@triggerEvents=($event); @triggerEvents=($event);
$hash->{helper}{triggerEvents}=\@triggerEvents; $hash->{helper}{triggerEvents}=\@triggerEvents;
$hash->{helper}{triggerEventsState}=\@triggerEvents;
$hash->{helper}{triggerDev}=""; $hash->{helper}{triggerDev}="";
$hash->{helper}{event}=$event; $hash->{helper}{event}=$event;
} else { #event } else { #event
@ -2586,8 +2592,9 @@ DOIF_Notify($$)
if (defined $hash->{helper}{DOIF_Readings_events}) { if (defined $hash->{helper}{DOIF_Readings_events}) {
if ($dev->{NAME} ne $hash->{NAME}) { if ($dev->{NAME} ne $hash->{NAME}) {
@{$hash->{CHANGED}}=@{$hash->{helper}{DOIF_Readings_events}}; @{$hash->{CHANGED}}=@{$hash->{helper}{DOIF_Readings_events}};
@{$hash->{CHANGEDWITHSTATE}}=@{$hash->{helper}{DOIF_Readings_events}}; @{$hash->{CHANGEDWITHSTATE}}=@{$hash->{helper}{DOIF_Readings_eventsState}};
$hash->{helper}{DOIF_Readings_events}=(); delete $hash->{helper}{DOIF_Readings_events};
delete $hash->{helper}{DOIF_Readings_eventsState};
DOIF_Notify($hash,$hash); DOIF_Notify($hash,$hash);
} }
} }
@ -2996,6 +3003,7 @@ CmdDoIfPerl($$)
my $err=""; my $err="";
my $i=0; my $i=0;
$hs=$hash; $hs=$hash;
$hash->{NOTIFYDEV}="global";
#def modify #def modify
if ($init_done) if ($init_done)
{ {
@ -3007,7 +3015,7 @@ CmdDoIfPerl($$)
readingsEndUpdate($hash, 1); readingsEndUpdate($hash, 1);
$hash->{helper}{globalinit}=1; $hash->{helper}{globalinit}=1;
foreach my $key (keys %{$attr{$hash->{NAME}}}) { foreach my $key (keys %{$attr{$hash->{NAME}}}) {
if (AttrVal($hash->{NAME},$key,"")) { if ($key ne "disable" and AttrVal($hash->{NAME},$key,"")) {
DOIF_Attr ("set",$hash->{NAME},$key,AttrVal($hash->{NAME},$key,"")); DOIF_Attr ("set",$hash->{NAME},$key,AttrVal($hash->{NAME},$key,""));
} }
} }
@ -3016,7 +3024,6 @@ CmdDoIfPerl($$)
$hash->{helper}{last_timer}=0; $hash->{helper}{last_timer}=0;
$hash->{helper}{sleeptimer}=-1; $hash->{helper}{sleeptimer}=-1;
$hash->{NOTIFYDEV} = "global";
return("","") if ($tail =~ /^ *$/); return("","") if ($tail =~ /^ *$/);
@ -3081,6 +3088,7 @@ CmdDoIf($$)
my $last_do; my $last_do;
#def modify #def modify
$hash->{NOTIFYDEV}="global";
if ($init_done) if ($init_done)
{ {
DOIF_delTimer($hash); DOIF_delTimer($hash);
@ -3091,8 +3099,9 @@ CmdDoIf($$)
readingsBulkUpdate ($hash,"mode","enabled"); readingsBulkUpdate ($hash,"mode","enabled");
readingsEndUpdate($hash, 1); readingsEndUpdate($hash, 1);
$hash->{helper}{globalinit}=1; $hash->{helper}{globalinit}=1;
foreach my $key (keys %{$attr{$hash->{NAME}}}) { foreach my $key (keys %{$attr{$hash->{NAME}}}) {
if (AttrVal($hash->{NAME},$key,"")) { if ($key ne "disable" and AttrVal($hash->{NAME},$key,"")) {
DOIF_Attr ("set",$hash->{NAME},$key,AttrVal($hash->{NAME},$key,"")); DOIF_Attr ("set",$hash->{NAME},$key,AttrVal($hash->{NAME},$key,""));
} }
} }
@ -3100,7 +3109,7 @@ CmdDoIf($$)
$hash->{helper}{last_timer}=0; $hash->{helper}{last_timer}=0;
$hash->{helper}{sleeptimer}=-1; $hash->{helper}{sleeptimer}=-1;
$hash->{NOTIFYDEV} = "global";
return("","") if ($tail =~ /^ *$/); return("","") if ($tail =~ /^ *$/);
@ -3227,6 +3236,7 @@ DOIF_Attr(@)
my $pn=$hash->{NAME}; my $pn=$hash->{NAME};
my $ret=""; my $ret="";
$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")))
{ {
my $cmd = $defs{$hash->{NAME}}{DEF}; my $cmd = $defs{$hash->{NAME}}{DEF};
@ -3253,6 +3263,7 @@ DOIF_Attr(@)
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") {
$hash->{NOTIFYDEV}="global";
DOIF_delTimer($hash); DOIF_delTimer($hash);
DOIF_delAll ($hash); DOIF_delAll ($hash);
readingsBeginUpdate($hash); readingsBeginUpdate($hash);
@ -3395,6 +3406,8 @@ DOIF_Set($@)
readingsSingleUpdate ($hash,"mode","enabled",1) readingsSingleUpdate ($hash,"mode","enabled",1)
} elsif ($arg eq "checkall" ) { } elsif ($arg eq "checkall" ) {
$hash->{helper}{triggerDev}=""; $hash->{helper}{triggerDev}="";
delete $hash->{helper}{triggerEvents};
delete $hash->{helper}{triggerEventsState};
DOIF_Trigger ($hash,$pn,1); DOIF_Trigger ($hash,$pn,1);
} elsif ($arg =~ /^cmd_(.*)/ ) { } elsif ($arg =~ /^cmd_(.*)/ ) {
if (ReadingsVal($pn,"mode","") ne "disabled") { if (ReadingsVal($pn,"mode","") ne "disabled") {