2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-10 09:16:53 +00:00

SONOS: Small bugfixes, Controlpoint: added support for envelope-prefix

git-svn-id: https://svn.fhem.de/fhem/trunk@16658 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
Reinerlein 2018-04-25 06:00:12 +00:00
parent e623e7a6b7
commit 93f41b6d52
2 changed files with 12 additions and 14 deletions

View File

@ -51,6 +51,10 @@
# Changelog (last 4 entries only, see Wiki for complete changelog)
#
# SVN-History:
# 25.04.2018
# "Deep Recursion"-Warnung beim loggen wird nun verhindert
# Beim Erzeugen der Gruppen-ReadingsGroup ist bei der Verwendung eines Boosts ab und zu ein Fehler aufgetreten
# Beim Erzeugen eines ControlPoint-Objekts kann man nun das Envelope-Prefix angeben (nicht für das Sonos-Modul relevant)
# 15.04.2018
# Streams über Alexa (z.B. Sonos One) werden nun korrekt als Radiostreams dargestellt
# Es werden nun auch Updateinformationen und die interne Softwareversionsnummer gesucht und als Reading gesetzt: "softwareRevisionAvailable", "softwareRevisionInternal" und "softwareRevisionInternalAvailable"
@ -66,14 +70,6 @@
# Wenn ein Player disabled oder disappeared ist, wird ein Proxy-Cover-Zugriffsversuch auf diesen Player unterbunden.
# Ein Modify-Befehlsaufruf wird nun am Vorhandensein von $hash->{OLDDEF} erkannt.
# Bei einigen PERL-Installationen stand im Reading 'currentTrackPositionSimulatedSec' eine Kommazahl (da sie von time() aus berechnet wird). Diese Zahl wird nun gerundet.
# 26.02.2018
# ComObjectTransportQueue in Client_ReceiveQueue umbenannt.
# If-Abfrage um die can_read-Schleife im SubProzess eingebaut, Um Signalunterbrechungen zu berücksichtigen.
# Neuer Getter "WifiPortStatus". Liefert Active, wenn das WLAN aktiviert ist, sonst Inactive.
# Drei neue (automatisch ermittelte) Readings "Orientation", "WifiEnabled" und "WirelessMode".
# Warnung mit "unescaped left brace" in Tag.pm wurde korrigiert.
# ExportSonosBibliothek wird nun in einem eigenen Thread (LongJobs-Thread) ausgeführt. Dadurch bleibt das System steuerbar, auch wenn gerade ein langwieriger Export läuft.
# Prüfmethode eingebaut, um verlorengegangene Fhem-Prozessverbindungen (aus Sicht des SubProzesses) zu erkennen, und entsprechende Thread-Bereinigungmaßnahmen durchführen zu können.
#
########################################################################################
#
@ -2105,9 +2101,7 @@ sub SONOS_ConvertZoneGroupState($) {
# Etwaig von vorher enthaltene Bridges wieder entfernen (wenn sie bereits als Koordinator eingesetzt wurde)
if ($string =~ m/IsZoneBridge="."/) {
for(my $i = 0; $i <= $#group; $i++) {
delete $group[$i] if ($group[$i] eq $udn.'_MR');
}
@group = grep { $_ ne $udn.'_MR' } @group;
}
}
@ -9563,7 +9557,7 @@ sub SONOS_getSonosPlayerByUDN(;$) {
return SONOS_getSonosPlayerByName();
}
SONOS_Log $udn, 0, "The Method 'SONOS_getSonosPlayerByUDN' cannot find the FHEM-Device according to '".(defined($udn) ? $udn : 'undef')."'. This should not happen!";
SONOS_Log undef, 0, "The Method 'SONOS_getSonosPlayerByUDN' cannot find the FHEM-Device according to '".(defined($udn) ? $udn : 'undef')."'. This should not happen!";
return undef;
}

View File

@ -51,6 +51,7 @@ use constant DEFAULT_SUBSCRIPTION_URL => '/eventSub';
our @IGNOREIP;
our @USEDONLYIP;
our $LogLevel;
our $EnvPrefix;
sub isIgnoreIP($) {
my($ip) = @_;
@ -102,6 +103,7 @@ sub new {
@IGNOREIP = @{$args{IgnoreIP}};
@USEDONLYIP = @{$args{UsedOnlyIP}};
$LogLevel = $args{LogLevel} || 0;
$EnvPrefix = $args{EnvPrefix} || $SOAP::Constants::PREFIX_ENV;
my $reuseport = $args{ReusePort};
$reuseport = 0 if (!defined($reuseport));
@ -709,6 +711,7 @@ sub queryStateVariable {
my $result;
if ($SOAP::Lite::VERSION >= 0.67) {
$result = SOAP::Lite
->envprefix($EnvPrefix)
->ns("u")
->uri('urn:schemas-upnp-org:control-1-0')
->proxy($self->controlURL)
@ -718,6 +721,7 @@ sub queryStateVariable {
->value($name));
} else {
$result = SOAP::Lite
->envprefix($EnvPrefix)
->uri('urn:schemas-upnp-org:control-1-0')
->proxy($self->controlURL)
->call('QueryStateVariable' =>
@ -880,12 +884,12 @@ sub new {
if ($SOAP::Lite::VERSION >= 0.67) {
return bless {
_service => $service,
_proxy => SOAP::Lite->ns("u")->uri($service->serviceType)->proxy($service->controlURL),
_proxy => SOAP::Lite->envprefix($EnvPrefix)->ns("u")->uri($service->serviceType)->proxy($service->controlURL),
}, $class;
} else {
return bless {
_service => $service,
_proxy => SOAP::Lite->uri($service->serviceType)->proxy($service->controlURL),
_proxy => SOAP::Lite->envprefix($EnvPrefix)->uri($service->serviceType)->proxy($service->controlURL),
}, $class;
}
}