Codeänderung beim hinzufügen und entfernen von monitored Devices
This commit is contained in:
@@ -41,7 +41,7 @@ use warnings;
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
my $version = "0.0.42";
|
my $version = "0.0.46";
|
||||||
|
|
||||||
|
|
||||||
sub AutoShuttersControl_Initialize($) {
|
sub AutoShuttersControl_Initialize($) {
|
||||||
@@ -469,24 +469,22 @@ sub AddNotifyDev($@) {
|
|||||||
my ($hash,$dev,$readingPart) = @_;
|
my ($hash,$dev,$readingPart) = @_;
|
||||||
|
|
||||||
my $name = $hash->{NAME};
|
my $name = $hash->{NAME};
|
||||||
|
my $readingPart3 = (split(':', $readingPart))[2];
|
||||||
|
|
||||||
|
|
||||||
my @notifyDev;
|
my $notifyDev = $hash->{NOTIFYDEV};
|
||||||
|
$notifyDev = "" if(!$notifyDev);
|
||||||
|
|
||||||
unless( $hash->{NOTIFYDEV} =~ m#$dev# ) {
|
my %hash = map { ($_ => 1) }
|
||||||
@notifyDev = split(',',$hash->{NOTIFYDEV});
|
split(",", "$notifyDev,$readingPart3");
|
||||||
|
|
||||||
push (@notifyDev,$dev);
|
$hash->{NOTIFYDEV} = join(",", sort keys %hash);
|
||||||
$hash->{NOTIFYDEV} = join(',',@notifyDev);
|
|
||||||
}
|
|
||||||
|
|
||||||
unless( ReadingsVal($name,'monitoredDevs','none') =~ m#$readingPart# ) {
|
my $monitoredDevString = ReadingsVal($name,'monitoredDevs','');
|
||||||
if( ReadingsVal($name,'monitoredDevs','none') ne 'none' ) {
|
my %hash = map { ($_ => 1) }
|
||||||
readingsSingleUpdate($hash,'monitoredDevs',ReadingsVal($name,'monitoredDevs','none') . ',' . $readingPart,0);
|
split(",", "$monitoredDevString,$readingPart");
|
||||||
} else {
|
readingsSingleUpdate($hash,'monitoredDevs',join(",", sort keys %hash),0);
|
||||||
readingsSingleUpdate($hash,'monitoredDevs',$readingPart,0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
## entfernt aus dem NOTIFYDEV Hash Devices welche als Wert in Attributen steckten
|
## entfernt aus dem NOTIFYDEV Hash Devices welche als Wert in Attributen steckten
|
||||||
@@ -498,17 +496,32 @@ sub DeleteNotifyDev($$) {
|
|||||||
$dev =~ s/\s/:/g;
|
$dev =~ s/\s/:/g;
|
||||||
|
|
||||||
|
|
||||||
my ($r,$v);
|
my ($notifyDevHash) = extractNotifyDevfromReadingString($hash,undef);
|
||||||
my ($notifyDevHash) = extractNotifyDevfromReadingString($hash,undef);
|
my $devFromDevHash = $notifyDevHash->{$dev};
|
||||||
|
|
||||||
my @notifyDev = split(',',$hash->{NOTIFYDEV});
|
##### Entfernen des gesamten Device Stringes vom Reading monitoredDevs
|
||||||
my @notifyDevReading = split(',',ReadingsVal($name,'monitoredDevs','none'));
|
my $monitoredDevString = ReadingsVal($name,'monitoredDevs','none');
|
||||||
|
my $devStringAndDevFromDevHash = $dev . ':' . $devFromDevHash;
|
||||||
|
|
||||||
@notifyDev = grep {$_ ne $notifyDevHash->{$dev}} @notifyDev;
|
my %hash = map { ($_ => 1) }
|
||||||
$hash->{NOTIFYDEV} = join(',',@notifyDev);
|
grep { " $devStringAndDevFromDevHash " !~ m/ $_ / }
|
||||||
|
split(",", "$monitoredDevString,$devStringAndDevFromDevHash");
|
||||||
|
|
||||||
@notifyDevReading = grep {$_ ne $dev.':'.$notifyDevHash->{$dev}} @notifyDevReading;
|
readingsSingleUpdate($hash,'monitoredDevs',join(",", sort keys %hash),0);
|
||||||
readingsSingleUpdate($hash,'monitoredDevs',join(',',@notifyDevReading),0);
|
|
||||||
|
|
||||||
|
### Entfernen des Deviceeintrages aus dem NOTIFYDEV
|
||||||
|
unless( ReadingsVal($name,'monitoredDevs','none') =~ m#$devFromDevHash# ) {
|
||||||
|
|
||||||
|
my $notifyDevString = $hash->{NOTIFYDEV};
|
||||||
|
$notifyDevString = "" if(!$notifyDevString);
|
||||||
|
|
||||||
|
my %hash = map { ($_ => 1) }
|
||||||
|
grep { " $devFromDevHash " !~ m/ $_ / }
|
||||||
|
split(",", "$notifyDevString,$devFromDevHash");
|
||||||
|
|
||||||
|
$hash->{NOTIFYDEV} = join(",", sort keys %hash);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
## Sub zum steuern der Rolläden bei einem Fenster Event
|
## Sub zum steuern der Rolläden bei einem Fenster Event
|
||||||
|
Reference in New Issue
Block a user