leider nein - ich mache ja nur den „Addmember“-Teil. Wenn ich diese 4 Zeilen ausführe:
$sonos = new PHPSonos($sonosip); //Sonos ZP IPAdresse
$AddMember = $sonos->AddMember($memberid);
// Talk to slave
$sonos = new PHPSonos($memberip); //Slave Sonos ZP IPAddress
// needed to start playback on Slave
$ret = $sonos->SetAVTransportURI("x-rincon:" . $sonosid);
dann verbindet er Master und Slave zwar korrekt, aber wenn ich diese Gruppe z.B. mit der Sonos App trenne (also nicht mit dem Code hier) - dann stoppt die Wiedergabe auf beiden Geräten.
Verbinde ich aber die Gruppe auch über Sonos App, so stoppt die Wiedergabe nur auf dem Gerät, dass ich aus der Gruppe entferne.
ok, das ging aus dem Post nicht so hervor… hmmm…
Da kann ich jetzt leider auch nicht viel helfen, mir war das nur im Code aufgefallen.
Ich habe leider nur einen Player, so dass ich das nicht testen kann, und dir eine Lösung anbieten kann.
Hast du schon mal mit Wireshark (o.ä.) gelauscht, was der Controller so sendet, um die Zonen zu verbinden?
Wie soll ich denn nun den Aufruf gestalten, wenn ich meinen Player lauter, leiser, mute, unmute, anderer Radiosender auswählen möchte? Mit leerzeichen kann es ja nicht gehen.
mit Freude habe ich hier die PHP Lib für das Sonos System entdeckt, und gleich bei mir auf dem Webserver (QNap NAS) eingebunden.
Klappt soweit auch echt prima.
Nur hänge ich jetzt an den Radio Favoriten (Eigene Radiosender)
Ich kann die Sender auslesen mit:
$browselist = $sonos->Browse("R:0/0","c");
In
$browselist[1]['res']
sehe ich dann z.B.: ( .977 70’s Rock ) x-sonosapi-stream%3As48937%3Fsid%3D254%26amp%3Bflags%3D32
Die anderen Felder sind auch entsprechend (richtig) ausgelesen.
eigentlich habe ich die Skripte ausschließlich für die Konsole gedacht, da ich das von meinen bestehenden Skripten (Systemkommandos) aus aufgerufen habe. Da ich wegen Urlaubsreise gerade keinen Zugriff auf den Code habe, kann ich leider gerade nicht reinschauen.
Ansonsten müsstest du dir vielleicht ein einfaches Skript drumherumbauen, welches von dir per Webbrowser aufgerufen wird, und den von mir geschrieben Teil seinerseits aufruft.
Da kannst du dir dann auch ein paar Parameter besser organisieren, da du ja nicht die komplette Freiheit benötigst…
Hi Reiner,
danke für die schnelle Antwort. Wenn ich es aufrufe, wie Du es beschreibst, erhalte ich wieder den gleichen Output und am Sonos tut sich gar nichts. Ich wollte es aus dem Browser aufrufen, da es hiermit schneller geht. Final rufe ich es natürlich aus der Kommandozeile auf, nur wenn es so schon nicht klappt, scheint das Problem ursächlich noch nicht gefunden zu sein … mist …
@Jürgen: super, dann funktioniert das Skript ja zumindest wie vorgesehen
Wie gesagt, es war für mich eher ein kleiner Zwischenschritt und ist hauptsächlich als Bastelei zu sehen…
Die eigentliche Stärke wäre ja jetzt das Reagieren auf Änderungs-Events des Players, wo momentan hauptsächlich eine Konsolenausgabe des Titels erfolgt, und mein alter FHEM-Aufruf drinsteht.
@Marc: Das ist die aktuellste, ich habe seitdem an der Stelle für PHP auch nichts weitergemacht.
Ich habe dann begonnen ein FHEM-Modul zu entwickeln (das läuft in Perl). Damit bin auch schon recht weit, musste aber zwischendurch mal eine Pause machen (wegen familiärer Gründe:-)
Ich habe dort noch ein bißchen die Problematik mit den Perl-Threads, die ich demnächst komplett umbauen möchte. Für einen Player (wie das bis vor drei Wochen bei mir zuhause noch stand) lief das bereits stabil. Für mehrere leider noch nicht so (aus den oben genannten Thread-Gründen).
Probieren kann man es natürlich, da dort der Funktionsumfang diesen hier bei weitem übersteigt. Wer sich dafür interessiert, kann ja mal meinen Wiki-Eintrag dazu überfliegen: http://www.fhemwiki.de/wiki/Sonos_Anwendungsbeispiel.
habe mal die Meldungsausgabe aus Post #69 ausprobiert.
Der lfd. Radiosender macht zwar eine Pause, aber es erfolgt darin keine Ausgabe der Meldung.wav
Ich habe es mit verschiedenen .wav-Dateien getestet, ohne Erfolg.
Wenn ich statt einer .wav eine .mp3 benutze, funktioniert das Script.
Habe ich etwas übersehen? Kann mir jemand einen Tipp geben?
Deinen Pfad kannst du z.B. auf deinem normalen Rechner mal als Datei-öffnen versuchen. Bei Linux wie beschrieben mit Schrägstrichen, bei Windows diese am Besten vorher durch „“ ersetzen.
Manchmal wird auch der Name des Servers der Freigabe nicht sauber aufgelöst. Zum Testen vielleicht also auch mal direkt mit der IP versuchen (also sowas wie: x-file-cifs://192.168.0.1/freigabename/Dateiname.wav).
Hast du auf Groß-/Kleinschreibung geachtet?
Ich gebe zu, dass das nur gestochere ist, aber so eine richtige Idee habe ich da jetzt auch nicht…
danke für die vielen Ansatzpunkte. Genauso bin ich in meinen weiteren Tests vorgegangen.
Leider liegt das Problem in meiner Standard-Meldungsdatei Meldung.WAV . Irgendetwas verhindert den Zugriff von SONOS.
Wenn ich die Meldung.WAV nach test.wav kopiere (gleiches Verzeichnis) funktioniert es.
wie sieht es denn aus, wenn du die Datei mal so im Index stehen lässt, und dann versuchst, die Meldung abspielen zu lassen?
Also, Sonos „kennt“ die Meldung.wav und könnte sie auch normal über den Controller abspielen, und du startest dann mal deine Wiedergabe aus dem PHP-Skript heraus (natürlich mit dem dazu passenden Pfad).
Hallo zusammen,
ist ja schon ein langer Thread! Wow, da stehen viele wichtige Infos drin! Wenn möglich, möchte ich mich mit einer Frage beteiligen.
Ich habe eine Sonos Soundbar, welche Optisch mit meinem TV verbunden ist. Ich möchte, diesen digitalen Input gerne über Script aufrufen. Was ich in den „FAQ“ gefunden habe:
$sonos->SetAVTransportURI(„x-rincon-stream:RINCON_000E5832231C01400“);
Dies ist okay für einen analogen Eingang. Aber scheint nok zu sein für den TV Eingang. Kann mir da jemand weiterhelfen?
Gruss & Danke
Nachtrag: über http://IP:1400/status/toslink sieht man schön den Status. Aber eben, die Frage bleibt, wie per PHP ansprechen
du könntest den Kanal mal einstellen, und dir dann die Position-Info mittels „GetPositionInfo()“ am entsprechenden Zoneplayer auslesen. Dort sollte im Feld „TrackURI“ dann das von dir gesuchte drinstehen.