Sonos Steuerung

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

Benutzeravatar
Jimbaem
Beiträge: 91
Registriert: 19.12.2014, 19:03
Wohnort: Schuttertal
Hat sich bedankt: 3 Mal
Danksagung erhalten: 3 Mal

Re: Sonos Steuerung

Beitrag von Jimbaem » 30.12.2016, 12:15

Hallo zusammen,

wie ihr seht ist das mein erster Beitrag in diesem Forum. Bin hier eigentlich mehr am mitlesen und konnte selbst hier schon sehr viele Informationen gebrauchen und umsetzen.
Vielleicht kann ich auch einen kleinen Beitrag leisten ?!

Habe gerade nach etlichen Versuchen (Tagen) mit verschiedenen Versionen von Sonos Skripten mein Sonos Play 1 dazu bewegen können eine Message auszugeben und vor allem danach mit der Wiedergabe von Radio, Playlist etc. weiter zu machen. :!: :)

Am weitesten bin ich mit diesem Skript gekommen: http://trautner.net/547-sonos-mit-gira- ... ue-version

Ich hatte aber auch die in anderen Posts schon erwähnte Fehlermeldung "Fatal error: Call to undefined function IPS_LogMessage() in /volume1/web/sonos/PHPSonos.inc.php on line 2321" nach beenden der Message erhalten. Die Wiedergabe wurde abgebrochen und nicht zur Radio Wiedergabe zurückgekehrt.

Die Fehlermeldung beinhaltet ja einen Aufruf einer nicht vorhandenen Funktion. Nach etwas Recherche dachte ich, dass IPS_LogMessage für IP Symcom stehen muss, was ich aber nicht habe.
Und wie heißt es so schön, den mutigen gehört die Welt. Ich habe kurzerhand den Funktionsaufruf in der PHPSonos.inc.php in Zeile 2321 gelöscht und siehe da alles funktioniert wie es soll :D

Zur Information vielleicht noch Angaben zu meinem System:

QNAP NAS mit laufendem Web-Server und den installierten PHP Skripten, die Messages (*.mp3) befinden sich auch hier
SONOS Controller Version: 7.0 (Build 34735162b)
SONOS Play 1 Version: 7.0 (Build 34735162c)

Hoffe es hilft vielleicht dem ein oder anderen .....
Jimbaem
RaspberryMatic 3.63.9.20220521 auf Asus Tinker Board S - Raspberry Pi4 & SSD mit Historian V3.0.2

woffler
Beiträge: 1
Registriert: 17.06.2016, 12:10

Re: Sonos Steuerung

Beitrag von woffler » 11.01.2017, 16:39

Hallo Jimbeam, all,
Jimbaem hat geschrieben:Hallo zusammen,

Am weitesten bin ich mit diesem Skript gekommen: http://trautner.net/547-sonos-mit-gira- ... ue-version

Ich hatte aber auch die in anderen Posts schon erwähnte Fehlermeldung "Fatal error: Call to undefined function IPS_LogMessage() in /volume1/web/sonos/PHPSonos.inc.php on line 2321" nach beenden der Message erhalten. Die Wiedergabe wurde abgebrochen und nicht zur Radio Wiedergabe zurückgekehrt.
Jimbaem
seit einigen Stunden bastel ich jetzt an verschiedenen Scripten herum, hatte aber das trautner script als unabhängig vom PHPSonos.inc gesehen. Funktionieren tun beide bei mir nicht :(. Mein Qnap Webserver hat php ini aktiviert (und habe sie sicherheitshalber wiederhergestellt).
Jetzt verwendest du beide (oder jeweils für bestimmte Funktionen)?

Wenn ich beim Sonos2/PHPSonos.inc.php einen Aufruf im Browser mache, passiert nichts, weder am Sonos, noch im Browser. Auch bei fehlerhafter Syntax (falsche Sonoszone) kommt kein Fehler. Sollte da was kommen?

Danke

Benutzeravatar
Jimbaem
Beiträge: 91
Registriert: 19.12.2014, 19:03
Wohnort: Schuttertal
Hat sich bedankt: 3 Mal
Danksagung erhalten: 3 Mal

Re: Sonos Steuerung

Beitrag von Jimbaem » 12.01.2017, 20:29

Hallo woffler,

ob da generell was kommen muss, evtl. Fehlermeldung etc. weis ich nicht.
Wie in meinem vorherigen Beitrag geschrieben, hatte ich auch Tage damit verbracht bis es endlich geklappt hatte. Viel Zeit hatte auch der Web Server auf dem QNAP NAS in Anspruch genommen.

Bei aktueller Firmware gibt es hier ein Verzeichnis "Web". Hier habe ich ein Verzeichnis "sonos" und "messages" erstellt. Das "sonos" enthällt die PHP Scripts und in "messages" liegen meine Ansagen als X.mp3, wobei X der Dateiname ist und nur aus Zahlen bestehen darf (z.B. 1.mp3, 2.mp3, 102.mp3 etc.).

Die PHP Scripts von Thomas Trautner runterladen. In die darin enthaltene config.php deine entsprechenden Zones mit IP-Adressen der Sonos und das "message" Verzeichnis eintragen/ändern. Danach Config.php, index.php und sonos.php in das "sonos" Verzeichnis des QNAP Web Servers kopieren.

Die PHPSonos.inc.php habe ich von hier. Wie zuvor beschrieben die Zeile 2321 löschen und dann ebenfalls in das "sonos" Verzeichnis kopieren.

Beim Aufruf darf das "Web" Verzeichnis nicht mit angegeben werden, dies leitet der Web Server automatisch richtig weiter.
Bei mir sieht das so aus: XXX.XXX.XXX.XXX/sonos/index.php?zone=Bad&do=sendMessage&messageId=102&volume=20
Die XXX natürlich mit deiner IP Adresse des QNAP ersetzen.

Also nicht die Sonos2.php oder PHPSonos.inc.php sondern es wird die index.php aufgrufen. Die Sonos2.php hat bei mir nicht funktioniert und verwende ich auch nicht. Voraussetzung ist natürlich auch, das dein Web Server richtig funktioniert, hier habe ich keinerlei Dateien geändert.


Nicht aufgeben und viel Glück
Jimbaem
RaspberryMatic 3.63.9.20220521 auf Asus Tinker Board S - Raspberry Pi4 & SSD mit Historian V3.0.2

tomcat1982
Beiträge: 90
Registriert: 12.11.2012, 21:37

Re: Sonos Steuerung

Beitrag von tomcat1982 » 13.02.2017, 13:01

Hallo Zusammen,

erstmal Danke an alle, die das Ganze mit viel Arbeit überhaupt möglich machen.

Nach langem hin und her habe ich es endlich zum laufen gebracht die Steuerung (WEBServer auf einem Raspberry Pi), so dass ich über den Browser erstmal die Befehle teste (mit einem SONOS Play:!, bevor ich über Homematic es automatisiere.

Leider klappt die Ausgabe der Messages nicht (der SONOS LS reagiert nicht) bekomme jedoch auch keine Fehlermeldung im Browserfenster? Die Ausgabe der aktuellen Radio URL klappt Beispielsweise jedoch.

Meine derzeitige Konfiguration sieht wie folgt aus:
Fritzbox 7490 mit USB Stick als NAS auf dem eine Datei "1.MP3" im Hauptverzeichnis liegt
RASP auf dem Apache&PHP5 läuft
SONOS Play:1 mit neuster Firmware

Welches Gerät greift auf die Datei beim Abspielen zu? Der Rasp Pi oder der Sonos Lautsprecher? Vermute es ist ein Zugriffsproblem auf das NAS...

Habe die Zeile

Code: Alles auswählen

# Speicherort der Nachrichten zur Durchsage
$messagespeicher = "//XXX.XXX.XXX.XXX/verzeichnis";   # Windows Backslash \\ und Slash \ in Pfadangaben durch // und / ersetzen ohne Slash am Ende
Wie folgt ausgefüllt:

Code: Alles auswählen

# Speicherort der Nachrichten zur Durchsage
$messagespeicher = "//USBZugriff@192.168.178.1";   # Windows Backslash \\ und Slash \ in Pfadangaben durch // und / ersetzen ohne Slash am Ende
Hintergrund:
Mit dem Programm FileZilla komme ich mit dem auf der Fritzbox eingerichteten User "USBZugriff" direkt auf das Hauptverzeichnis des USB Speichers. Anonyme Anmeldung funktioniert nicht, daher das ganze in der Form und müsste stimmen...

Vukie
Beiträge: 22
Registriert: 12.01.2014, 23:54
Hat sich bedankt: 1 Mal

Re: Sonos Steuerung

Beitrag von Vukie » 13.02.2017, 20:44

Hallo tomcat1982,

ich tippe auf einen falschen Pfad. Der Zugriff erfolgt direkt vom Sonos-System. Am besten Du probierst direkt den Link im Sonos-Client aus.
Das geht über das Menü Sono->Einstellungen->Musikbibliothek (zumindest beim Mac-Client)

Dort kannst Du den Ordner hinzufügen. Wenn Du die Datei dann siehst und abspielen kannst, dann stimmt der Pfand. Wenn nicht, kannst Du dort einfacher probieren und hast nicht mehrere Fehlermöglichkeiten.

virgin
Beiträge: 636
Registriert: 09.01.2013, 18:36
Wohnort: Leichlingen
Hat sich bedankt: 124 Mal
Danksagung erhalten: 5 Mal
Kontaktdaten:

Re: Sonos Steuerung

Beitrag von virgin » 30.03.2017, 21:57

Frage an alle: läuft bei Euch alles korrekt - nach dem letzten Sonos Update?

Bei mir nämlich nicht!

Das Problem: die Ansagen kommen jetzt nur dann, wenn die Liste leer ist. Wenn dagegen z.B. eine Radiostation geschaltet und auch nur auf stop steht, wird plötzlich meine Ansage nicht mehr abgespielt. Ich denke, das hängt mit dem Sonos Update zusammen.

Hat jemand das gleiche Problem? Oder bin ich der berühmte Einfall? Gibt es einen workaround?

Danke für die Hilfe.
Bernd

virgin
Beiträge: 636
Registriert: 09.01.2013, 18:36
Wohnort: Leichlingen
Hat sich bedankt: 124 Mal
Danksagung erhalten: 5 Mal
Kontaktdaten:

Re: Sonos Steuerung

Beitrag von virgin » 15.04.2017, 10:01

Vielleicht hilft es ja jemandem, ich könnte mein Problem wiefolgt lösen:

Ausgangslage: über ein homematic Script wird eine Ansage über iobroker auf einem Raspi durch einen Bewegungsmelder ausgelöst. Danach Seite ein Radiosender auf der Sonos Box eingeschaltet und nach 45 Minuten wieder ausgeschaltet.

Das Problem: nach dem letzten Update von Sonos klappte das nicht mehr. Wenn die Ansage kommen sollte, wurde stattdessen der Radiosender wieder abgespielt, obwohl ich den mit dem Pause bzw. Stop Befehl ja nach 45 Minuten gestoppt habe.

Lösung: ich sende nun zur Beendigung des Radiosenders nach 45 Minuten den Stop befehlt und anschließend noch einen clearqueue Befehl, um die Ansage UND den Radiosender in der Playlist zu löschen. Dann funktioniert meine Ansage wieder. Das Problem scheint das Abspielen des Radiosenders zu sein. Der Pause resp. Stop Befehl beendet Radio offensichtlich nicht vollkommen. Und beim Start einer Ansage wird das Radio fortgesetzt. (Mein clearqueue Befehl funktioniert allerdings auch nur, wenn in der Playlist neben dem Radiosender auch eine abzuspielende Datei steht. In diesem Falle werden diese Datein UND der Radiosender aus dem Queue gelöscht. Wenn das nicht der Fall ist, also nur ein Radiosender und keine weitere abzuspielende Datei im Queue stehen, wird der Radiosender nicht gelöscht und damit kommt es dann zu o.g. Problem. Habe ich mich verständlich ausgedrückt? Falls nein: fragen.)

Frohe Ostern
Zuletzt geändert von virgin am 18.06.2017, 14:38, insgesamt 1-mal geändert.
Bernd

sruhsam
Beiträge: 11
Registriert: 30.10.2015, 19:52

Re: Sonos Steuerung

Beitrag von sruhsam » 25.05.2017, 00:30

Ich weis jetzt nicht ob ich hier richtig bin, denn ich habe schon den ganzen Tag nach eine Lösung gesucht.
weis jemand wie ich die Radioliste (rechte Seite des SONSO-Controllers, SONOS-Favoriten steht darüber) ansteuern kann.

action=radioplaylist& ????

Ich habe der Liste keinen Namen vergeben ist ja die SONOS-Favoritenliste, in welcher ich meine Radiosender und songs drin habe. Ich möchte gerne diese ansteueren und z.B. den nächsten Eintrag der Liste anwählen.

in der sonos2.php steht:
radioplaylist (&playlist=SONOS Radio Playlist) -> Radioliste unter "Meine Radiosender" im SONOS Gerät, hat nicht mit nextradio, prevradio zu tun

Ich bekomme es einfach nicht hin. Sehe wohl den Wald vor lauter Bäume nicht mehr.....

Gruß
Stephan

virgin
Beiträge: 636
Registriert: 09.01.2013, 18:36
Wohnort: Leichlingen
Hat sich bedankt: 124 Mal
Danksagung erhalten: 5 Mal
Kontaktdaten:

Re: Sonos Steuerung

Beitrag von virgin » 25.05.2017, 00:43

sruhsam hat geschrieben:Ich weis jetzt nicht ob ich hier richtig bin, denn ich habe schon den ganzen Tag nach eine Lösung gesucht.
weis jemand wie ich die Radioliste (rechte Seite des SONSO-Controllers, SONOS-Favoriten steht darüber) ansteuern kann.

action=radioplaylist& ????

Ich habe der Liste keinen Namen vergeben ist ja die SONOS-Favoritenliste, in welcher ich meine Radiosender und songs drin habe. Ich möchte gerne diese ansteueren und z.B. den nächsten Eintrag der Liste anwählen.

in der sonos2.php steht:
radioplaylist (&playlist=SONOS Radio Playlist) -> Radioliste unter "Meine Radiosender" im SONOS Gerät, hat nicht mit nextradio, prevradio zu tun

Ich bekomme es einfach nicht hin. Sehe wohl den Wald vor lauter Bäume nicht mehr.....

Gruß
Stephan
Stephan,

Bei mit geht das mit diesem Tcl Script auf der ccu:

Code: Alles auswählen

!  ...........................Skript Sonos Küche Radio EIN
!  
! Erklärung:
!                - CMD_SETS           -> Befehl setzen
!                - CMD_QUERY_RET -> Abfrage "CMD_RETS" für 10 Sekunde aktivieren
!                - CMD_RETS           -> Befehl ausführen 


var url = "http://192.168.0.80/sonos2.php?zonen=kueche&action=radioplaylist&playlist=RTL%20-%20Die%20besten%20Hits%20aller%20Zeiten&volume=8";

! hier ist die Abfrage mit CUxD

dom.GetObject("CUxD.CUX2801001:2.CMD_SETS").State("wget -q -O - '"#url#"'"); 
dom.GetObject("CUxD.CUX2801001:2.CMD_QUERY_RET").State(1);
dom.GetObject("CUxD.CUX2801001:2.CMD_RETS").State();


Und unter den Sonos Favoriten gibt es "RTL - die besten Hits aller Zeiten" . Wenn ich mich recht erinnere (ist schon lange her, dass ich das eingerichtet habe), musst Du die (Radio-) Favoriten vorher exakt so in Sonos anlegen.
Bernd

Benutzeravatar
koppenho
Beiträge: 227
Registriert: 27.12.2013, 09:12
Wohnort: Bad Neustadt, Deutschland
Hat sich bedankt: 2 Mal
Danksagung erhalten: 2 Mal

Re: Sonos Steuerung

Beitrag von koppenho » 25.05.2017, 09:01

Die Radio-Stationsnamen und URLs müssen in der Datei sonos2.php eingetragen/geändert werden. Mit anderen Worten: die Radio-Favoriten, die Du in Sonos angelegt hast, werden nicht verwendet.

Such mal in sonos2.php die Definition der Variablen $radio_name und $radio_adresse. Bei mir sieht das so aus:

Code: Alles auswählen

# und hier die URL zum Stationsnamen.
#$radio_adresse = array ("x-rincon-mp3radio://ndr-ndr1-han-mp3.akacast.akamaistream.net/7/807/273766/v1/gnl.akacast.akamaistream.net/ndr_ndr1_han_mp3",
#                                               "x-rincon-mp3radio://mp3channels.webradio.antenne.de/chillout",
#                                               "x-rincon-mp3radio://pub5.di.fm:80/di_spacemusic");

$radio_name = array ("Antenne Bayern Radio");
$radio_adresse = array ("x-rincon-mp3radio://mp3channels.webradio.antenne.de:80/antenne");

Die auskommentierten Zeilen zeigen, wie man mehrere Radios angeben kann.
Bei uns wird nur Antenne Bayern gespielt.
--
Andreas
--------------------------------------------
Hauptwohnung: RaspberryMatic mit 320 Kanäle in 110 Geräten und 140 CUxD-Kanäle in 33 CUxD-Geräten
Zweitwohnung: CCU2 mit 18 Kanäle in 8 Geräten und 14 CUxD-Kanäle in 4 CUxD-Geräten
--------------------------------------------

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“