mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-05-04 22:19:38 +00:00
98_DOIF.pm: NOTIFYDEV now set for all DOIF devices
git-svn-id: https://svn.fhem.de/fhem/trunk@25590 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
2c331ffa1f
commit
1693173b04
@ -2744,52 +2744,39 @@ sub DOIF_Trigger
|
|||||||
sub DOIF_Set_Filter
|
sub DOIF_Set_Filter
|
||||||
{
|
{
|
||||||
my ($hash) = @_;
|
my ($hash) = @_;
|
||||||
$hash->{helper}{NOTIFYDEV}="global";
|
my @ndev=();
|
||||||
$hash->{helper}{DEVFILTER}="\^global\$";
|
# my @ddev=();
|
||||||
|
push(@ndev,"global");
|
||||||
|
# push(@ddev,"\^global\$");
|
||||||
foreach my $type (keys %{$hash->{Regex}}) {
|
foreach my $type (keys %{$hash->{Regex}}) {
|
||||||
foreach my $device (keys %{$hash->{Regex}{$type}}) {
|
foreach my $device (keys %{$hash->{Regex}{$type}}) {
|
||||||
foreach my $id (keys %{$hash->{Regex}{$type}{$device}}) {
|
foreach my $id (keys %{$hash->{Regex}{$type}{$device}}) {
|
||||||
foreach my $reading (keys %{$hash->{Regex}{$type}{$device}{$id}}) {
|
foreach my $reading (keys %{$hash->{Regex}{$type}{$device}{$id}}) {
|
||||||
my $devreg=$hash->{Regex}{$type}{$device}{$id}{$reading};
|
my $devreg=$hash->{Regex}{$type}{$device}{$id}{$reading};
|
||||||
my($regdev)=split(/:/,$devreg);
|
my($regdev)=split(/:/,$devreg);
|
||||||
my $devfilter=$regdev;
|
my $item;
|
||||||
if ($regdev eq "") {
|
if ($regdev =~ /^\^([\w.]*)\$$/) {
|
||||||
$regdev='.*';
|
$item=$1;
|
||||||
} else {
|
} else {
|
||||||
if ($regdev=~/^\^/) {
|
$item='.*('.$regdev.').*';
|
||||||
$regdev=~s/^\^//;
|
|
||||||
} else {
|
|
||||||
$regdev="\.\*".$regdev;
|
|
||||||
}
|
|
||||||
if ($regdev=~/\$$/) {
|
|
||||||
$regdev=~s/\$$//;
|
|
||||||
} else {
|
|
||||||
$regdev.='.*';
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
my $found=0;
|
push (@ndev,$item);
|
||||||
foreach my $item (split(/\|/,$hash->{helper}{NOTIFYDEV})) {
|
# push (@ddev,$regdev);
|
||||||
if ($regdev eq $item) {
|
|
||||||
$found=1;
|
|
||||||
last;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!$found) {
|
|
||||||
$hash->{helper}{NOTIFYDEV}.="\|$regdev" ;
|
|
||||||
$hash->{helper}{DEVFILTER}.="\|$devfilter" ;
|
|
||||||
}
|
|
||||||
#$hash->{helper}{NOTIFYDEV}.="\|$regdev" if ($hash->{helper}{NOTIFYDEV}!~/\|$regdev(\||$)/);
|
|
||||||
#$hash->{helper}{DEVFILTER}.="\|$devfilterori" if ($hash->{helper}{DEVFILTER}!~/\|$devfilter(\||$)/);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
notifyRegexpChanged($hash,$hash->{helper}{NOTIFYDEV});
|
my %h;
|
||||||
if (defined ($hash->{NOTIFYDEV})) {
|
%h = map { $_ => 1 } @ndev;
|
||||||
delete ($hash->{DOIFDEV});
|
@ndev = keys %h; # remove duplicates
|
||||||
} else {
|
$hash->{helper}{NOTIFYDEV} = join(",", @ndev);
|
||||||
$hash->{DOIFDEV}=$hash->{helper}{DEVFILTER};
|
setNotifyDev ($hash,$hash->{helper}{NOTIFYDEV});
|
||||||
}
|
|
||||||
|
|
||||||
|
# %h = map { $_ => 1 } @ddev;
|
||||||
|
# @ddev = keys %h; # remove duplicates
|
||||||
|
# $hash->{helper}{DEVFILTER} = join("|", @ddev);
|
||||||
|
# $hash->{DOIFDEV}=$hash->{helper}{DEVFILTER};
|
||||||
}
|
}
|
||||||
|
|
||||||
sub
|
sub
|
||||||
@ -2797,8 +2784,8 @@ DOIF_Notify($$)
|
|||||||
{
|
{
|
||||||
my ($hash, $dev) = @_;
|
my ($hash, $dev) = @_;
|
||||||
my $pn = $hash->{NAME};
|
my $pn = $hash->{NAME};
|
||||||
return "" if($attr{$pn} && $attr{$pn}{disable});
|
#return "" if($attr{$pn} && $attr{$pn}{disable});
|
||||||
return "" if (!$dev->{NAME});
|
#return "" if (!$dev->{NAME});
|
||||||
my $device;
|
my $device;
|
||||||
my $reading;
|
my $reading;
|
||||||
my $internal;
|
my $internal;
|
||||||
@ -2807,12 +2794,14 @@ DOIF_Notify($$)
|
|||||||
my $eventa;
|
my $eventa;
|
||||||
my $eventas;
|
my $eventas;
|
||||||
|
|
||||||
|
## print("DOIF $pn aufgerufen $dev->{NAME}\n");
|
||||||
if (!defined($hash->{helper}{DEVFILTER})) {
|
# if (!defined($hash->{helper}{DEVFILTER})) {
|
||||||
return "";
|
# if (!defined($hash->{helper}{NOTIFYDEV})) {
|
||||||
} elsif ($dev->{NAME} !~ /$hash->{helper}{DEVFILTER}/) {
|
# return "";
|
||||||
return "";
|
# }
|
||||||
}
|
# elsif ($dev->{NAME} !~ /$hash->{helper}{DEVFILTER}/) {
|
||||||
|
# return "";
|
||||||
|
# }
|
||||||
|
|
||||||
$eventa = deviceEvents($dev, AttrVal($pn, "addStateEvent", 0));
|
$eventa = deviceEvents($dev, AttrVal($pn, "addStateEvent", 0));
|
||||||
$eventas = deviceEvents($dev, 1);
|
$eventas = deviceEvents($dev, 1);
|
||||||
@ -3775,7 +3764,7 @@ DOIF_Attr(@)
|
|||||||
my $cmd = $defs{$hash->{NAME}}{DEF};
|
my $cmd = $defs{$hash->{NAME}}{DEF};
|
||||||
my $msg;
|
my $msg;
|
||||||
my $err;
|
my $err;
|
||||||
|
setDisableNotifyFn($hash,0);
|
||||||
if (!$cmd) {
|
if (!$cmd) {
|
||||||
$cmd="";
|
$cmd="";
|
||||||
$defs{$hash->{NAME}}{DEF}="##";
|
$defs{$hash->{NAME}}{DEF}="##";
|
||||||
@ -3800,6 +3789,7 @@ DOIF_Attr(@)
|
|||||||
} 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") {
|
||||||
DOIF_delTimer($hash);
|
DOIF_delTimer($hash);
|
||||||
DOIF_delAll ($hash);
|
DOIF_delAll ($hash);
|
||||||
|
setDisableNotifyFn($hash,1);
|
||||||
readingsBeginUpdate($hash);
|
readingsBeginUpdate($hash);
|
||||||
#if ($hash->{MODEL} ne "Perl") {
|
#if ($hash->{MODEL} ne "Perl") {
|
||||||
# readingsBulkUpdate ($hash, "state", "deactivated");
|
# readingsBulkUpdate ($hash, "state", "deactivated");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user