Sonos PHP Script

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

ColdFireIce
Beiträge: 407
Registriert: 06.03.2009, 15:38
Wohnort: Karlsruhe
Danksagung erhalten: 1 Mal

Sonos PHP Script

Beitrag von ColdFireIce » 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

Code: Alles auswählen

system.Exec("wget http://<SERVER-IP-ADRESSE:SERVER-PORT/PFAD>/sonos.php?cmd=Play -O /var/tmp/httpRequest");
aus einem Homematic Script herraus aufrufen.

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");
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:

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);
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:

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
manchmal ist es nötig nach der Wahl was man hören will auch noch einen "Play" Befehl hinterher zu schicken:

Code: Alles auswählen

sonos.php?cmd=Play
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:

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 = "";
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.
Dateianhänge
sonos.php.txt
das ".txt" müsst ihr noch löschen. Der Dateiuploader erlaubt keine .php Dateien
(24.07 KiB) 1506-mal heruntergeladen

Brenner
Beiträge: 596
Registriert: 08.08.2009, 10:29
Hat sich bedankt: 4 Mal
Danksagung erhalten: 1 Mal

Re: Sonos PHP Script

Beitrag von Brenner » 24.08.2010, 15:59

Hallo Daniel,

läuft alles von der technischen Seite her super. Keine Fehler :-)

Ich habe aber noch nicht kapiert wie ich ganz dediziert z.B. den "NDR2" Radiostream von LastFM aufrufen kann.
Kannst du mir ein Beispiel geben? Aus deinem Beispiel werde ich nicht ganz schlau.
Viele Grüße, Stefan!

ColdFireIce
Beiträge: 407
Registriert: 06.03.2009, 15:38
Wohnort: Karlsruhe
Danksagung erhalten: 1 Mal

Re: Sonos PHP Script

Beitrag von ColdFireIce » 24.08.2010, 16:02

Brenner hat geschrieben:Ich habe aber noch nicht kapiert wie ich ganz dediziert z.B. den "NDR2" Radiostream von LastFM aufrufen kann.
Ähm wüsste ich nicht mal wie ich das beim richtigen LastFM Client machen. Ich dachte immer LastFM kann nur Tags und Artists. Wie soll man den da einen Radiosender auswählen können?

Grüße
Daniel

Onthefly
Beiträge: 937
Registriert: 07.12.2009, 11:55
Hat sich bedankt: 2 Mal
Danksagung erhalten: 3 Mal

Re: Sonos PHP Script

Beitrag von Onthefly » 24.08.2010, 16:05

ColdFireIce hat geschrieben:Bitte aber nicht wegen einer PHP Installation (auf der CCU) dazu gibt es hier andere Themen.
Die Forumsuche hat aber leider nichts hervorgebracht. Hättest Du evtl. einen TIpp für eine PHP Server Installation auf der CCU?

Danke

ColdFireIce
Beiträge: 407
Registriert: 06.03.2009, 15:38
Wohnort: Karlsruhe
Danksagung erhalten: 1 Mal

Re: Sonos PHP Script

Beitrag von ColdFireIce » 24.08.2010, 16:19

Onthefly hat geschrieben:Die Forumsuche hat aber leider nichts hervorgebracht.
Hmm komisch, die Wörter PHP, CCU, Server bringen einen eigentlich schon recht schnell zum Ergebnis wenn man nicht nur auf der 1. Seite schaut.
http://homematic-forum.de/forum/viewtop ... =26&t=1583
http://homematic-forum.de/forum/viewtop ... =26&t=2221
http://homematic-forum.de/forum/viewtop ... =26&t=3117
http://homematic-forum.de/forum/viewtop ... =26&t=4456
http://homematic-forum.de/forum/viewtop ... =26&t=4626

das Addons gibts auf homematic-inside.de

Viele Grüße
Daniel

Onthefly
Beiträge: 937
Registriert: 07.12.2009, 11:55
Hat sich bedankt: 2 Mal
Danksagung erhalten: 3 Mal

Re: Sonos PHP Script

Beitrag von Onthefly » 24.08.2010, 16:39

ColdFireIce hat geschrieben:Hmm komisch, die Wörter PHP, CCU, Server bringen einen eigentlich schon recht schnell zum Ergebnis wenn man nicht nur auf der 1. Seite schaut.
Daniel,
ich muss irgendwie nur in einem Teil des Forums gesucht haben! Anders kann ich es mir nicht erklären! Sorry für die Unannehmlichkeiten und Danke für die tolle Arbeit.

OTF

Brenner
Beiträge: 596
Registriert: 08.08.2009, 10:29
Hat sich bedankt: 4 Mal
Danksagung erhalten: 1 Mal

Re: Sonos PHP Script

Beitrag von Brenner » 24.08.2010, 21:14

ColdFireIce hat geschrieben:
Brenner hat geschrieben:Ich habe aber noch nicht kapiert wie ich ganz dediziert z.B. den "NDR2" Radiostream von LastFM aufrufen kann.
Ähm wüsste ich nicht mal wie ich das beim richtigen LastFM Client machen. Ich dachte immer LastFM kann nur Tags und Artists. Wie soll man den da einen Radiosender auswählen können?

Grüße
Daniel

Hmmm, aber mit deinem Beispiel bekommt man doch auch einen Radiosender (klassik irgendwas) zum laufen. Ich würd gerne z.B. mit NDR2 haben anstatt Klassik.

Weißt du eventuell wo ich da nach Infos suchen könnte?
Dateianhänge
20100824_sonos_homematic_002.JPG
Viele Grüße, Stefan!

ColdFireIce
Beiträge: 407
Registriert: 06.03.2009, 15:38
Wohnort: Karlsruhe
Danksagung erhalten: 1 Mal

Re: Sonos PHP Script

Beitrag von ColdFireIce » 24.08.2010, 22:04

Hi,
Brenner hat geschrieben:Hmmm, aber mit deinem Beispiel bekommt man doch auch einen Radiosender (klassik irgendwas) zum laufen. Ich würd gerne z.B. mit NDR2 haben anstatt Klassik.
nur dass es sich hier bei nicht um den LastFM Musik Dienst handelt sondern ganz normale Internet Radiostreams. Du musst eigentlich nur die richtige Adresse heraus finden. man kann zB die "Unterhaltung" zwischen dem Sonos tool und der Sonos selbst einfach mit Wireshark mit schneiden und dann einfach schaun welche Adresse der Radio Sender hat.

Code: Alles auswählen

cmd=SetRadio&radio=swr.ic.llnwd.net/stream/swr_mp3_m_swr3a
Würde bspw. SWR3 starten.

ich denke es müsste für NDR2 sein:

Code: Alles auswählen

cmd=SetRadio&radio=ndr-ndr2-hi-wma.wm.llnwd.net/ndr_ndr2_hi_wma
habe den Link von hier: http://www.ndr2.de/programm/livestream176.html (google hilft: ndr 2 live stream)

Viele Grüße
Daniel

Masterflash
Beiträge: 20
Registriert: 16.10.2010, 20:08

Re: Sonos PHP Script

Beitrag von Masterflash » 21.07.2011, 16:19

Hallo zusammen
Erstmal vielen Dank an ColdFireIce für das Script. Genau das was ich gesucht habe.
Es klappt bei mir auch nur Versuche ist jetzt seit 1 Stunde die Lautstärke einzustellen.
Ich weiß nicht wie ich den Paramter der Lautstärke mit angeben muß.
Es wäre nett wenn mir jemand weiterhelfen könnte.
Mfg Stefan

Masterflash
Beiträge: 20
Registriert: 16.10.2010, 20:08

Re: Sonos PHP Script

Beitrag von Masterflash » 22.07.2011, 08:18

Hallo nochmal
Also das mit der Lautstärke habe ich jetzt hinbekommen. Jetzt würde ich aber gerne noch einen bestimmten Radiosender (Radio KW) einschalten.
Für einen Tipp wie die Adresse von dem Stream rausbekomme wäre ich sehr dankbar. Ich habe mir auch schon das Programm Wireshark installiert aber
da komme ich leider nicht mit weiter.
Vielen Dank
Mfg Stefan

Antworten

Zurück zu „HomeMatic Zentrale (CCU / CCU2 / CCU3 / Charly)“