From 057bfc60ec2e8ff2f03e30fe15b66a041ad81467 Mon Sep 17 00:00:00 2001 From: rleins <> Date: Thu, 29 Jan 2015 23:33:48 +0000 Subject: [PATCH] Sonos: Add feature SONOSPLAYER_GetSlavePlayerNames() git-svn-id: https://svn.fhem.de/fhem/trunk@7769 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/00_SONOS.pm | 160 +++++++++-------- fhem/FHEM/21_SONOSPLAYER.pm | 349 +++++++++++++++++++----------------- 2 files changed, 274 insertions(+), 235 deletions(-) diff --git a/fhem/FHEM/00_SONOS.pm b/fhem/FHEM/00_SONOS.pm index e2b110e3b..6dc4e1014 100755 --- a/fhem/FHEM/00_SONOS.pm +++ b/fhem/FHEM/00_SONOS.pm @@ -47,6 +47,10 @@ # Changelog # # SVN-History: +# 30.01.2015 +# Commandref wurde optisch übersichtlicher gestaltet, und die Windows-Hinweise eingefügt. +# Bei der Anzeige des nächsten Titels in der Standard-ReadingsGroup stand "Artist". Das wurde auf "Interpret" korrigiert. +# Es gibt jetzt eine Prozedur "SONOSPLAYER_GetSlavePlayerNames()", mit der man sich die Teilnehmer einer Gruppe liefern lassen kann. Der Master wird nicht mit zurückgegeben. Man kann den Namen eines beliebigen Teilnehmers angeben. # 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. @@ -659,7 +663,7 @@ sub SONOS_getTitleRG($;$) { # Läuft Radio oder ein "normaler" Titel if (ReadingsVal($device, 'currentNormalAudio', 1) == 1) { my $showNext = ReadingsVal($device, 'nextTitle', '') || ReadingsVal($device, 'nextArtist', '') || ReadingsVal($device, 'nextAlbum', ''); - $infoString = sprintf('
%s Titel %s von %s
Titel: %s
Interpret: %s
Album: %s'.($showNext ? '
Nächste Wiedergabe:
Titel: %s
Artist: %s
Album: %s
' : ''), + $infoString = sprintf('
%s Titel %s von %s
Titel: %s
Interpret: %s
Album: %s'.($showNext ? '
Nächste Wiedergabe:
Titel: %s
Interpret: %s
Album: %s
' : ''), $transportState, ReadingsVal($device, 'currentTrack', ''), ReadingsVal($device, 'numberOfTracks', ''), @@ -6932,57 +6936,61 @@ sub SONOS_Client_IsAlive() {
  • HTTP::Request
  • Installation e.g. as Debian-Packages (via "sudo apt-get install <packagename>"):

    +
  • SOAP::Lite-Packagename: libsoap-lite-perl
  • +
    Installation e.g. as Windows ActivePerl (via Perl-Packagemanager) +Windows ActivePerl 64Bit is currently not functioning due to missing SOAP::Lite

    Attention!
    This Module will not be functioning on any platform, because of the use of Threads and the neccessary Perl-modules.

    More information is given in a (german) Wiki-article: http://www.fhemwiki.de/wiki/SONOS

    The system consists of two different components:
    1. A UPnP-Client which runs as a standalone process in the background and takes the communications to the sonos-components.
    2. The FHEM-module itself which connects to the UPnP-client to make fhem able to work with sonos.

    -The client will be startet by the module itself if not done in another way.
    +The client will be started by the module itself if not done in another way.
    You can start this client on your own (to let it run instantly and independent from FHEM):
    perl 00_SONOS.pm 4711: Starts a UPnP-Client in an independant way who listens to connections on port 4711. This process can run a long time, FHEM can connect and disconnect to it.

    Example

    define Sonos SONOS localhost:4711 30

    -

    Define

    -define <name> SONOS [upnplistener [interval [waittime [delaytime]]]] +define <name> SONOS [upnplistener [interval [waittime [delaytime]]]]

    Define a Sonos interface to communicate with a Sonos-System.

    -[upnplistener]
    The name and port of the external upnp-listener. If not given, defaults to localhost:4711. The port has to be a free portnumber on your system. If you don't start a server on your own, the script does itself.
    If you start it yourself write down the correct informations to connect.

    +[upnplistener]
    The name and port of the external upnp-listener. If not given, defaults to localhost:4711. The port has to be a free portnumber on your system. If you don't start a server on your own, the script does itself.
    If you start it yourself write down the correct informations to connect.

    -[interval]
    The interval is for alive-checking of Zoneplayer-device, because no message come if the host disappear :-)
    If omitted a value of 10 seconds is the default.

    +[interval]
    The interval is for alive-checking of Zoneplayer-device, because no message come if the host disappear :-)
    If omitted a value of 10 seconds is the default.

    -[waittime]
    With this value you can configure the waiting time for the starting of the Subprocess.

    +[waittime]
    With this value you can configure the waiting time for the starting of the Subprocess.

    -[delaytime]
    With this value you can configure a delay time before starting the network-part.

    -
    -
    +[delaytime]
    With this value you can configure a delay time before starting the network-part.

    Set

    @@ -6992,7 +7000,7 @@ You can start this client on your own (to let it run instantly and independent f Installation z.B. als Debian-Pakete (mittels "sudo apt-get install <packagename>"):

    +
  • SOAP::Lite-Packagename: libsoap-lite-perl
  • +
    Installation z.B. als Windows ActivePerl (mittels Perl-Packagemanager) +Windows ActivePerl 64Bit kann momentan nicht verwendet werden, da es das Paket SOAP::Lite dort momentan nicht gibt.

    Achtung!
    Das Modul wird nicht auf jeder Plattform lauffähig sein, da Threads und die angegebenen Perl-Module verwendet werden.

    Mehr Informationen im (deutschen) Wiki-Artikel: http://www.fhemwiki.de/wiki/SONOS

    Das System besteht aus zwei Komponenten:
    @@ -7076,44 +7091,41 @@ Man kann den Server unabhängig von FHEM selbst starten (um ihn dauerhaft und un

    define Sonos SONOS localhost:4711 30

    -

    Definition

    -define <name> SONOS [upnplistener [interval [waittime [delaytime]]]] +define <name> SONOS [upnplistener [interval [waittime [delaytime]]]]

    Definiert das Sonos interface für die Kommunikation mit dem Sonos-System.

    -[upnplistener]
    Name und Port eines externen UPnP-Client. Wenn nicht angegebenen wird localhost:4711 festgelegt. Der Port muss eine freie Portnummer ihres Systems sein.
    Wenn sie keinen externen Client gestartet haben, startet das Skript einen eigenen.
    Wenn sie einen eigenen Dienst gestartet haben, dann geben sie hier die entsprechenden Informationen an.

    +[upnplistener]
    Name und Port eines externen UPnP-Client. Wenn nicht angegebenen wird localhost:4711 festgelegt. Der Port muss eine freie Portnummer ihres Systems sein.
    Wenn sie keinen externen Client gestartet haben, startet das Skript einen eigenen.
    Wenn sie einen eigenen Dienst gestartet haben, dann geben sie hier die entsprechenden Informationen an.

    -[interval]
    Das Interval wird für die Überprüfung eines Zoneplayers benötigt. In diesem Interval wird nachgeschaut, ob der Player noch erreichbar ist, da sich ein Player nicht mehr abmeldet, wenn er abgeschaltet wird :-)
    Wenn nicht angegeben, wird ein Wert von 10 Sekunden angenommen.

    +[interval]
    Das Interval wird für die Überprüfung eines Zoneplayers benötigt. In diesem Interval wird nachgeschaut, ob der Player noch erreichbar ist, da sich ein Player nicht mehr abmeldet, wenn er abgeschaltet wird :-)
    Wenn nicht angegeben, wird ein Wert von 10 Sekunden angenommen.

    -[waittime]
    Hiermit wird die Wartezeit eingestellt, die nach dem Starten des SubProzesses darauf gewartet wird.

    +[waittime]
    Hiermit wird die Wartezeit eingestellt, die nach dem Starten des SubProzesses darauf gewartet wird.

    -[delaytime]
    Hiermit kann eine Verzögerung eingestellt werden, die vor dem Starten des Netzwerks gewartet wird.

    -
    -
    +[delaytime]
    Hiermit kann eine Verzögerung eingestellt werden, die vor dem Starten des Netzwerks gewartet wird.

    Set

    @@ -7123,7 +7135,7 @@ Man kann den Server unabhängig von FHEM selbst starten (um ihn dauerhaft und un