Sonos Modul

Hallo,

da gebe ich Dir recht. Kommt mi dem nächsten Update.

Gruß,
Thorsten

Hallo,

Wie sieht der der Inhalt von $pfad aus?
Weiterhin, kommt der Gong und nur die Uhrzeit nicht?

Wenn Du die Sonos App offen hast, kannst Du da Fehlermeldungen sehen?
ERROR_AV_UPNP_AVT_INVALID_TRANSITION bei Play( ) bedeutet normalerweise, dass nichts zum abspielen eingestellt ist…

Weiterhin könntest Du das auch isoliert testen, indem Du


SNS_SetTransportURI(26662,'//10.0.0.170/SambaIpsymcon/Sounds/Ansagen-Gong9.wav' );
SNS_Play(26662);

ausführst, bzw. das gleiche mit dem Inhalt von $pfad.

Vor allem das ganze dann in der APP zu beobachten.

Gruß,
Thorsten

Danke Thorsten,

werd das probieren. Die mp3 Datei wird Ordnungsgemäß abgelegt und kann via Filezilla abgespielt werden.
Vielleicht ist es ja auch eine Frage der Berechtigung auf dem RaspPi?

Guten Morgen,

ich dreh mich im Kreis. hab IPS 5.5

Was hab ich vor: mp3 über Sonos abspielen und Meldungen bei Ereignissen abzuspielen.

Was hab ich gemacht: Ich hab eine mp3 direkt auf dem Symcon Server abgelegt. Die wird nicht abgespielt, also will ich zum Test einen Radiosender per Skript abspielen lassen:


$radio = "x-rincon-mp3radio://swr-swr3-live.cast.addradio.de/swr/swr3/live/mp3/128/stream.mp3";
SNS_SetRadio(56724, $radio);

Es kommt eine Fehlermeldung:

Fatal error:  Uncaught Exception: Der Radiosender "x-rincon-mp3radio://swr-swr3-live.cast.addradio.de/swr/swr3/live/mp3/128/stream.mp3" konnte nicht gefunden werden in /var/lib/symcon/modules/.store/de.kugelberg.sonos/SonosPlayer/module.php:2028
Stack trace:
#0 /var/lib/symcon/scripts/__generated.inc.php(9943): SonosPlayer->SetRadio('x-rincon-mp3rad...')
#1 /var/lib/symcon/scripts/19395.ips.php(12): SNS_SetRadio(56724, 'x-rincon-mp3rad...')
#2 {main}
  thrown in /var/lib/symcon/modules/.store/de.kugelberg.sonos/SonosPlayer/module.php on line 2028
Abort Processing during Fatal-Error: Uncaught Exception: Der Radiosender "x-rincon-mp3radio://swr-swr3-live.cast.addradio.de/swr/swr3/live/mp3/128/stream.mp3" konnte nicht gefunden werden in /var/lib/symcon/modules/.store/de.kugelberg.sonos/SonosPlayer/module.php:2028
Stack trace:
#0 /var/lib/symcon/scripts/__generated.inc.php(9943): SonosPlayer->SetRadio('x-rincon-mp3rad...')
#1 /var/lib/symcon/scripts/19395.ips.php(12): SNS_SetRadio(56724, 'x-rincon-mp3rad...')
#2 {main}
  thrown
   Error in Script /var/lib/symcon/modules/.store/de.kugelberg.sonos/SonosPlayer/module.php on Line 2028

Hab dann das ganze Modul nochmal neu installiert, der Fehler bleibt.

Per Webfront kann ich die One Box allerdings problemlos bedienen und es wird auch der o.g. Sender gesetzt.

Beim Ausführen des Skripts meldet debug

Es ist sicher nur eine Kleinigkeit, die ich übersehe.

Gruß oekomat

Hallo,

schau Dir mal die Doku an: Sonos/README.md at master · tkugelberg/Sonos · GitHub

Kurz zusammengefasst:
SNS_SetRadio funktioniert nicht mit der URL, sondern mit (im Splitter) konfigurierten Radiosendern.

SNS_SetRadio(56724, 'SWR3');

Zwar sehe ich bei Dir kein SWR3 in der Listein der Debugkonsole, könnte aber nach unter rausgewandert sein.
z.B.

SNS_SetRadio(56724, 'Radio Paloma (Schlager)');

sollte aber gehen.

Wenn Du direkt eine streaming URL angeben möchtest, kannst Du dies per SNS_SetTransportURI() machen.
Falls Du aber einen Radiosender häufiger mal verwendest, würde ich Dir empfehlen diesen im Splitter zu hinterlegen.

Ach ja, und nach dem SNS_SetRadio bzw. SNS_SetTransportURI das SNS_Play nicht vergessen :wink:

Gruß,
Thorsten

Hallo Thorsten,

danke. Die Doku hatte ich gelesen, das set des Namens statt der URL war mir aber nicht klar. Hat jetzt wunderbar geklappt.

Gibt es bei dem Abspielen von Files aus dem Netzwerk was zu beachten? Die Mp3 liegt auf dem Raspi, auf dem auch symcon läuft.

Bei


$text = "/var/lib/symcon/Ansage.mp3";
SNS_PlayFiles(56724, $text, 30);

bekomme ich die Warnung

Warning:  Invalid argument supplied for foreach() in /var/lib/symcon/modules/.store/de.kugelberg.sonos/SonosPlayer/module.php on line 1279

Warning:  Invalid argument supplied for foreach() in /var/lib/symcon/modules/.store/de.kugelberg.sonos/SonosPlayer/module.php on line 1364

Könnte an Berechtigungen liegen, schließe ich aber fast aus.

Gruß oekomat

Hallo,

Das wichtigste ist, dass die Sonos Boxen auf die Datei zugreifen können. Entweder über einen Windows/Samba Share (//server/ordner/datei-mp3) oder über einen Web Server (http://server/pfad/datei-mp3).

Also: Hier sind gleich 2 Fehler versteckt:

  1. $text aus Deinem Beispiel müsste ein JSON Array sein.
    Egal ob als string (’[„http://server/pfad/datei.mp3“]’) oder als code:

json_encode( Array( "http://server/pfad/datei.mp3" ) )

Da kann man dann auch mehrere Dateien ins gleiche Array schreiben die dann hintereinander abgespielt werden.
Steht aber auch in der Doku.

Die Warnmeldung liegt daran, dass es sich bei $text um einen String und kein JSON Array handelt. Könnte ich erkennen und eine bessere Fehlermeldung ausgeben, mache ich aber derzeit nicht…

  1. /var/lib/symcon/Ansage.mp3 ist eine lokale Datei auf Deinem Linux Betriebssystem. Da kommt die Sonos Box nicht dran.
    Entweder über SAMBA freigeben, oder per http server.

Ich mache gerne letzteres.
Die Datei z.B. nach /var/lib/symcon/webfront/user/sonos/ legen und per


SNS_PlayFiles(34403, "[\"http://ipsymcon.fritz.box:3777/user/sonos/Ansage.mp3\"]","+5");

abspielen.
(Natürlich musst Du den Server anpassen…)

Keine Ahnung wie erwünscht es von Symcon ist den WebServer von IPS zu „missbrauchen“, funktioniert aber tadellos.
Alternativ kann man auch noch einen Apache installieren und die Dateie(n) darüber bereitstellen…

Gruß,
Thorsten

Hallo Thorsten,

danke für die Antwort. Das guck ich mit die Tage mal genauer an, wie ich das anstellen kann. Ich wünsche dir und deiner Family vorab ein frohes Weihnachtsfest. und vor allem vielen Dank für den unermüdlichen Support, den du hier leistest.

Gruß oekomat

Hallo,

auch Ich habe es versucht (fast den ganzen Nachmittag :banghead: ) eine Soundausgabe über das Sonos Modul zu erzielen… Einzig auf meiner Synology NAS konnte ich im Versuch 1 den Sound erzeugen, alle weiteren Versuche über den Webserver von Symcon auf Port 82 den Sound zu erzeugen schlugen fehl.
Achtung: Ab Symcon 4.0 muss der Webserver erst über eine Instanz erzeugt werden…

Komisch ist auch, dass auch beim funktionierenden Versuch, Sonos zwar Pause macht und den Sound abspielt, aber danach ein neues Lied abspielt…

Evtl. hat jemand (gerneauch Thorsten:) ) eine Idee wo mein Fehler liegt, dass ich keinen Sound abspielen kann :confused:
Raspberry mit Symcon 5.5

Vielen Dank im Voraus.
Jürgen

<?php


$ID = 49765;


// Versuch 1
// Geht Sound File liegt auf Synology // Sonos unterbricht, spielt den Sound ab und spielt das NÄCHSTE Lied ab...
SNS_PlayFiles ($ID, json_encode (array( "//Diskstation/myMusik/Soundtest/sound.mp3")), 15);



//Versuch 2
// Geht nicht auf dem Symcon Server (Sonos setzt aus vermutlich für die Dauer des Sounds, man hört nichts und dann wird das NÄCHSTE Lied gespielt)
//$myFile = json_encode( Array( "http://192.168.1.40:82/user/sonos/sound.mp3" ) )  ;
//SNS_PlayFiles ($ID, $myFile, '+5');  

//Versuch 3
// Original Post Thorsten (Sonos setzt aus vermutlich für die Dauer des Sounds, man hört nichts und dann wird das NÄCHSTE Lied gespielt)
//SNS_PlayFiles(49765, '["http://192.168.1.40:82/user/sonos/sound.mp3"]',15); 

//Versuch 4
// Alternative geht ebenfalls nicht...(Sonos setzt aus vermutlich für die Dauer des Sounds, man hört nichts und dann wird das NÄCHSTE Lied gespielt)
//SNS_PlayFiles ($ID, json_encode (array( "http://192.168.1.40:82/user/sonos/sound.mp3")), 15);

Die Versuche 2-4 sind im Grunde identisch. Daher auch die gleiche Reaktion.

Standardmäßig ist der Webserver über Port 3777 erreichbar. Hast du es damit schon probiert?

Ansonsten kann man das Verhalten des SONOS Players gut in der SONOS Desktop App beobachten. Da kommt bestimmt ein Fehler bei dir, dass er das File nicht abspielen kann.

Burkhard

Ich habe seit einiger Zeit die folgende Fehlermeldung im Log

Hat jemand eine Idee woran das liegen kann ?

ja in der App wird das Soundfile für 2 sekunden angezeigt, danach kommt die Meldung:

"sound.mp3 steht auf 192.168.1.40:82 oder auch 3777 nicht mehr zur Verfügung… "

wie gesagt in der App wird das Soundfile kurz angezeigt, aber ohne Ton…

Auch alle Rechte sind vergeben… volles Programm …0777

Also geht der Zugriff soweit schon mal und du bist auf dem richtigen Weg[emoji1]

Dann kann es nur noch an den Rechten oder an der Codierung liegen.

Vielleicht ist 777 schon zuviel - ausführbar sind die Dateien ja nicht.

Probiere es mal mit einem Soundfile, von dem du weißt, dass Sonos es abspielen kann.

EDIT: Problem gelöst :smiley:

  1. WebServer via Instanz aktiviert, Port 82
  2. User Verzeichnis mit SoundFile gefüllt, ich dachte UserVerz. ist das eigentliche Sycon Verz. das war mein Fehler
    es ist das webfront/user Verzeichnis, wenn man die Doku liest dann klappt es auch…
  3. dort die Datei abgelegt
  4. Soundfile lässt sich ohne Probleme abspielen

Puhhh

=========================================

ja das Sound File läuft ja auf der NAS ohne Probleme, ich habe auch noch andere versucht, auch die Berechtigungen geändert, leider kein Erfolg… ich probiere es nach den Festtagen weiter.

Danke für deine Hilfe.
Jürgen

Moin,

das ist seltsam.
An dieser Stelle lese ich die ID von der Variablen DialogLevel.
Das Ganze mache ich aber mit einem „Error Control Operator“ ( @ ) davor, um genau solche Warnungen zu unterdrücken.
Im weiteren Coding reagiere ich dann darauf ob die Variable gefüllt ist…
Hast Du etwas konfiguriert, dass der „Error Control Operator“ ignoriert wird?
Wie z.B. hier:
PHP control operator (@) doesn’t work - Stack Overflow

Gruß,
Thorsten

Der @ operator unterdrückt bei mir nur die Anzeige im Script. Im Message Fenster (Log) erscheint ein PHP Fehler. Das habe ich übrigens auch bei anderen Funktionen. Da die Abfrage so ca. jede Sekunde kommt wird damit mein Log zugemüllt. Ich habe mir jetzt dadurch geholfen das ich die Abfrage im Modul aus kommentiert habe. Die Funktion ist bei mir auch nicht relevant.
Ich muss mal schauen ob man generell diese Art von Fehler im Log unterdrücken kann. Mir ist übrigens nicht bewusst irgendetwas geändert zu haben aber das muss nichts heißen :slight_smile:

Gruß Artur

Problem gelöst Thorsten

Ich hatte einen Eintrag in der autoload der dafür sorgte das Fehlermeldungen auftauchten die eigentlich nicht auftauchen sollten.

Die Diskussion dazu ist hier : https://www.symcon.de/forum/threads/45437-LOG-Fehlermeldungen

Hallo Thorsten,
habe jetzt noch eine zweites mal einen Anlauf genommen auf Vers 2 upzudaten.
Aber reproduzierbar springt die Lautstärke immer wieder auf die Standardlaustärke, die in der Instanz angegeben ist.
Das ist sowohl der Fall, wenn ich über die Sonos app die Lautstärke verändere, als auch über das Webinterface und zwar bei beiden Playern.
Symcon läuft bei mir auf dem Raspberry.
Muss also zurück auf die 1.08
Kannst Du mir eine Tip geben wo ich suchen kann?

Viele Grüße, Ralph

Moin,

Ich habe gerade nochmals das coding durchsucht.

„DefaultVolume“ kommt an 8 Stellen vor:

  1. Zeile 28 -> RegisterProperty (Da wird die Einstellung bekannt gemacht)
  2. Zeile 370 -> Das ist das Formular
    3+4) Zeile 693+694 -> Das ist, wenn von einem Player zum anderen gerufen wird.
  3. Zeile 1660 bis 1707 -> Das ist die Verwendung von „3+4“ in der Funktion „SetDefaultGroupVolume“
    6,7,+8) Zeile 1709 bis 1717 -> Das ist die Funktion SetDefaultVolume

„SetDefaultVolume“ und „SetDefaultGroupVolume“ werden an keiner anderen Stelle im Modul aufgerufen.

=> Vom Modul her kann das das nicht sein.

Hast Du Dir mal die Debug Konsole angeschaut, wenn das passiert? Da sollte dann zumindest stehen, dass die Funktion „SetDefaultVolume“ aufgerufen wurde…

Gruß,
Thorsten

Danke fürs nachschauen Thorsten,
es ist mir ein Rätsel.
Ich habe nun das 7. Mal das update durchgeführt ( kann es auswendig ) und nun tritt der Fehler nicht mehr auf.
Alles super, bisher und ich bleibe bei dieser Version.
Viele Grüße,
Ralph