Sonos Modul

Hi,

nun ja, „kann“ stimmt nicht so ganz.
Das ist seit 2016 drin so drin und funktioniert ganz gut. :smiley:

Ne, mal im Erst. Ist das wirklich nicht unterstützt?! Und wenn ja, warum?

Das wäre eine inkompatible Änderung, die ich gerne vermeiden würde.
Zumal das für den Endanwender ein unnötiger Zwischenschritt ist.
Direkt JSON in das Script zu schreiben finde ich nicht sonderlich gut, da sich da zu leicht Fehler einschleichen können.

Gruß,
Thorsten

Doch das ‚kann nicht‘ bezieht sich genau auf diese Meldung.
IPS kann es nicht, dass es funktioniert, weil die Ziel-Instanz aus PHP-Code besteht ist etwas anderes.

Korrekt kann IPS bei ‚eigenen‘ PHP-Funktionen nur int, bool, float oder String.

Beispiel:
IPS_SetConfiguration — IP-Symcon :: Automatisierungssoftware

Und wo soll bei einem json_encode und einem json_decode sich ein Fehler einschleichen ?

Michael

Ich habe diesen Fehler auch immer wenn ich eine Gruppe über die App erstelle und bisher keine Lösung gefunden.

Ich prüfe aber noch Mal ob ich die richtige Box angelegt habe.

Gruß
Christian

Kannst Du mal schauen wegen MemberofGroup, das stimmt bei mir nicht. Vielleicht mache ich aber auch was falsch. Wenn ich zwei Geräte in einer Gruppe lege, dann zeigt das eine Gerät folgerichtig in der Variable MemberofGroup die Gruppe an. Beim Koordinator der Gruppe steht zwar unter GroupMembers die ID des zweiten Sonos Geräts, aber unter MemberofGroup steht bei mir none, obwohl das Gerät ja selber Teil der Gruppe ist. Ist das ein Fehler oder mache ich da irgendwas falsch?

Bei mir ist es ebenfall überall … sowie zwei Player zu einem Paar gruppiert sind, also zu einem Stereopaar, hangelt es ohne Ende Fehlermeldungen im Log. Tritt ebenso bei der Paarung Playbar und Sub auf.

Ich persönlich bin leider nicht in der Lage, das zu lösen…

Das hier ist die Meldung, die im Ausführen des Skripts „_updateStatus“ ausgeführt wird:

<b>Fatal error</b>:  Uncaught exception 'Exception' with message 'Error during Soap Call: Internal Server Error HTTP' in /mnt/data/symcon/modules/SymconSonos/Sonos/sonosAccess.php:558
Stack trace:
#0 /mnt/data/symcon/modules/SymconSonos/Sonos/sonosAccess.php(194): SonosAccess->processSoapCall('/MediaRenderer/...', 'urn:schemas-upn...', 'GetTransportInf...', Array)
#1 /mnt/data/symcon/scripts/43277.ips.php(46): SonosAccess->GetTransportInfo()
#2 {main}
  thrown in <b>/mnt/data/symcon/modules/SymconSonos/Sonos/sonosAccess.php</b> on line <b>558</b><br />

Guten Tag,

Ist es möglich mit Hilfe dieses Moduls das „Coordinator Recht“ innerhalb einer Gruppe auf einen anderen Player zu übertragen ?
Damit der bisherige Coordinator der Gruppe entfernt werden kann?
Leider konnte ich bisher keinen Hinweis darauf finden wie dies machbar ist.

Gruß, Adrian

Moin, hat jemand eine Idee, wie man die Podcasts (z.B. Informationen am Abend) vom Deutschlandfunk abspielen könnte ? Folgende Ansätze schlugen bisher fehl:

  1. In TuneIn als Podcast suchen - lässt sich nur in der Auswahl als Sonosfavorit abspeichern. Man müsste dann aber erst die Sonos-App bemühen, da der Podcast natürlich vom aktuellen Tag sein soll.

  2. Den Podcast Link https://tunein.com/podcasts/National-News/Informationen-am-Abend-p128199/ irgendwie Sonos übergeben - aber ich weiß nicht wie

  3. Die zugehörige mp3 raussuchen (aktuell wäre https://ondemand-mp3.dradio.de/file/dradio/2018/06/07/informationen_am_abend_07062018_komplette_sendung_dlf_20180607_1810_4e3ad16a.mp3 - aber die lässt sich mit SNS_PlayFiles nicht abspielen, (Fehler: has to be samba share or a HTTP server) - komisch, das tut sie ja eigentlich - auch mit http statt https kommt dieser Fehler

Vielleicht habt ihr eine Idee ?

Eventuell einfach die Datei herunterladen lassen im Script auf ein smb-share und von dort abspielen?

Ok, das geht - aber dann müsste man ständig die gesamten Beiträge downloaden, nur wenn man mal einen bestimmten hören möchte. Ansonsten müsste man ja erst auf den Download warten …

So würde das doch gehen… Auslesen der XML (Ist von deinem Link) mit der neuesten Folge, diese Downloaden und den Rest per Sonos Modul. Die letzte Zeile natürlich entsprechend anpassen wegen der smb-Freigabe

$url = 'http://www.deutschlandfunk.de/podcast-informationen-am-abend.791.de.podcast.xml';
$xml = simplexml_load_file($url) or die("feed not loading");

$neuestefolge = $xml->channel[0]->item->link;

$downloadurl = $neuestefolge ;
 
$filename = basename($url);

file_put_contents("/tmp/neuefolge.mp3",file_get_contents($url));

Ja, wie gesagt - das geht, aber es gibt da ja viele podcasts mit genau dem gleichen Problem - die will ich nicht alle täglich komplett runterladen, nur weil ich morgens vielleicht 1-2 abhören möchte. Und den Podcast erst bei Abruf downzuloaden, dauert mir einfach zu lange.

Ich hätte schon gerne ein Abspielen direkt von der Seite - Über die Sonos-App geht das ja auch.

Moin!

Um eine MP3 direkt aus dem Internet abzuspielen kann man doch einfach diese Funktion verwenden. Steht auch im Beispiel in der ReadMe:

SNS_PlayFiles(12345, Array("http://www.wieauchimmer.de/datei.mp3"), 0);

Also einfach ein Script schreiben was die URL ausliest und dann einfach die URL an die eben genannte Funktion übergeben…

Oder hab ich was falsch verstanden, was du/ihr da machen wollt?

Grüße,
Chris

Ich vermute einfach, dass es am https liegt? ich kann die Seite leider nicht direkt aufrufen, da sie bei mir gesperrt ist in der Arbeit :wink:

Auch https funktioniert mit dem Sonos Modul (zumindest laut Code, kann es grad nicht testen).

Grüße,
Chris

Hallo Chris, du hast völlig recht und so hatte ich es ja auch probiert - es geht bloß nicht…

Das ist die Stelle im Code vom Modul:

if (preg_match('/^\/\/[\w,.,\d,-]*\/\S*/',$file) == 1){
            $uri = "x-file-cifs:".$file;
          }elseif (preg_match('/^https{0,1}:\/\/[\w,.,\d,-,:]*\/\S*/',$file) == 1){
            $uri = $file;
          }else{
            throw new Exception("File (".$file.") has to be located on a Samba share (e.g. //ipsymcon.fritz.box/tts/text.mp3) or a HTTP server (e.g. http://ipsymcon.fritz.box/tts/text.mp3)");
          }

…das elseif mit preg_match ist nicht ok (Zeile 471 in der module.php)…

Weil im folgenden Code funktioniert bei mir $url2, aber nicht deine $url1:

$url1 = "https://ondemand-mp3.dradio.de/file/dradio/2018/06/07/informationen_am_abend_07062018_komplette_sendung_dlf_20180607_1810_4e3ad16a.mp3";
$url2 = "https://ia802508.us.archive.org/5/items/testmp3testfile/mpthreetest.mp3";
$result = SNS_PlayFiles(12345, array($url2), "0");

…liegt also eindeutig an der URL und am preg_match…

EDIT: Einfach Zeile 471 austauschen gegen:

}elseif (preg_match('/^https{0,1}:\/\//',$file) == 1){

Grüße,
Chris

Prima, vielen Dank !

Guten Morgen,

Ist es möglich mit Hilfe des sonos Moduls das Coordinatorrecht innerhalb einer Gruppe an einen anderen Player weiter zu geben so dass der vorherige Coordinator der aus der Gruppe entfernt werden kann ?

Gruß, Adrian

Hi Thorsten,

kannst Du bitte die Streams mit in die Radio Playliste aufnehmen:

Radio Bob! http://streams.radiobob.de/bob-live/mp3-192/mediaplayer
AC/DC Collection http://streams.radiobob.de/bob-acdc/mp3-192/mediaplayer

Besten Dank
HerbertF

Kann mir hierbei evtl. jemand helfen?