diff --git a/fhem/FHEM/00_SONOS.pm b/fhem/FHEM/00_SONOS.pm index 539ccc71c..c11803623 100755 --- a/fhem/FHEM/00_SONOS.pm +++ b/fhem/FHEM/00_SONOS.pm @@ -51,6 +51,9 @@ # Changelog (last 4 entries only, see Wiki for complete changelog) # # SVN-History: +# 14.07.2017 +# Änderung in der ControlPoint.pm: Es wurden zuviele Suchantworten berücksichtigt. +# Bei einem Modify wird von Fhem nur die DefFn aufgerufen (und nicht vorher UndefFn). Dadurch blieben Reste, die aber vor einer Definition aufgeräumt werden müssen. Resultat war eine 100%-CPU-Last. # 09.07.2017 # BulkUpdate: Beginn und Ende sind nun sicher davor einen vom SubProzess gestarteten BulkUpdate vorzeitig zu beenden. # 05.07.2017 @@ -877,7 +880,18 @@ sub SONOS_FhemWebCallback($) { sub SONOS_Define($$) { my ($hash, $def) = @_; my @a = split("[ \t]+", $def); - + + # Check if we just want a modify... + if ($hash->{NAME}) { + SONOS_Log undef, 1, 'Modify Device: '.$hash->{NAME}; + + # Alle Timer entfernen... + RemoveInternalTimer($hash); + + # SubProzess beenden, und Verbindung kappen... + SONOS_StopSubProcess($hash); + } + # check syntax return 'Usage: define SONOS [[[[upnplistener] interval] waittime] delaytime]' if($#a < 1 || $#a > 5); my $name = $a[0]; @@ -9765,7 +9779,7 @@ sub SONOS_getSonosPlayerByRoomName($) { # Parameter hash = hash of the master, name # ######################################################################################## -sub SONOS_Undef ($$) { +sub SONOS_Undef($$) { my ($hash, $name) = @_; # Alle Timer entfernen... diff --git a/fhem/FHEM/21_SONOSPLAYER.pm b/fhem/FHEM/21_SONOSPLAYER.pm index 1ec4a6066..f8a429ba3 100755 --- a/fhem/FHEM/21_SONOSPLAYER.pm +++ b/fhem/FHEM/21_SONOSPLAYER.pm @@ -207,6 +207,14 @@ sub SONOSPLAYER_Initialize ($) { ######################################################################################## sub SONOSPLAYER_Define ($$) { my ($hash, $def) = @_; + + # Check if we just want a modify... + if ($hash->{NAME}) { + SONOS_Log undef, 1, 'Modify SonosPlayer-Device: '.$hash->{NAME}; + + # Alle Timer entfernen... + RemoveInternalTimer($hash); + } # define SONOSPLAYER # e.g.: define Sonos_Wohnzimmer SONOSPLAYER RINCON_000EFEFEFEF401400 diff --git a/fhem/FHEM/lib/UPnP/ControlPoint.pm b/fhem/FHEM/lib/UPnP/ControlPoint.pm index 9eab98712..991fcfa45 100644 --- a/fhem/FHEM/lib/UPnP/ControlPoint.pm +++ b/fhem/FHEM/lib/UPnP/ControlPoint.pm @@ -418,7 +418,7 @@ sub _receiveSearchResponse { last; } - if ($search->{_friendlyName} && $search->{_friendlyName}) { + if ($search->{_friendlyName} && $buf =~ $search->{_friendlyName}) { $found = 1; last; }