PHP Sonos (Klasse zum Ansteuern einzelner Player)

Das gruppieren und auflösen von einer Gruppe aus z.B. 2 Playern sieht ja immer noch recht kompliziert aus… gibt es da mittlweile einen entspannteren Workaround ? Diese ganze Rincon Geschichte liest - im Gegensatz zu den anderen Befehlen - noch ganz schön kompliziert auf den ersten Blick.

Möchte bei mir in der Ankleide auf Knopfdruck den Ton aus der Küche mit reinholen und bei langem Druck wieder trennen.

Wollte das wieder mit den Gira 6fach Tastern lösen.

Hallo Nico,
eigentlich ist das nicht so kompliziert. Gerade wenn Du immer die gleiche Konstellation hast, sollte das recht einfach zu skripten sein. Vielleicht hilft Dir das folgende Beispiel (Webront User Seite aus br_sonos):

<?
// Teststring:
//http://192.168.0.5:82/user/sonoscmd.php?sonosip=192.168.0.115&sonosid=RINCON_000E5832FB5C01400&cmd=RemoveMember&memberip=192.168.0.111&memberid=RINCON_000E5825411201400

//http://192.168.0.5:82/user/sonoscmd.php?sonosip=192.168.0.115&sonosid=RINCON_000E5832FB5C01400&cmd=AddMember&memberip=192.168.0.111&memberid=RINCON_000E5825411201400


require ("../../scripts/functions.inc.php"); // use PHPSonos.inc.php here

$sonosip=$_GET['sonosip'];
$sonosid=$_GET['sonosid'];
$cmd=$_GET['cmd'];
$memberip=$_GET['memberip'];
$memberid=$_GET['memberid'];



        if ($cmd == "RemoveMember") {
        // echo "$sonosip $sonosid $cmd $memberip $memberid $newcoordip";
          // Talk to Coord
          $sonos = new PHPSonos($sonosip); //Sonos ZP IPAdresse
          $RemoveMember = $sonos->RemoveMember($memberid);
          // Talk to slave
	  	
        	  	$sonos = new PHPSonos($memberip); //Slave Sonos ZP IPAddress
          		// needed for stop of playback on Slave
          		$sonos->SetAVTransportURI("");
          		//Playing stops
          		br_sonos_read_all();
		
	}
        if ($cmd == "AddMember") {
        // echo "$sonosip $sonosid $cmd $memberip $memberid";
          // Talk to Coord
          $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);
          //Playing starts
          	br_sonos_read_all();
	}

?>

Viele Grüße, Benjamin

hi,

Erstmals Danke den Entwicklern der Sonos Library!

Ich fange gerade erst mit der Integration von Sonos in ips an, und hab gleich einmal eine Frage, zu der ich hier noch keine eindeutige Antwort finden konnte:

Was ist die korrekte Methode bei einer Gruppe von zwei ZonePlayern das Abspielen zu Stoppen?

Einfach an beide nacheinander Stop() senden? Oder muss man erst Gruppenparameter etc. auslesen?

In diesem Fall geht es wirklich nur um zwei Player die in einer Gruppe sind, und das Abspielen beendet werden soll – also keine Aufloesung der Gruppe.

Bonusfrage ist jetzt dann wie man das Abspielen in der Gruppe auch wieder startet (also wie wenn man im Controller einfach wieder auf Play drueckt).

Mit einzelnen Playern ist mir die Benutzung der Library schon klar, nur mit der Gruppe noch nicht…

Hallo Obstler,
die Transport / Playcontrol Kommandos (Play / Pause / Next … ) sendest Du nur an den sog. Coordinator der Zonegroup. Das sollte ausreichen. :slight_smile:

Falls Du auch br_sonos einsetzt kannst Du Dir auch einiges aus br_sonos_update.php kopieren und es wiederverwenden.
Grüße, Benjamin

Moin Zusammen,
ich glaub ich seh z. Zt. den Wald vor lauter Bäumen nicht. Kann mir mal jemand helfen?
Mit welchem Befehl kann ich mir den nächsten Titel anzeigen lassen? Also der abgespielt wird nach dem aktuell laufenden Titel. Oder ist das nicht möglich?
Danke,
Peter

Hallo Peter,
in einer Playlist kannst Du ohne random ja leicht das nächste Lied vorhersagen. Wenn Du die Info auch beim random haben willst (wie es ja der desktop controller auch kann), geht das nur per upnp subscribe.

Ich habe hier mal erklärt wie ich das mache. Die Einstellungen für den Cutter sind weiter unten im o.g. Thread zu finden.

Grüße, Benjamin

Hallo alle zusammen.

Weiß jemand wie man LastFM bzw. Napster per Script startet?

Für eure Hilfe besten Dank!

Hilft das ?http://www.fhz-forum.de/download/file.php?id=1651&sid=1ee425f013223d2ce10c9a1d9d72b0ec

… ansonsten müsste ich auch nachlesen und devicespy anwerfen. :smiley:

Grüße, Benjamin

Kann mir jemand vielleicht helfen? Ich hatte br_sonos probiert, klappte aber nicht. Nun wollte ich mit der php_sonos klasse Versuche starten. Die Datei befindet sich im script Verzeichnis und ich habe versucht aus den Beispielen von Seite 1 und 2 dieses Theras was zu erreichen. Irgendwo hä ich da ein Verständnis Problem. Genau wie bei br_sonos auch ist kein Schalten von den Songs Geräten über das Webfront möglich. Wenn ich das script zyklisch alle paar Sekunden laufen lasse und über einen Songs Controller z.B. die Lautstärke verändre sehe ich das jedoch im WebFront sofort.

Kann mir jemand vielleicht erklären wie genau die Variablen angelegt werden? Welches Ereignis muss ich wo zuweisen, damit eine Volume Veränderung über das WebFront möglich ist?

Moin Fax…

ich hab das so gelöst!

Eine neue Integer-Variable angelegt (nennen wir sie hier mal SET-VOLUME) und Profil Intensity 0-100 gewählt.
Ein Aktionsskript angewählt mit folgenden Inhalt:


<?
SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
<?

Dann habe ich ein weiteres Skript wie folgt zum setzen und aktualieseren der Lautstärkenvariable.


<?

include("PHPSonos.inc.php");
$sonos = new PHPSonos("192.168.2.3"); //Sonos ZP IPAdresse (anpassen nicht vergessen )

switch ($_IPS['VARIABLE'])
{
case 29741: // ID der Sonosskript-Variablen mit der aktuellen Lautstärke
	SetValue(16987 /*[AUDIO / VIDEO\SONOS\SONOS KÜCHE\Volume (Set)]*/,$_IPS['VALUE']); // Diese Variable ist die neue Set-Volume-Variable
	break;
	
case 16987: // ID der NEUEN-Variable
	$sonos->SetVolume($_IPS['VALUE']); //0-100 in % $volume
	break;
}


?>

Jetzt legst Du noch 2 Ereignisse für das Skript an.

  1. Bei Variablenaktualisierung der Sonos-Volume-Variable
  2. Bei Änderung der neuen SET-VOLUME-VARIABLEN.

Fertig.

Gruß,
Peter

Hallo Peter,
Funktioniert auf Anhieb, vielen Dank!!

Mein Problem war das schalten bzw. Ansprechen der beiden Variablen zueinander. Soweit sind meine php skills wohl noch nicht. Aber da kann ich drauf aufbauen. Ich verstehe was da passiert hätte das selbst so aber nicht hinbekommen. Mit deinem Beispiel kann ich nun selber weitere Sachen verwirklichen also Danke!

Hallo zusammen,

ich versuche gerade, das PHPSonos Skript zu integrieren.

Bei dem Versuch, mit
$vol=$sonos->GetVolume();
die Lautstärke auszulesen, tritt folgender Fehler auf:

Fatal error: Uncaught exception ‚Exception‘ with message ‚Error sending command: HTTP/1.1 405 Method Not Allowed Allow: GET, HEAD Content-type: text/html Connection: close Error 405Error 405Method Not Allowed‘ in C:\Programme\IP-Symcon\scripts\PHPSonos.inc.php:2308 Stack trace: #0 C:\Programme\IP-Symcon\scripts\PHPSonos.inc.php(1138): PHPSonos->sendPacket(‚POST /MediaRend…‘) #1 C:\Programme\IP-Symcon\scripts\38907.ips.php(10): PHPSonos->GetVolume() #2 {main} thrown in C:\Programme\IP-Symcon\scripts\PHPSonos.inc.php on line 2308

Das muss mit der fehlenden Berechtigung für den POST-Befehl zusammenhängen.
Kann mir jemand weiter helfen, wie ich die Berechtigung erteilen kann ?

Gruß
Gunnar

ist es möglich mit der Sonos Klasse einen Player auf den „Line In“ Eingang unzuschalten ??

Jürgen

bin mir nicht ganz sicher, ob das der Line in ist, aber damit schalte ich meine Connect um:

$sonos->SetAVTransportURI("x-rincon-stream:RINCON_000E582B329601400");

wobei $sonos vorher wie folgt definiert wurde:

$sonos = new PHPSonos(getValue(20652 /*[Sonos\Standorte\Wohnen\SONOS_IP]*/ ));

Hallo, habe noch ein sehr altes Script zum steuern meiner Sonos. Das heißt eigentlich kann es nur Play, Pause, lauter und leiser und das auch nur wenn ich vorher eine Playliste oder einen Radiosender über die Sonos App. eingestellt habe.

Ich lese jetzt seit fast einer Woche alle möglichen Beiträge zum Thema Sonos. Muss aber auch gestehen das PHP noch nicht so meine Welt ist. Also einfache Befehle bekomme ich auch schon hin aber die Sonosklasse ist für mich nicht mehr verständlich und inzwischen hab ich schon Kopfschmerzen wenn ich nur an das Thema denke :wink:

Jetzt meine Frage: Wo lese ich mich am besten ein? Gibt es eine Übersicht mit welchem Befehl ich was erreiche.
Das alte Script habe ich noch so grad verstanden… Hatte aber auch nur 40/50 Zeilen :wink:

Schalte mein Sonos nun automatisch ab wenn ich das Haus verlasse (AKM 868) und wenn ich wieder da bin an. Da mein jetziges Script nach einem Neustart der Sonos nicht mehr funktioniert möchte ich nun endlich mal was erneuern. Ich möchte eigentlich nur über einen Homematic Display Wandtaster folgende Befehle geben können:

  1. Lautstärke (+/-)
  2. Play / Pause
  3. Playliste X Starten
  4. Radiosender X Starten

Und mittels entsprechendem Ereignis Aktuellen Song (Radio/Playlist…) anhalten, Text to Speach Wav-File abspielen, Song weiterspielen. Später evtl mal für TtS Meldungen alle Zonen verbinden, Duchsage abspielen, Zonen wieder trennen.

So wie sich das hier ließt scheint das ja alles möglich zu sein. Wo lese ich mich nun am besten ein, hab nach den ersten 12 Seiten komplett den Überblick verloren. :confused:

PS: Wohnt einer von euch vielleicht in der nähe von Kiel und kann mir da ein paar Nachhilfestunden geben… :o

Gruß Frank

Mich würde auch eine kleine Anleitung zum einrichten weiter bringen. Ich habe schon beide Themen durch aber ich verstehe fast nur Bahnhof. Ich wäre sehr dankbar für ein wenig Hilfe.

Ich habe ein Sonos Play 3 und weiß nicht womit ich anfangen soll.
Vielen Dank schon mal an dieser Stelle, bitte verzeiht aber ich habe mit programmieren ausser pei ips nichts zu tun.

Ich habe es jetzt doch nach 2 Tagen lesen hingekommen. Hat mich viel nerven gekostet aber es läuft zumindest halbwegs. Ein paar Probleme gibt’s noch aber das wird bestimmt auch noch. Gruß

Moin …

… vielleicht magst Du ja ne kleine Newbee Sonos-Anleitung schreiben!? Dann haben alle was von Deinen Problemen und Lösungen! Gerne Hier oder im Wiki!
Gruß,
Peter

Sent from my iPhone using Tapatalk

Ups… doppelt gepostet! Tapatalk spackt mal wieder bissel ab… Sorry!
Peter

Ich kann das natürlich machen, allerdings muss ich es erst mal 100% zum laufen bekommen. Dazu muss mir jemand helfen im br_sonos Thema.
Aber wie gesagt sobald ich das hin bekommen habe würde ich eine Anleitung schreiben.