From 2cd6b6f8541b1ddfae00e737f1a26bb98e126160 Mon Sep 17 00:00:00 2001
From: rleins
Titel: %s
Interpret: %s
Album: %s'.($showNext ? 'Nächste Wiedergabe:
Artist: %s
Album: %s
Titel: %s
Interpret: %s
Album: %s'.($showNext ? 'Nächste Wiedergabe:
Interpret: %s
Album: %sHTTP::Request
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.
define Sonos SONOS localhost:4711 30
define <name> SONOS [upnplistener [interval [waittime [delaytime]]]]
+define <name> SONOS [upnplistener [interval [waittime [delaytime]]]]
-[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]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.
-[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]
-[waittime]
With this value you can configure the waiting time for the starting of the Subprocess.
[waittime]
-[delaytime]
With this value you can configure a delay time before starting the network-part.
[delaytime]set <name> Mute <state>
+Mute <state>
set <name> PauseAll
+PauseAll
set <name> Pause
+Pause
set <name> StopAll
+StopAll
set <name> Stop
+Stop
set <name> Groups <GroupDefinition>
+Groups <GroupDefinition>
get <name> Groups
+Groups
[Sonos_Kueche], [Sonos_Wohnzimmer, Sonos_Schlafzimmer]. In this example there are two groups: the first consists of one player and the second consists of two players.Sonos_Wohnzimmer), from which the current playlist and the current title playing transferred to the other member(s).attr <name> characterDecoding <codingname>
+characterDecoding <codingname>
attr <name> disable <value>
-attr <name> pingType <string>
+disable <value>
+pingType <string>
attr <name> generateProxyAlbumArtURLs <int>
+generateProxyAlbumArtURLs <int>
attr <name> proxyCacheDir <Path>
+proxyCacheDir <Path>
attr <name> proxyCacheTime <int>
+proxyCacheTime <int>
attr <name> targetSpeakDir <string>
+targetSpeakDir <string>
attr <name> targetSpeakURL <string>
+targetSpeakURL <string>
attr <name> targetSpeakFileTimestamp <int>
+targetSpeakFileTimestamp <int>
attr <name> targetSpeakFileHashCache <int>
+targetSpeakFileHashCache <int>
attr <name> Speak1 <Fileextension>:<Commandline>
+Speak1 <Fileextension>:<Commandline>
attr <name> Speak2 <Fileextension>:<Commandline>
+Speak2 <Fileextension>:<Commandline>
attr <name> Speak3 <Fileextension>:<Commandline>
+Speak3 <Fileextension>:<Commandline>
attr <name> Speak4 <Fileextension>:<Commandline>
+Speak4 <Fileextension>:<Commandline>
attr <name> SpeakCover <Filename>
+SpeakCover <Filename>
attr <name> Speak1Cover <Filename>
+Speak1Cover <Filename>
attr <name> Speak2Cover <Filename>
+Speak2Cover <Filename>
attr <name> Speak3Cover <Filename>
+Speak3Cover <Filename>
attr <name> Speak4Cover <Filename>
+Speak4Cover <Filename>
HTTP::RequestAchtung!
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
define <name> SONOS [upnplistener [interval [waittime [delaytime]]]]
+define <name> SONOS [upnplistener [interval [waittime [delaytime]]]]
-[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]localhost:4711 festgelegt. Der Port muss eine freie Portnummer ihres Systems sein.
-[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]
-[waittime]
Hiermit wird die Wartezeit eingestellt, die nach dem Starten des SubProzesses darauf gewartet wird.
[waittime]
-[delaytime]
Hiermit kann eine Verzögerung eingestellt werden, die vor dem Starten des Netzwerks gewartet wird.
[delaytime]set <name> Mute <state>
+Mute <state>
set <name> PauseAll
+PauseAll
set <name> Pause
+Pause
set <name> StopAll
+StopAll
set <name> Stop
+Stop
set <name> Groups <GroupDefinition>
+Groups <GroupDefinition>
get <name> Groups
+Groups
[Sonos_Kueche], [Sonos_Wohnzimmer, Sonos_Schlafzimmer]. In diesem Beispiel sind also zwei Gruppen definiert, von denen die erste aus einem Player und die zweite aus Zwei Playern besteht.Sonos_Wohnzimmer), von dem die aktuelle Abspielliste un der aktuelle Titel auf die anderen Gruppenmitglieder übernommen wird.attr <name> characterDecoding <codingname>
+characterDecoding <codingname>
attr <name> disable <value>
+disable <value>
attr <name> pingType <string>
+pingType <string>
attr <name> generateProxyAlbumArtURLs <int>
+generateProxyAlbumArtURLs <int>
attr <name> proxyCacheDir <Path>
+proxyCacheDir <Path>
attr <name> proxyCacheTime <int>
+proxyCacheTime <int>
attr <name> targetSpeakDir <string>
+targetSpeakDir <string>
attr <name> targetSpeakURL <string>
+targetSpeakURL <string>
attr <name> targetSpeakFileTimestamp <int>
+targetSpeakFileTimestamp <int>
attr <name> targetSpeakFileHashCache <int>
+targetSpeakFileHashCache <int>
attr <name> Speak1 <Fileextension>:<Commandline>
+Speak1 <Fileextension>:<Commandline>
attr <name> Speak2 <Fileextension>:<Commandline>
+Speak2 <Fileextension>:<Commandline>
attr <name> Speak3 <Fileextension>:<Commandline>
+Speak3 <Fileextension>:<Commandline>
attr <name> Speak4 <Fileextension>:<Commandline>
+Speak4 <Fileextension>:<Commandline>
attr <name> SpeakCover <Absolute-Imagepath>
+SpeakCover <Absolute-Imagepath>
attr <name> Speak1Cover <Absolute-Imagepath>
+Speak1Cover <Absolute-Imagepath>
attr <name> Speak2Cover <Absolute-Imagepath>
+Speak2Cover <Absolute-Imagepath>
attr <name> Speak3Cover <Absolute-Imagepath>
+Speak3Cover <Absolute-Imagepath>
attr <name> Speak3Cover <Absolute-Imagepath>
+Speak3Cover <Absolute-Imagepath>
attr <name> Speak4Cover <Absolute-Imagepath>
+Speak4Cover <Absolute-Imagepath>
define Sonos_Wohnzimmer SONOSPLAYER RINCON_000EFEFEFEF401400_MR
define <name> SONOSPLAYER <udn>
+define <name> SONOSPLAYER <udn>
-<udn>
MAC-Address based identifier of the zoneplayer
<udn>set <name> Alarm (Create|Update|Delete) <ID> <Datahash>
+Alarm (Create|Update|Delete) <ID> <Datahash>
set <name> DailyIndexRefreshTime <time>
+DailyIndexRefreshTime <time>
set <name> Name <Zonename>
+Name <Zonename>
set <name> Reboot
+Reboot
set <name> RoomIcon <Iconname>
+RoomIcon <Iconname>
set <name> Wifi <State>
+Wifi <State>
set <name> CurrentTrackPosition <TimePosition>
+CurrentTrackPosition <TimePosition>
set <name> Pause
+Pause
set <name> Previous
+Previous
set <name> Play
+Play
set <name> PlayURI <songURI> [Volume]
+PlayURI <songURI> [Volume]
set <name> PlayURITemp <songURI> [Volume]
+PlayURITemp <songURI> [Volume]
,PlayURI, e.g. nothing is restored after playing.set <name> Next
+Next
set <name> Speak <Volume> <Language> <Text>
+Speak <Volume> <Language> <Text>
set <name> StartFavourite <Favouritename> [NoStart]
+StartFavourite <Favouritename> [NoStart]
/meine.hits/.set <name> StartPlaylist <Playlistname> [EmptyQueueBeforeImport]
+StartPlaylist <Playlistname> [EmptyQueueBeforeImport]
set <name> StartRadio <Radiostationname>
+StartRadio <Radiostationname>
set <name> Stop
+Stop
set <name> Track <TrackNumber|Random>
+Track <TrackNumber|Random>
Random a random track will be selected.set <name> Balance <BalanceValue>
+Balance <BalanceValue>
set <name> Bass <BassValue>
+Bass <BassValue>
set <name> CrossfadeMode <State>
+CrossfadeMode <State>
set <name> LEDState <State>
+LEDState <State>
set <name> Loudness <State>
+Loudness <State>
set <name> Mute <State>
+Mute <State>
set <name> MuteT
+MuteT
set <name> Repeat <State>
+Repeat <State>
set <name> Shuffle <State>
+Shuffle <State>
set <name> SleepTimer <Time>
+SleepTimer <Time>
set <name> Treble <TrebleValue>
+Treble <TrebleValue>
set <name> Volume <VolumeLevel> [RampType]
+Volume <VolumeLevel> [RampType]
set <name> VolumeD
+VolumeD
set <name> VolumeRestore
+VolumeRestore
set <name> VolumeSave <VolumeLevel>
+VolumeSave <VolumeLevel>
set <name> VolumeU
+VolumeU
set <name> AddURIToQueue <songURI>
+AddURIToQueue <songURI>
set <name> CurrentPlaylist
+CurrentPlaylist
set <name> EmptyPlaylist
+EmptyPlaylist
set <name> LoadPlaylist <Playlistname> [EmptyQueueBeforeImport]
+LoadPlaylist <Playlistname> [EmptyQueueBeforeImport]
/hits.2014/.set <name> LoadRadio <Radiostationname>
+LoadRadio <Radiostationname>
/radio/.set <name> SavePlaylist <Playlistname>
+SavePlaylist <Playlistname>
set <name> AddMember <devicename>
+AddMember <devicename>
set <name> CreateStereoPair <rightPlayerDevicename>
+CreateStereoPair <rightPlayerDevicename>
set <name> GroupMute <State>
+GroupMute <State>
set <name> GroupVolume <VolumeLevel>
+GroupVolume <VolumeLevel>
set <name> RemoveMember <devicename>
+RemoveMember <devicename>
set <name> SeparateStereoPair
+SeparateStereoPair
set <name> SnapshotGroupVolume
+SnapshotGroupVolume
get <name> Alarm <ID>
+Alarm <ID>
eval(ReadingsVal(<Devicename>, 'Alarmlist', ()))->{<ID>};.get <name> EthernetPortStatus <PortNumber>
+EthernetPortStatus <PortNumber>
get <name> PossibleRoomIcons
+PossibleRoomIcons
get <name> Favourites
+Favourites
get <name> FavouritesWithCovers
+FavouritesWithCovers
get <name> Playlists
+Playlists
get <name> PlaylistsWithCovers
+PlaylistsWithCovers
get <name> Radios
+Radios
get <name> RadiosWithCovers
+RadiosWithCovers
get <name> CurrentTrackPosition
+CurrentTrackPosition
attr <name> disable <int>
+disable <int>
attr <name> generateSomethingChangedEvent <int>
+generateSomethingChangedEvent <int>
attr <name> generateVolumeEvent <int>
+generateVolumeEvent <int>
attr <name> generateVolumeSlider <int>
+generateVolumeSlider <int>
attr <name> getAlarms <int>
+getAlarms <int>
attr <name> volumeStep <int>
+volumeStep <int>
VolumeU and VolumeD.attr <name> generateInfoSummarize1 <string>
+generateInfoSummarize1 <string>
attr <name> generateInfoSummarize2 <string>
+generateInfoSummarize2 <string>
attr <name> generateInfoSummarize3 <string>
+generateInfoSummarize3 <string>
attr <name> generateInfoSummarize4 <string>
+generateInfoSummarize4 <string>
attr <name> stateVariable <string>
+stateVariable <string>
attr <name> maxVolume <int>
+maxVolume <int>
attr <name> minVolume <int>
+minVolume <int>
attr <name> maxVolumeHeadphone <int>
+maxVolumeHeadphone <int>
attr <name> minVolumeHeadphone <int>
+minVolumeHeadphone <int>
attr <name> buttonEvents <Time:Pattern>[ <Time:Pattern> ...]
+buttonEvents <Time:Pattern>[ <Time:Pattern> ...]
ButtonEvent, the value is the defined button-sequence.2:MMButtonEvent and has the value MM.
define Sonos_Wohnzimmer SONOSPLAYER RINCON_000EFEFEFEF401400_MR
define <name> SONOSPLAYER <udn>
+define <name> SONOSPLAYER <udn>
-<udn>
MAC-Addressbasierter eindeutiger Bezeichner des Zoneplayer
-
-
+<udn>
MAC-Addressbasierter eindeutiger Bezeichner des Zoneplayer
set <name> Alarm (Create|Update|Delete) <ID> <Datahash>
+Alarm (Create|Update|Delete) <ID> <Datahash>
set <name> DailyIndexRefreshTime <time>
+DailyIndexRefreshTime <time>
set <name> Name <Zonename>
+Name <Zonename>
set <name> Reboot
+Reboot
set <name> RoomIcon <Iconname>
+RoomIcon <Iconname>
set <name> Wifi <State>
+Wifi <State>
set <name> CurrentTrackPosition <TimePosition>
+CurrentTrackPosition <TimePosition>
set <name> Pause
+Pause
set <name> Previous
+Previous
set <name> Play
+Play
set <name> PlayURI <songURI> [Volume]
+PlayURI <songURI> [Volume]
set <name> PlayURITemp <songURI> [Volume]
+PlayURITemp <songURI> [Volume]
PlayURI ab, es wird also nichts am Ende (wenn es eines geben sollte) wiederhergestellt.set <name> Next
+Next
set <name> Speak <Volume> <Language> <Text>
+Speak <Volume> <Language> <Text>
PlayURITemp als Durchsage abzuspielen. Mögliche Sprachen können auf der Google-Seite nachgesehen werden. Möglich sind z.B. "de", "en", "fr", "es"...set <name> StartFavourite <FavouriteName> [NoStart]
+StartFavourite <FavouriteName> [NoStart]
/meine.hits/.set <name> StartPlaylist <Playlistname> [EmptyQueueBeforeImport]
+StartPlaylist <Playlistname> [EmptyQueueBeforeImport]
set <name> StartRadio <Radiostationname>
+StartRadio <Radiostationname>
set <name> Stop
+Stop
set <name> Track <TrackNumber|Random>
+Track <TrackNumber|Random>
Random angegeben wird, dann wird eine zufällige Trackposition ausgewählt.set <name> Balance <BalanceValue>
+Balance <BalanceValue>
set <name> Bass <BassValue>
+Bass <BassValue>
set <name> CrossfadeMode <State>
+CrossfadeMode <State>
set <name> LEDState <State>
+LEDState <State>
set <name> Loudness <State>
+Loudness <State>
set <name> Mute <State>
+Mute <State>
set <name> MuteT
+MuteT
set <name> Repeat <State>
+Repeat <State>
set <name> Shuffle <State>
+Shuffle <State>
set <name> SleepTimer <Time>
+SleepTimer <Time>
set <name> Treble <TrebleValue>
+Treble <TrebleValue>
set <name> Volume <VolumeLevel> [RampType]
+Volume <VolumeLevel> [RampType]
set <name> VolumeD
+VolumeD
set <name> VolumeRestore
+VolumeRestore
VolumeSave gespeicherte Lautstärke wieder her.set <name> VolumeSave <VolumeLevel>
+VolumeSave <VolumeLevel>
VolumeRestore wiederhergestellt werden.set <name> VolumeU
+VolumeU
set <name> AddURIToQueue <songURI>
+AddURIToQueue <songURI>
set <name> CurrentPlaylist
+CurrentPlaylist
set <name> EmptyPlaylist
+EmptyPlaylist
set <name> LoadPlaylist <Playlistname> [EmptyQueueBeforeImport]
+LoadPlaylist <Playlistname> [EmptyQueueBeforeImport]
/hits.2014/.set <name> LoadRadio <Radiostationname>
+LoadRadio <Radiostationname>
/radio/.set <name> SavePlaylist <Playlistname>
+SavePlaylist <Playlistname>
set <name> AddMember <devicename>
+AddMember <devicename>
set <name> CreateStereoPair <rightPlayerDevicename>
+CreateStereoPair <rightPlayerDevicename>
set <name> GroupMute <State>
+GroupMute <State>
set <name> GroupVolume <VolumeLevel>
+GroupVolume <VolumeLevel>
set <name> RemoveMember <devicename>
+RemoveMember <devicename>
set <name> SeparateStereoPair
+SeparateStereoPair
set <name> SnapshotGroupVolume
+SnapshotGroupVolume
get <name> Alarm <ID>
+Alarm <ID>
eval(ReadingsVal(<Devicename>, 'Alarmlist', ()))->{<ID>};, damit sich nicht jeder ausdenken muss, wie er jetzt am einfachsten an die Alarm-Informationen rankommen kann.get <name> EthernetPortStatus <PortNumber>
+EthernetPortStatus <PortNumber>
get <name> PossibleRoomIcons
+PossibleRoomIcons
get <name> Favourites
+Favourites
get <name> FavouritesWithCovers
+FavouritesWithCovers
get <name> Playlists
+Playlists
get <name> PlaylistsWithCovers
+PlaylistsWithCovers
get <name> Radios
+Radios
get <name> RadiosWithCovers
+RadiosWithCovers
get <name> CurrentTrackPosition
+CurrentTrackPosition
attr <name> disable <int>
+disable <int>
attr <name> generateSomethingChangedEvent <int>
+generateSomethingChangedEvent <int>
attr <name> generateVolumeEvent <int>
+generateVolumeEvent <int>
attr <name> generateVolumeSlider <int>
+generateVolumeSlider <int>
attr <name> getAlarms <int>
+getAlarms <int>
attr <name> volumeStep <int>
+volumeStep <int>
VolumeU und VolumeD.attr <name> generateInfoSummarize1 <string>
+generateInfoSummarize1 <string>
attr <name> generateInfoSummarize2 <string>
+generateInfoSummarize2 <string>
attr <name> generateInfoSummarize3 <string>
+generateInfoSummarize3 <string>
attr <name> generateInfoSummarize4 <string>
+generateInfoSummarize4 <string>
attr <name> stateVariable <string>
+stateVariable <string>
state kopiert werden soll.attr <name> maxVolume <int>
+maxVolume <int>
attr <name> minVolume <int>
+minVolume <int>
attr <name> maxVolumeHeadphone <int>
+maxVolumeHeadphone <int>
attr <name> minVolumeHeadphone <int>
+minVolumeHeadphone <int>
attr <name> buttonEvents <Time:Pattern>[ <Time:Pattern> ...]
+buttonEvents <Time:Pattern>[ <Time:Pattern> ...]
ButtonEvent, der Wert ist die definierte Tastenfolge2:MMButtonEvent, und den Wert MM.