ich würde gerne durch ein Phpscript dem Sonosplayer zwingen einen Klingelton (Mp3File zb. „Hallo, es ist ein Besucher an der Tür“) zu spielen (wenn jem. an der Tür klingelt), danach sollte der Player mit der Playlist fortzufahren ohne das der Klingelton später wiederholt wird. Wenn der Player vorher nicht aktiv war (Keine Musik spielte) sollte er nach dem Kingelton auch keine Musik spielen.
Das was du möchtest ist leider nicht so einfach Möglich.
Du willst im Grunde ja auch noch, dass alle Zonen kurz zusammengefügt und naher in den Ur-Zustand wieder gebracht werden. Oder Alternativ (aber nicht so schön) die Meldung über alle aktiven Zonen-Master gesendet wird.
Man könnte vielleicht mit ein wenig Logik den Klingelton in die Queue patchen und nach dem Abspielen diesen löschen. Zu Bedenken ist aber das Problem, dass ein Radio-Stream nicht in der Playlist ist und auch nicht als solches Behandelt werden kann.
$adr = "192.168.2.100";
$sonos = new PHPSonos($adr); //Sonos Bad
$sonos->ClearQueue(); //Playlist löschen
$sonos->AddToQueue("x-file-cifs://Server/Sound/test_8khz_16bits.wav"); //Datei hinzufügen
$sonos->SetQueue("x-rincon-queue:RINCON_"."HIER DIE MAC DES PLAYERS ZB: FFEEDDCCBBAA"."01400#0"); //Playlist auswählen - nötig, wenn Radio vorher ausgewählt war)
$sonos->SetVolume(30); //0-100 in %
$sonos->Play();
IPS_Sleep(5000);
$sonos->SetRadio("x-rincon-mp3radio://ndr-ndr1wellenord-hi-wma.wm.llnwd.net/ndr_ndr1wellenord_hi_wma");
$sonos->SetVolume(20); //0-100 in %
$sonos->Play();
Wenn der Player vorher nicht
If-Anweisung
nach dem Klingelton
Flag
Vorausgesetzt: IP-Symcon kennt letzte „Musik-Quelle“
MST
PS: SetVolume gilt nur für den Player mit der o.g. ID-Adr.
Ich wollte eine Meldung auf dem Sonos abspielen mit folgendem Script.
include("PHPSonos.inc.php");
$sonos = new PHPSonos("192.168.xxx.xx"); //Sonos ZP IPAdresse$sonos->ClearQueue(); //Playlist löschen / delete pl$sonos->AddToQueue("x-file-cifs://ServerKeller/Musik/Sonos Sounds/Alarmanlage Haus Verlassen.mp3"); //Datei hinzufügen//Playlist auswählen (Nötig, wenn Radio vorher ausgewählt war) / select pl - this is needed after playin radio$sonos->SetQueue("x-rincon-queue:RINCON_"."000xxxxxxxxxxxxx"."01400#0");$sonos->Play();
Leider bekomme ich immer Diese Fehlermeldung
Fatal error: Uncaught exception 'Exception' with message 'Error sending command: HTTP/1.1 500 Internal Server Error
CONTENT-LENGTH: 347
CONTENT-TYPE: text/xml; charset="utf-8"
EXT:
SERVER: Linux UPnP/1.0 Sonos/19.4-60120 (ZPS5)
Connection: close
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><s:Fault><faultcode>s:Client</faultcode><faultstring>UPnPError</faultstring><detail><UPnPError xmlns="urn:schemas-upnp-org:control-1-0"><errorCode>714</errorCode></UPnPError></detail></s:Fault></s:Body></s:Envelope>' in C:\IP-Symcon\scripts\PHPSonos.inc.php:240
Stack trace:
#0 C:\IP-Symcon\scripts\PHPSonos.inc.php(163): PHPSonos->sendPacket('POST /MediaRend...')
#1 C:\IP-Symcon\scripts\45076.ips.php(13): PHPSonos->SetQueue('x-rincon-queue:...')
#2 {main}
thrown in C:\IP-Symcon\scripts\PHPSonos.inc.php on line 240
Abort Processing during Fatal-Error: Uncaught exception 'Exception' with message 'Error sending command: HTTP/1.1 500 Internal Server Error
CONTENT-LENGTH: 347
CONTENT-TYPE: text/xml; charset="utf-8"
EXT:
SERVER: Linux UPnP/1.0 Sonos/19.4-60120 (ZPS5)
Connection: close
s:ClientUPnPError714' in C:\IP-Symcon\scripts\PHPSonos.inc.php:240
Stack trace:
#0 C:\IP-Symcon\scripts\PHPSonos.inc.php(163): PHPSonos->sendPacket('POST /MediaRend...')
#1 C:\IP-Symcon\scripts\45076.ips.php(13): PHPSonos->SetQueue('x-rincon-queue:...')
#2 {main}
thrown
Error in Script C:\IP-Symcon\scripts\PHPSonos.inc.php on Line 240
Ich habe es jetzt gelöst.
Es waren ein paar Zahlen zuviel in der MAC Adresse des Players.
Ich muss mich nochmal Entschuldigen das der Code so unleserlich ist.
Ich habe jetzt gemerkt das ich die PHP „<P und >P“ vergessen habe.