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