mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-05-04 22:19:38 +00:00
SONOS: Amazon Streaiming angepasst, Verfügbare Softwareversion wird ermittelt
git-svn-id: https://svn.fhem.de/fhem/trunk@16618 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
b24126d890
commit
13335c718d
@ -51,11 +51,14 @@
|
|||||||
# Changelog (last 4 entries only, see Wiki for complete changelog)
|
# Changelog (last 4 entries only, see Wiki for complete changelog)
|
||||||
#
|
#
|
||||||
# SVN-History:
|
# SVN-History:
|
||||||
|
# 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"
|
||||||
# 24.03.2018
|
# 24.03.2018
|
||||||
# Einige Log-Ausgaben haben bei undefinierten Default-Übergaben Fehlermeldungen verursacht.
|
# Einige Log-Ausgaben haben bei undefinierten Default-Übergaben Fehlermeldungen verursacht.
|
||||||
# Bei einigen Positionsabfragen an die Player wurden Sonderfälle (wie NOT_IMPLEMENTED) nicht berücksichtigt.
|
# Bei einigen Positionsabfragen an die Player wurden Sonderfälle (wie NOT_IMPLEMENTED) nicht berücksichtigt.
|
||||||
# Slider-Wertebereich für Bass und Treble auf den Bereich -10..10 korrigiert.
|
# Slider-Wertebereich für Bass und Treble auf den Bereich -10..10 korrigiert.
|
||||||
# Es gibt jetzt ein Reading "IsZoneGroup", das 0 oder 1 sein kann. Danach wird jetzt auch entschieden, ob eine Playersteuerung dargestellt wird, oder nicht.
|
# Es gibt jetzt ein Reading "IsZoneBridge", das 0 oder 1 sein kann. Danach wird jetzt auch entschieden, ob eine Playersteuerung dargestellt wird, oder nicht.
|
||||||
# 10.03.2018
|
# 10.03.2018
|
||||||
# Die PlayBase kann nun auch den SPDIF-Eingang aktivieren (wie die PlayBar)
|
# Die PlayBase kann nun auch den SPDIF-Eingang aktivieren (wie die PlayBar)
|
||||||
# Wenn man über Alexa Musik hört, wird das aktuelle Cover nun auch angezeigt.
|
# Wenn man über Alexa Musik hört, wird das aktuelle Cover nun auch angezeigt.
|
||||||
@ -71,10 +74,6 @@
|
|||||||
# Warnung mit "unescaped left brace" in Tag.pm wurde korrigiert.
|
# 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.
|
# 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.
|
# Prüfmethode eingebaut, um verlorengegangene Fhem-Prozessverbindungen (aus Sicht des SubProzesses) zu erkennen, und entsprechende Thread-Bereinigungmaßnahmen durchführen zu können.
|
||||||
# 07.01.2018
|
|
||||||
# Der Initialwert von LastProcessAnswer (wird beim Start auf 0 gesetzt) wird nun korrekt berücksichtigt
|
|
||||||
# Bei ignoredIPs und bei usedOnlyIPs kann jetzt für jedes Komma-Getrennte Element auch ein regulärer Ausdruck stehen. Wird mit // umschlossen, und darf keine Doppelpunkte enthalten.
|
|
||||||
# Logausgabe im UPnP-Modul, welche Devices mit welchen Header-Angaben nun akzeptiert wurden (Ausgabe auf Level 5)
|
|
||||||
#
|
#
|
||||||
########################################################################################
|
########################################################################################
|
||||||
#
|
#
|
||||||
@ -5775,6 +5774,7 @@ sub SONOS_Discover_Callback($$$) {
|
|||||||
my $saveRoomName = '';
|
my $saveRoomName = '';
|
||||||
my $modelNumber = '';
|
my $modelNumber = '';
|
||||||
my $displayVersion = '';
|
my $displayVersion = '';
|
||||||
|
my $internalVersion = '';
|
||||||
my $serialNum = '';
|
my $serialNum = '';
|
||||||
my $iconURI = '';
|
my $iconURI = '';
|
||||||
|
|
||||||
@ -5797,6 +5797,9 @@ sub SONOS_Discover_Callback($$$) {
|
|||||||
# DisplayVersion ermitteln
|
# DisplayVersion ermitteln
|
||||||
$displayVersion = decode_entities($1) if ($descriptionDocument =~ m/<displayVersion>(.*?)<\/displayVersion>/im);
|
$displayVersion = decode_entities($1) if ($descriptionDocument =~ m/<displayVersion>(.*?)<\/displayVersion>/im);
|
||||||
|
|
||||||
|
# Interne Version ermitteln
|
||||||
|
$internalVersion = decode_entities($1) if ($descriptionDocument =~ m/<softwareVersion>(.*?)<\/softwareVersion>/im);
|
||||||
|
|
||||||
# SerialNum ermitteln
|
# SerialNum ermitteln
|
||||||
$serialNum = decode_entities($1) if ($descriptionDocument =~ m/<serialNum>(.*?)<\/serialNum>/im);
|
$serialNum = decode_entities($1) if ($descriptionDocument =~ m/<serialNum>(.*?)<\/serialNum>/im);
|
||||||
|
|
||||||
@ -5991,6 +5994,15 @@ sub SONOS_Discover_Callback($$$) {
|
|||||||
# Wenn der Player noch nicht auf der "Aktiv"-Liste steht, dann draufpacken...
|
# Wenn der Player noch nicht auf der "Aktiv"-Liste steht, dann draufpacken...
|
||||||
push @{$SONOS_Client_Data{PlayerAlive}}, $udn if (!SONOS_isInList($udn, @{$SONOS_Client_Data{PlayerAlive}}));
|
push @{$SONOS_Client_Data{PlayerAlive}}, $udn if (!SONOS_isInList($udn, @{$SONOS_Client_Data{PlayerAlive}}));
|
||||||
|
|
||||||
|
# Verfügbare Software herausfinden...
|
||||||
|
my $internalVersionAvailable = '';
|
||||||
|
my $softwareVersionAvailable = '';
|
||||||
|
my $updateItem = $SONOS_ZoneGroupTopologyProxy{$udn}->CheckForUpdate('Software', 'false', '')->getValue('UpdateItem');
|
||||||
|
if ($updateItem =~ m/<UpdateItem xmlns=".*?" Type="Software" Version="(.+?)" UpdateURL=".+?v(.+?)-.+?" DownloadSize=".+?" ManifestURL=".+?"\/>/i) {
|
||||||
|
$internalVersionAvailable = $1;
|
||||||
|
$softwareVersionAvailable = $2;
|
||||||
|
}
|
||||||
|
|
||||||
# Readings aktualisieren
|
# Readings aktualisieren
|
||||||
SONOS_Client_Notifier('ReadingsBeginUpdate:'.$udn);
|
SONOS_Client_Notifier('ReadingsBeginUpdate:'.$udn);
|
||||||
SONOS_Client_Data_Refresh('ReadingsBulkUpdateIfChanged', $udn, 'presence', 'appeared');
|
SONOS_Client_Data_Refresh('ReadingsBulkUpdateIfChanged', $udn, 'presence', 'appeared');
|
||||||
@ -6003,6 +6015,9 @@ sub SONOS_Discover_Callback($$$) {
|
|||||||
SONOS_Client_Data_Refresh('ReadingsBulkUpdateIfChanged', $udn, 'Volume', $currentVolume);
|
SONOS_Client_Data_Refresh('ReadingsBulkUpdateIfChanged', $udn, 'Volume', $currentVolume);
|
||||||
SONOS_Client_Data_Refresh('ReadingsBulkUpdateIfChanged', $udn, 'location', $device->location);
|
SONOS_Client_Data_Refresh('ReadingsBulkUpdateIfChanged', $udn, 'location', $device->location);
|
||||||
SONOS_Client_Data_Refresh('ReadingsBulkUpdateIfChanged', $udn, 'softwareRevision', $displayVersion);
|
SONOS_Client_Data_Refresh('ReadingsBulkUpdateIfChanged', $udn, 'softwareRevision', $displayVersion);
|
||||||
|
SONOS_Client_Data_Refresh('ReadingsBulkUpdateIfChanged', $udn, 'softwareRevisionAvailable', $softwareVersionAvailable);
|
||||||
|
SONOS_Client_Data_Refresh('ReadingsBulkUpdateIfChanged', $udn, 'softwareRevisionInternal', $internalVersion);
|
||||||
|
SONOS_Client_Data_Refresh('ReadingsBulkUpdateIfChanged', $udn, 'softwareRevisionInternalAvailable', $internalVersionAvailable);
|
||||||
SONOS_Client_Data_Refresh('ReadingsBulkUpdateIfChanged', $udn, 'serialNum', $serialNum);
|
SONOS_Client_Data_Refresh('ReadingsBulkUpdateIfChanged', $udn, 'serialNum', $serialNum);
|
||||||
SONOS_Client_Data_Refresh('ReadingsBulkUpdateIfChanged', $udn, 'fieldType', $fieldType);
|
SONOS_Client_Data_Refresh('ReadingsBulkUpdateIfChanged', $udn, 'fieldType', $fieldType);
|
||||||
SONOS_Client_Data_Refresh('ReadingsBulkUpdateIfChanged', $udn, 'IsBonded', (($fieldType eq '') || ($fieldType eq 'LF') || ($fieldType eq 'LF_RF')) ? '0' : '1');
|
SONOS_Client_Data_Refresh('ReadingsBulkUpdateIfChanged', $udn, 'IsBonded', (($fieldType eq '') || ($fieldType eq 'LF') || ($fieldType eq 'LF_RF')) ? '0' : '1');
|
||||||
@ -6881,7 +6896,7 @@ sub SONOS_TransportCallback($$) {
|
|||||||
SONOS_Client_Notifier('ProcessCover:'.$udn.':0:'.SONOS_URI_Escape($tempURI).':'.SONOS_URI_Escape($groundURL));
|
SONOS_Client_Notifier('ProcessCover:'.$udn.':0:'.SONOS_URI_Escape($tempURI).':'.SONOS_URI_Escape($groundURL));
|
||||||
|
|
||||||
# Auch hier den XML-Parser verhindern, und alles per regulärem Ausdruck ermitteln...
|
# Auch hier den XML-Parser verhindern, und alles per regulärem Ausdruck ermitteln...
|
||||||
if ($currentTrackMetaData =~ m/<dc:title>x-(sonosapi|rincon)-(stream|mp3radio):.*?<\/dc:title>/) {
|
if ($currentTrackMetaData =~ m/(<dc:title>x-(sonosapi|rincon)-(stream|mp3radio):.*?<\/dc:title>|<res protocolInfo="x-(sonosapi|rincon)-(stream|mp3radio):.*?">)/) {
|
||||||
# Wenn es ein Stream ist, dann muss da was anderes erkannt werden
|
# Wenn es ein Stream ist, dann muss da was anderes erkannt werden
|
||||||
SONOS_Log $udn, 4, "Transport-Event: Stream erkannt!";
|
SONOS_Log $udn, 4, "Transport-Event: Stream erkannt!";
|
||||||
SONOS_Client_Notifier('SetCurrent:StreamAudio:1');
|
SONOS_Client_Notifier('SetCurrent:StreamAudio:1');
|
||||||
|
Loading…
x
Reference in New Issue
Block a user