2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-01-31 18:59:33 +00:00

Sonos: Add a feature-procedure for retreiving the devicename of the masterplayer of a group.

git-svn-id: https://svn.fhem.de/fhem/trunk@7743 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rleins 2015-01-27 13:18:34 +00:00
parent 84ab8301bb
commit ad36b3a18e
2 changed files with 37 additions and 2 deletions

View File

@ -47,6 +47,9 @@
# Changelog # Changelog
# #
# SVN-History: # SVN-History:
# 27.01.2015
# Bei den Befehlen "AddMember", "RemoveMember" und "CreateStereoPair" werden nun alle in Fhem verfügbaren Sonosplayer in einer Auswahl angeboten. Das erfolgt allerdings ungeachtet der Gültigkeit eines Players in diesem Kontext (z.B. kann man keinen Player aus der Gruppe entfernen, der nicht in der Gruppe ist, die Auswahl bietet aber alle an).
# Es gibt jetzt eine Prozedur "SONOSPLAYER_GetMasterPlayerName()" mit der man sich den Devicenamen des Masterplayer zu dem übergebenen Playernamen geben lassen kann.
# 26.01.2015 # 26.01.2015
# Beim Setzen von "disable" am Sonos-Device wurde der "state" und "STATE" der Player nicht korrekt gesetzt. # Beim Setzen von "disable" am Sonos-Device wurde der "state" und "STATE" der Player nicht korrekt gesetzt.
# 24.01.2015 # 24.01.2015
@ -4391,6 +4394,16 @@ sub SONOS_Discover_Callback($$$) {
SONOS_Client_Notifier('CommandAttr:'.$name.'RG sortby 2'); SONOS_Client_Notifier('CommandAttr:'.$name.'RG sortby 2');
SONOS_Client_Notifier('CommandAttr:'.$name.'RG noheading 1'); SONOS_Client_Notifier('CommandAttr:'.$name.'RG noheading 1');
SONOS_Client_Notifier('CommandAttr:'.$name.'RG nonames 1'); SONOS_Client_Notifier('CommandAttr:'.$name.'RG nonames 1');
#SONOS_Client_Notifier('CommandDefine:'.$name.'RG2 ReadingsGroup '.$name.':infoSummarize2@{SONOSPLAYER_GetMasterPlayerName($DEVICE)}');
#SONOS_Client_Notifier('CommandAttr:'.$name.'RG2 valueFormat {" "}');
#SONOS_Client_Notifier('CommandAttr:'.$name.'RG2 valuePrefix {SONOS_getCoverTitleRG(SONOSPLAYER_GetMasterPlayerName($DEVICE))}');
#SONOS_Client_Notifier('CommandAttr:'.$name.'RG2 room '.$SONOS_Client_Data{SonosDeviceName});
#SONOS_Client_Notifier('CommandAttr:'.$name.'RG2 group '.$groupName);
#SONOS_Client_Notifier('CommandAttr:'.$name.'RG2 sortby 4');
#SONOS_Client_Notifier('CommandAttr:'.$name.'RG2 noheading 1');
#SONOS_Client_Notifier('CommandAttr:'.$name.'RG2 nonames 1');
#SONOS_Client_Notifier('CommandAttr:'.$name.'RG2 notime 1');
} }
# Define Readingsgroup Listen # Define Readingsgroup Listen

View File

@ -387,6 +387,13 @@ sub SONOSPLAYER_Set($@) {
$key = $key.':'.$icons; $key = $key.':'.$icons;
} }
# Playerauswahl einsetzen
my @playerNames = ();
for my $player (SONOS_getAllSonosplayerDevices()) {
push @playerNames, $player->{NAME} if ($hash->{NAME} ne $player->{NAME});
}
$key = $key.':'.join(',', sort(@playerNames)) if ((lc($key) eq 'addmember') || (lc($key) eq 'createstereopair') || (lc($key) eq 'removemember'));
# Wifi-Auswahl setzen # Wifi-Auswahl setzen
$key = $key.':off,on,persist-off' if (lc($key) eq 'wifi'); $key = $key.':off,on,persist-off' if (lc($key) eq 'wifi');
@ -801,6 +808,21 @@ sub SONOSPLAYER_GetRealTargetPlayerHash($) {
return $hash; return $hash;
} }
########################################################################################
#
# SONOSPLAYER_GetMasterPlayerName - Retreives the Real Player Name for Device-Commands
# In Case of no grouping: the given name (the normal device)
# In Case of grouping: the name of the groupmaster
#
# Parameter name = name of device, for which the master is searched
#
########################################################################################
sub SONOSPLAYER_GetMasterPlayerName($) {
my ($name) = @_;
return SONOSPLAYER_GetRealTargetPlayerHash(SONOS_getDeviceDefHash($name))->{NAME};
}
######################################################################################## ########################################################################################
# #
# SONOSPLAYER_Undef - Implements UndefFn function # SONOSPLAYER_Undef - Implements UndefFn function
@ -872,7 +894,7 @@ sub SONOSPLAYER_Log($$$) {
<a name="SONOSPLAYER"></a> <a name="SONOSPLAYER"></a>
<h3>SONOSPLAYER</h3> <h3>SONOSPLAYER</h3>
<p>FHEM module to work with a Sonos Zoneplayer</p> <p>FHEM module to work with a Sonos Zoneplayer</p>
<p>For more informations have also a closer look at the wiki at <a href="http://www.fhemwiki.de/wiki/Sonos_Anwendungsbeispiel">http://www.fhemwiki.de/wiki/Sonos_Anwendungsbeispiel</a></p> <p>For more informations have also a closer look at the wiki at <a href="http://www.fhemwiki.de/wiki/SONOS">http://www.fhemwiki.de/wiki/SONOS</a></p>
<p>Normally you don't have to define a Sonosplayer-Device on your own, because the Sonos-Device will do this for you during the discovery-process.</p> <p>Normally you don't have to define a Sonosplayer-Device on your own, because the Sonos-Device will do this for you during the discovery-process.</p>
<h4>Example</h4> <h4>Example</h4>
<p> <p>
@ -1151,7 +1173,7 @@ Here an event is defined, where in time of 2 seconds the Mute-Button has to be p
<a name="SONOSPLAYER"></a> <a name="SONOSPLAYER"></a>
<h3>SONOSPLAYER</h3> <h3>SONOSPLAYER</h3>
<p>FHEM Modul für die Steuerung eines Sonos Zoneplayer</p> <p>FHEM Modul für die Steuerung eines Sonos Zoneplayer</p>
<p>Für weitere Hinweise und Beschreibungen bitte auch im Wiki unter <a href="http://www.fhemwiki.de/wiki/Sonos_Anwendungsbeispiel">http://www.fhemwiki.de/wiki/Sonos_Anwendungsbeispiel</a> nachschauen.</p> <p>Für weitere Hinweise und Beschreibungen bitte auch im Wiki unter <a href="http://www.fhemwiki.de/wiki/SONOS">http://www.fhemwiki.de/wiki/SONOS</a> nachschauen.</p>
<p>Im Normalfall braucht man dieses Device nicht selber zu definieren, da es automatisch vom Discovery-Process des Sonos-Device erzeugt wird.</p> <p>Im Normalfall braucht man dieses Device nicht selber zu definieren, da es automatisch vom Discovery-Process des Sonos-Device erzeugt wird.</p>
<h4>Example</h4> <h4>Example</h4>
<p> <p>