Sonos PHP Script
Verfasst: 21.06.2010, 17:43
Hallo mal wieder.
heute teile ich mal mein Script mit euch dass ich zur Ansteuerung eines Sonos Players nutze.
Es handelt sich dabei um ein PHP Script, muss also auf einem PHP fähigen (Homepage)-Server liegen. Dann kann man es einfach per
aus einem Homematic Script herraus aufrufen.
Wer auf der CCU den PHP Server laufen hat kann natürlich auch diesen nutzen.
bspw:
ich wurde gerade von owagner darauf hingewiesen, dass es bei manchen wohl Probleme gibt wenn man system.Exec ohne die Parameter &stdout &stderr aufgerufen wird. In diesem Fall wäre der Code wohl eher so richtig:
Ich habe damit keine Erfahrungen gemacht aber zur Vollständigkeit sollte das erwähnt sein.
Integrierte Befehle sind:
Pause, Play, Next, Previous, Rewind (selbsterklärend)
SetVolume (benötigt noch den 'volume' parameter. setzt die Lautstärke auf den Wert 'volume')
SetPlayMode (benötigt noch den 'mode' parameter. gültige playmodes: "REPEAT_ALL", "SHUFFLE", "NORMAL")
SetMute (benötigt noch den 'mute' parameter. mute=1 -> Lautlos. mute=0 -> Normal)
SetRadio (benötigt noch den 'radio' parameter. Startet den Radio-Stream 'radio'. z.B. radio = "players.creacast.com/creacast/klassik/playlist.pls")
ClearQueue (Leert die Playliste)
AddToQueue (benötigt noch den 'file' parameter. Fügt die Datei file der Playliste hinzu. z.B. file = "192.168.1.20/mp3/playliste.m3u")
RemoveFromQueue, SetTrack (benötigt noch den 'track' parameter)
Info, Info2 (ließt aktuelle Infos aus)
InputPC (setze den Eingang auf den Cinch-Eingang)
InputQueue (setze den Eingang auf die Interne Queue)
LastFmPersonal (starte LastFM Bibliothek Stream)
LastFmRecommended (starte LastFM Empfehlungen Stream)
LastFmTag (benötigt noch den 'lfmTag' parameter. Starte einen LastFM Tag-Stream 'lfmTag' z.B. den Rock-Tag Stream)
LastFmArtist (benötigt noch den 'lfmArtist' parameter. Starte einen LastFM Artist-Stream 'lfmArtist' z.B. den Aeorosmith-Artist Stream)
einen radio sender würde mal bspw. so starten:
der LastFM Bibliotheks Stream lässt sich so starten:
manchmal ist es nötig nach der Wahl was man hören will auch noch einen "Play" Befehl hinterher zu schicken:
damit dass Script funktioniert müssen noch 2-3 Parameter in dem Script eingetragen werden.
die IP-Adresse des Sonos Players,
der Port des Sonos Players falls abweichend von der 1400 (standart Port),
und der LastFM Username falls man LastFM nutzen möchte:
Bei mir ermöglicht diese Script zB dass wenn ich den "Homeleaving" Taster drücke, nicht nur alle Lichter ausgehen sondern auch die Musik gestoppt wird, und umgekehrt wenn ich wieder heimkomme.
Es ist noch zusagen dass fast alles Befehle mit Wireshark von dem Sonos Desktop Tool abgefangen wurden und da durch vielleicht noch irgendwelche versteckten persönlichen Infos enthalten. Da ich aber nur 1 Gerät habe lässt sich das nicht so einfach feststellen . Bei mir funktionieren alle Befehle. sollte es Probleme geben einfach melden.
Bitte aber nicht wegen einer PHP Installation (auf der CCU) dazu gibt es hier andere Themen.
Viele Grüße
Daniel
PS. Eigentlich gehört diese Script nicht umbedingt in diese Forum, da es nicht HomeMatic exclusiv ist. Man könnte es von überall ausführen wo man einen PHP Server hat und einen Aufruf starten kann.
Den Anstoss zu diesem Script habe ich in einem IP-Symcon Forum gefunden.
heute teile ich mal mein Script mit euch dass ich zur Ansteuerung eines Sonos Players nutze.
Es handelt sich dabei um ein PHP Script, muss also auf einem PHP fähigen (Homepage)-Server liegen. Dann kann man es einfach per
Code: Alles auswählen
system.Exec("wget http://<SERVER-IP-ADRESSE:SERVER-PORT/PFAD>/sonos.php?cmd=Play -O /var/tmp/httpRequest");
Wer auf der CCU den PHP Server laufen hat kann natürlich auch diesen nutzen.
bspw:
Code: Alles auswählen
system.Exec("wget http://127.0.0.1:90/includes/sonos.php?cmd=Play -O /var/tmp/httpRequest");
Code: Alles auswählen
string stdout;
string stderr;
system.Exec("wget http://127.0.0.1:90/includes/sonos.php?cmd=Play -O /var/tmp/httpRequest",&stdout,&stderr);
Integrierte Befehle sind:
Pause, Play, Next, Previous, Rewind (selbsterklärend)
SetVolume (benötigt noch den 'volume' parameter. setzt die Lautstärke auf den Wert 'volume')
SetPlayMode (benötigt noch den 'mode' parameter. gültige playmodes: "REPEAT_ALL", "SHUFFLE", "NORMAL")
SetMute (benötigt noch den 'mute' parameter. mute=1 -> Lautlos. mute=0 -> Normal)
SetRadio (benötigt noch den 'radio' parameter. Startet den Radio-Stream 'radio'. z.B. radio = "players.creacast.com/creacast/klassik/playlist.pls")
ClearQueue (Leert die Playliste)
AddToQueue (benötigt noch den 'file' parameter. Fügt die Datei file der Playliste hinzu. z.B. file = "192.168.1.20/mp3/playliste.m3u")
RemoveFromQueue, SetTrack (benötigt noch den 'track' parameter)
Info, Info2 (ließt aktuelle Infos aus)
InputPC (setze den Eingang auf den Cinch-Eingang)
InputQueue (setze den Eingang auf die Interne Queue)
LastFmPersonal (starte LastFM Bibliothek Stream)
LastFmRecommended (starte LastFM Empfehlungen Stream)
LastFmTag (benötigt noch den 'lfmTag' parameter. Starte einen LastFM Tag-Stream 'lfmTag' z.B. den Rock-Tag Stream)
LastFmArtist (benötigt noch den 'lfmArtist' parameter. Starte einen LastFM Artist-Stream 'lfmArtist' z.B. den Aeorosmith-Artist Stream)
einen radio sender würde mal bspw. so starten:
Code: Alles auswählen
sonos.php?cmd=SetRadio&radio="players.creacast.com/creacast/klassik/playlist.pls"
der LastFM Bibliotheks Stream lässt sich so starten:
Code: Alles auswählen
sonos.php?cmd=LastFmPersonal
Code: Alles auswählen
sonos.php?cmd=Play
die IP-Adresse des Sonos Players,
der Port des Sonos Players falls abweichend von der 1400 (standart Port),
und der LastFM Username falls man LastFM nutzen möchte:
Code: Alles auswählen
// Sonos Player device ip-address. e.g. "192.168.0.100"
// IP-Adresse des Sonos Players z.B. "192.168.0.100"
$deviceAddress = "";
// Sonos Player device port. e.g. 1400 (default)
// Port des Sonos Players z.B. 1400 (standart)
$devicePort = 1400;
// LastFM User ID e.g. "sonosrocker54"
$lfmUser = "";
Es ist noch zusagen dass fast alles Befehle mit Wireshark von dem Sonos Desktop Tool abgefangen wurden und da durch vielleicht noch irgendwelche versteckten persönlichen Infos enthalten. Da ich aber nur 1 Gerät habe lässt sich das nicht so einfach feststellen . Bei mir funktionieren alle Befehle. sollte es Probleme geben einfach melden.
Bitte aber nicht wegen einer PHP Installation (auf der CCU) dazu gibt es hier andere Themen.
Viele Grüße
Daniel
PS. Eigentlich gehört diese Script nicht umbedingt in diese Forum, da es nicht HomeMatic exclusiv ist. Man könnte es von überall ausführen wo man einen PHP Server hat und einen Aufruf starten kann.
Den Anstoss zu diesem Script habe ich in einem IP-Symcon Forum gefunden.