Sonos Modul

Das sieht dann wohl so aus, als ob die Funktion zuviele Ergebnisse liefert …

Ein IPS Problem ?
Oder Protokol-Problem?
Ich teste mal alle IPs die nicht SONOS sind nicht zululassen.

Ich vermute es - habe mich mit Discovery aber noch nicht beschäftigt.[emoji3]

Das wirkt, als wenn die SSDP Anfragen sich überlappen. Wahrscheinlich fragt eine andere Discovery Instanz die HUE Bridge ab, die dann aber „zu spät“ antwortet und somit in der Anfrage für Sonos landet. Doof. Ich muss mal schauen, wie ich das geschickt lösen kann.

paresy

Das könnte gut sein. Bei mir ist auch eine HUE-Bridge im Einsatz.

VG Alex

Kann mir bitte jemand sagen, was ich da falsch mache.
Ich möchte in einer definierten Gruppe einen File abspielen.

SNS_PlayFilesGrouping(41210 /*[Audio\Sonos Wohnzimmer]*/ , json_encode( array(18905 /*[Audio\Sonos Wintergarten]*/ => array( "volume" => 30), 43638 /*[Audio\Sonos Garten]*/ => array( "volume" => 30) ) ), json_encode(array(41210 /*[Audio\Sonos Wohnzimmer]*/, "//192.168.1.199/pi-share/Doorbell.mp3")), 30 );

Die Fehlermeldung kann ich nicht korrekt entziffern


Fatal error:  Uncaught Exception: File (41210) 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) in /var/lib/symcon/modules/SymconSonos/Sonos/module.php:571
Stack trace:
#0 /var/lib/symcon/modules/SymconSonos/Sonos/module.php(671): Sonos->PlayFiles('[41210,"\\/\\/192...', '0')
#1 /var/lib/symcon/scripts/__generated.inc.php(8443): Sonos->PlayFilesGrouping('{"18905":{"volu...', '[41210,"\\/\\/192...', '30')
#2 /var/lib/symcon/scripts/20519.ips.php(3): SNS_PlayFilesGrouping(41210, '{"18905":{"volu...', '[41210,"\\/\\/192...', 30)
#3 {main}
  thrown in /var/lib/symcon/modules/SymconSonos/Sonos/module.php on line 571

In einem anderen Skript arbeite ich ohne json_encode, statt dessen mit eckigen Klammern. Dies funktioniert einwandfrei:

SNS_PlayFiles(41210 /*[Audio\Sonos Wohnzimmer]*/, '["//192.168.1.199/pi-share/Doorbell.mp3"]', 25);

Probiere es mal so:

 SNS_PlayFilesGrouping(41210,
    json_encode([18905 => ['volume' => 30],
                 43638 => ['volume' => 30]
                 ]),
    json_encode(['//192.168.1.199/pi-share/Doorbell.mp3']), 30 );

In deinem zweiten json_encode war die Instanz-ID zu viel.

Habe folgende Fehler im LOG:

Ich habe derzeit nur 2 Sonos Boxen aktiviert.

  • Sonon One in der Küche
  • Sonos Play 5 (Gen.1) im Hobbyraum

Das Update der Detailinfos klappt nicht --> wie in den Logs ersichtlich.

Wo stimmt es bei meiner Installation nicht mehr ? (beim vorigen Modul mit Coordinator ging es noch)

Gruß Günter

28.12.2019, 16:02:40 | TimerPool | Sonos Küche (Sonos Update Status): <br />
<b>Fatal error</b>: Uncaught Exception: Error during Soap Call: UPnPError s:Client 402 (UNKNOWN) in C:\ProgramData\Symcon\modules\.store\de.kugelberg.sonos\libs\sonosAccess.php:740

Stack trace:
#0 C:\ProgramData\Symcon\modules\.store\de.kugelberg.sonos\libs\sonosAccess.php(195): SonosAccess->processSoapCall('/MediaRenderer/...', 'urn:schemas-upn...', 'GetEQ', Array)
#1 C:\ProgramData\Symcon\modules\.store\de.kugelberg.sonos\SonosPlayer\module.php(1482): SonosAccess->GetNightMode()
#2 C:\ProgramData\Symcon\scripts\__generated.inc.php(3271): SonosPlayer->updateStatus()
#3 C:\Windows\System32\-(1): SNS_updateStatus(47690)
#4 {main}
thrown
Error in Script C:\ProgramData\Symcon\modules\.store\de.kugelberg.sonos\libs\sonosAccess.php on Line 740

[HR][/HR]

28.12.2019, 16:02:42 | PHP | Error: Error: Uncaught Exception: Error during Soap Call: UPnPError s:Client 402 (UNKNOWN) in C:\ProgramData\Symcon\modules\.store\de.kugelberg.sonos\libs\sonosAccess.php:740

Stack trace:
#0 C:\ProgramData\Symcon\modules\.store\de.kugelberg.sonos\libs\sonosAccess.php(195): SonosAccess->processSoapCall('/MediaRenderer/...', 'urn:schemas-upn...', 'GetEQ', Array)
#1 C:\ProgramData\Symcon\modules\.store\de.kugelberg.sonos\SonosPlayer\module.php(1482): SonosAccess->GetNightMode()
#2 C:\ProgramData\Symcon\scripts\__generated.inc.php(3271): SonosPlayer->updateStatus()
#3 C:\Windows\System32\-(1): SNS_updateStatus(31422)
#4 {main}
thrown
Error in Script C:\ProgramData\Symcon\modules\.store\de.kugelberg.sonos\libs\sonosAccess.php on Line 740

[HR][/HR]

28.12.2019, 16:02:42 | TimerPool | Sonos Hobbyraum (Sonos Update Status): <br />
<b>Fatal error</b>: Uncaught Exception: Error during Soap Call: UPnPError s:Client 402 (UNKNOWN) in C:\ProgramData\Symcon\modules\.store\de.kugelberg.sonos\libs\sonosAccess.php:740

Abort Processing during Fatal-Error: Uncaught Exception: Error during Soap Call: UPnPError s:Client 402 (UNKNOWN) in C:\ProgramData\Symcon\modules\.store\de.kugelberg.sonos\libs\sonosAccess.php:740
Stack trace:
#0 C:\ProgramData\Symcon\modules\.store\de.kugelberg.sonos\libs\sonosAccess.php(195): SonosAccess->processSoapCall('/MediaRenderer/...', 'urn:schemas-upn...', 'GetEQ', Array)
#1 C:\ProgramData\Symcon\modules\.store\de.kugelberg.sonos\SonosPlayer\module.php(1482): SonosAccess->GetNightMode()
#2 C:\ProgramData\Symcon\scripts\__generated.inc.php(3271): SonosPlayer->updateStatus()
#3 C:\Windows\System32\-(1): SNS_updateStatus(31422)
#4 {main}
thrown
Error in Script C:\ProgramData\Symcon\modules\.store\de.kugelberg.sonos\libs\sonosAccess.php on Line 740

[HR][/HR]

28.12.2019, 16:02:42 | PHP | Error: Error: Uncaught Exception: Error during Soap Call: UPnPError s:Client 402 (UNKNOWN) in C:\ProgramData\Symcon\modules\.store\de.kugelberg.sonos\libs\sonosAccess.php:740

Stack trace:
#0 C:\ProgramData\Symcon\modules\.store\de.kugelberg.sonos\libs\sonosAccess.php(195): SonosAccess->processSoapCall('/MediaRenderer/...', 'urn:schemas-upn...', 'GetEQ', Array)
#1 C:\ProgramData\Symcon\modules\.store\de.kugelberg.sonos\SonosPlayer\module.php(1482): SonosAccess->GetNightMode()
#2 C:\ProgramData\Symcon\scripts\__generated.inc.php(3271): SonosPlayer->updateStatus()
#3 C:\Windows\System32\-(1): SNS_updateStatus(47690)
#4 {main}
thrown
Error in Script C:\ProgramData\Symcon\modules\.store\de.kugelberg.sonos\libs\sonosAccess.php on Line 740

[HR][/HR]

Kann es sein, dass du den Nightmodus aktiviert hast ?
https://www.symcon.de/forum/threads/27500-Sonos-Modul?p=412753#post412753

ja ist korrekt. danke.
Hab es gerade vor 2 min. selbst herausgefunden.
Ich muss aber zugeben, das ich schon eine ganze Stunde meinen Fehler konzequent ignoriert habe.
:mad:
= gelöst

Wirft leider auch einen Fehler aus:

Fatal error:  Uncaught Exception: Error during Soap Call: UPnPError s:Client 501 (UNKNOWN) in /var/lib/symcon/modules/SymconSonos/Sonos/sonosAccess.php:577
Stack trace:
#0 /var/lib/symcon/modules/SymconSonos/Sonos/sonosAccess.php(394): SonosAccess->processSoapCall('/MediaRenderer/...', 'urn:schemas-upn...', 'SetAVTransportU...', Array)
#1 /var/lib/symcon/modules/SymconSonos/Sonos/module.php(876): SonosAccess->SetAVTransportURI('x-rincon:RINCON...')
#2 /var/lib/symcon/scripts/__generated.inc.php(9967): Sonos->SetGroup(41210)
#3 /var/lib/symcon/modules/SymconSonos/Sonos/module.php(667): SNS_SetGroup(43638, 41210)
#4 /var/lib/symcon/scripts/__generated.inc.php(8443): Sonos->PlayFilesGrouping('{"18905":{"volu...', '["\\/\\/192.168.1...', '30')
#5 /var/lib/symcon/scripts/20519.ips.php(5): SNS_PlayFilesGrouping(41210, '{"18905":{"volu...', '["\\/\\/192.168.1...', 30)
#6 {main}
  thrown in /var/lib/symcon/modules/SymconSonos/Sonos/sonosAccess.php on line 577

Du bist auf jeden Fall schon mal ein Stück weiter. Jetzt meldet sich Sonos zu Wort. Es scheint das File in der Kombination mit deinen drei Playern nicht abspielen zu können.

Geht das gleiche denn in der Sonos App?

Ja, ich kann die Datei auf einem Einzelplayer abspielen.
Im Moment spiele ich alle anderen Files z.B. so ab:

SNS_PlayFiles(41210, '["//192.168.1.199/pi-share/Cabin_Chime.mp3", "//192.168.1.199/pi-share/Die Waschmaschine ist fertig.mp3"]', 30); 

Das funktioniert wunderbar.

Jetzt habe ich ein neues Projekt in Verbindung mit meiner Türglocke realisiert und dazu möchte ich einen Gong auf meinen Sonos-Boxen abspielen, wenn jemand an der Gartentüre läutet.
Da ich es nicht hinbekommen habe, habe ich für jede Sonos-Box ein eigenes Skript angelegt, welches ich aus dem Hauptskript starte.
Natürlich völliger Blödsinn, aber anders hab ich es noch nicht zum Laufen gebracht.

Dann taste dich doch mal schrittweise heran:

Ausgabe nur auf 41210:

SNS_PlayFilesGrouping(41210,
    json_encode([]),
    json_encode(['//192.168.1.199/pi-share/Doorbell.mp3']), 30 ); 

Ausgabe auf 41210 und 18905:

SNS_PlayFilesGrouping(41210,
    json_encode([18905 => ['volume' => 30]]),
    json_encode(['//192.168.1.199/pi-share/Doorbell.mp3']), 30 ); 

Aufgrund deines letzten Tipps bin ich jetzt auf etwas drauf gekommen:
Wenn alle Boxen getrennt sind, also in keiner Gruppe, dann funktioniert der Befehl

SNS_PlayFilesGrouping(18905,
    json_encode([43638 => ['volume' => 25]]),
    json_encode(['//192.168.1.199/pi-share/Doorbell.mp3']), 25);

Sobald aber vor dem Ausführen des Befehls eine Gruppe besteht, gibt er eine Fehlermeldung aus:

Fatal error:  Uncaught Exception: Error during Soap Call: UPnPError s:Client 501 (UNKNOWN) in /var/lib/symcon/modules/SymconSonos/Sonos/sonosAccess.php:577
Stack trace:
#0 /var/lib/symcon/modules/SymconSonos/Sonos/sonosAccess.php(394): SonosAccess->processSoapCall('/MediaRenderer/...', 'urn:schemas-upn...', 'SetAVTransportU...', Array)
#1 /var/lib/symcon/modules/SymconSonos/Sonos/module.php(876): SonosAccess->SetAVTransportURI('x-rincon:RINCON...')
#2 /var/lib/symcon/scripts/__generated.inc.php(9967): Sonos->SetGroup(18905)
#3 /var/lib/symcon/modules/SymconSonos/Sonos/module.php(667): SNS_SetGroup(43638, 18905)
#4 /var/lib/symcon/scripts/__generated.inc.php(8443): Sonos->PlayFilesGrouping('{"43638":{"volu...', '["\\/\\/192.168.1...', '25')
#5 /var/lib/symcon/scripts/46363.ips.php(5): SNS_PlayFilesGrouping(18905, '{"43638":{"volu...', '["\\/\\/192.168.1...', 25)
#6 {main}
  thrown in /var/lib/symcon/modules/SymconSonos/Sonos/sonosAccess.php on line 577

Da scheint noch etwas im Modul nicht korrekt zu sein. Bei dem Befehl SNS_PlayFilesGrouping werden eigentlich erst bestehende Gruppen aufgelöst, dann die geforderten Gruppen neu gebildet, das File abgespielt und dann die alten Gruppen wiederhergestellt.

Das klappt noch nicht in jeder Konstellation.

Wenn ich zum Beispiel eine bestehende Gruppe mit A(als Master) und B (als Slave) habe und nun auf B(als Master) und A (als Slave) abspielen möchte, dann bekomme ich bei mir den Fehler:

Fatal error:  Uncaught Exception: Error during Soap Call to <B>: UPnPError (s:Client) UPnPError: 701 (ERROR_AV_UPNP_AVT_INVALID_TRANSITION)

Ich denke, das Problem tritt auf, wenn der neue Master aktuell ein Slave in einer Gruppe ist.

ich versuche mich gerade an sns_playFiles, aber irgendwie klappt es nicht. die Fritzbox 7490 lässt glaube ich keinen Zugriff zu,
Die Sonos Unterricht kurz und dann läuft das Radio wieder.

SNS_PlayFiles(30877,"//192.168.1.10/hw18/musik/am.mp3", 0);  

und dann kommt folgende Fehlermeldung:

Warning: Invalid argument supplied for foreach() in /mnt/data/symcon/modules/.store/de.kugelberg.sonos/SonosPlayer/module.php on line 804

hat mir jemand eine Idee ??

Die abzuspielenden Dateien müssen als JSON kodiertes Array übergeben werden.
In der Doku steht ein Beispiel dazu.

Genau das denke ich auch. Ich habe jetzt einige Versuche durchgeführt und komme zum selben Ergebnis.

habe es jetzt nochmals probiert:

SNS_PlayFiles(30877, json_encode(Array("http://192.168.1.10/nas/#/files/Musik/am.mp3")), +20);  

Die Lauttärke wird lauter, es wird aber rnichts gespielt, und das script läuft ewig.
und folgende Meldung:

Fatal error:  Uncaught Exception: Error during Soap Call: UPnPError s:Client 714 (ERROR_AV_UPNP_AVT_ILLEGAL_MIME) in /mnt/data/symcon/modules/.store/de.kugelberg.sonos/libs/sonosAccess.php:740
Stack trace:
#0 /mnt/data/symcon/modules/.store/de.kugelberg.sonos/libs/sonosAccess.php(497): SonosAccess->processSoapCall('/MediaRenderer/...', 'urn:schemas-upn...', 'SetAVTransportU...', Array)
#1 /mnt/data/symcon/modules/.store/de.kugelberg.sonos/SonosPlayer/module.php(816): SonosAccess->SetAVTransportURI('http://192.168....')
#2 /mnt/data/symcon/scripts/__generated.inc.php(511): SonosPlayer->PlayFiles('["http:\\/\\/192....', '0')
#3 /mnt/data/symcon/scripts/51816.ips.php(6): SNS_PlayFiles(30877, '["http:\\/\\/192....', 0)
#4 {main}
  thrown in /mnt/data/symcon/modules/.store/de.kugelberg.sonos/libs/sonosAccess.php on line 740