Sonos Modul

Das ist die typische Fehlermeldung von PHP 8.

Hallo,

So, da 6.4 jetzt da ist, habe ich alle änderungen in den Variablen gemacht. Wieder erstmal als Beta.

TRANSITION is jetzt -1.
Es gibt aber auch Konstanten dafür (wenn man die sonosAccess.php einbindet…):
SonosAccess::PREVIOUS
SonosAccess::STOP
SonosAccess::PLAY
SonosAccess::PAUSE
SonosAccess::NEXT
SonosAccess::TRANSITIONING

Zu guter Letzt ist auch das Problem mit den Playlisten von @somm gelöst.

Feedback ist erwünscht, ansonsten gebe ich das Ganze in kürze als stable frei.

Gruß,
Thorsten

3 „Gefällt mir“

Cool, danke. Probiere es nach Möglichkeit gleich morgen, also heute… :sweat_smile:

Hallo,

ich erhalte in letzter Zeit immer folgenden Fehler:

16.06.2023, 04:21:09 | TimerPool            | Sonos Discovery (Sonos Discovery): 
Warning: SimpleXMLElement::__construct(): Entity: line 130: parser error : EndTag: '</' not found in C:\ProgramData\Symcon\modules\.store\de.kugelberg.sonos\SonosDiscovery\module.php on line 155

Warning: SimpleXMLElement::__construct(): 	    <eventSubURL>/MediaServer/ConnectionManager/ in C:\ProgramData\Symcon\modules\.store\de.kugelberg.sonos\SonosDiscovery\module.php on line 155

Warning: SimpleXMLElement::__construct(): 	                                                ^ in C:\ProgramData\Symcon\modules\.store\de.kugelberg.sonos\SonosDiscovery\module.php on line 155

Fatal error: Uncaught Exception: String could not be parsed as XML in C:\ProgramData\Symcon\modules\.store\de.kugelberg.sonos\SonosDiscovery\module.php:155
Stack trace:
#0 C:\ProgramData\Symcon\modules\.store\de.kugelberg.sonos\SonosDiscovery\module.php(155): SimpleXMLElement->__construct('<?xml version="...')
#1 C:\ProgramData\Symcon\modules\.store\de.kugelberg.sonos\SonosDiscovery\module.php(38): SonosDiscovery->DiscoverDevices()
#2 C:\ProgramData\Symcon\scripts\__generated.inc.php(1003): SonosDiscovery->Discover()
#3 C:\Windows\System32\-(1): SNS_Discover(15897)
#4 {main}
  thrown in C:\ProgramData\Symcon\modules\.store\de.kugelberg.sonos\SonosDiscovery\module.php on line 155
Abort Processing during Fatal-Error: Uncaught Exception: String could not be parsed as XML in C:\ProgramData\Symcon\modules\.store\de.kugelberg.sonos\SonosDiscovery\module.php:155
Stack trace:
#0 C:\ProgramData\Symcon\modules\.store\de.kugelberg.sonos\SonosDiscovery\module.php(155): SimpleXMLElement->__construct('<?xml version="...')
#1 C:\ProgramData\Symcon\modules\.store\de.kugelberg.sonos\SonosDiscovery\module.php(38): SonosDiscovery->DiscoverDevices()
#2 C:\ProgramData\Symcon\scripts\__generated.inc.php(1003): SonosDiscovery->Discover()
#3 C:\Windows\System32\-(1): SNS_Discover(15897)
#4 {main}
  thrown
   Error in Script C:\ProgramData\Symcon\modules\.store\de.kugelberg.sonos\SonosDiscovery\module.php on Line 155

Mache ich was falsch ???

Grüße
Proxima

Perfekt, funktioniert! :+1::slightly_smiling_face:

Schönen guten Tag,

nach der Installation auf IPS7 Testing habe ich folgenden Fehler, wenn ich eine MP3 Datei an eine Sonos sende.

Befehel:
SNS_PlayFiles (14136 Sonos Küche (Programmierung\Multimedia\Küche), json_encode (array( „//192.168.2.100/tts/tuerinfo/terrassemittegeoeffnet.mp3“)), 40);

Fehler:

Warning: Undefined array key 0 in /var/lib/symcon/modules/.store/de.kugelberg.sonos/SonosPlayer/module.php on line 1359
Fatal error: Uncaught TypeError: json_decode(): Argument #1 ($json) must be of type string, null given in /var/lib/symcon/modules/.store/de.kugelberg.sonos/SonosPlayer/module.php:1359
Stack trace:
#0 /var/lib/symcon/modules/.store/de.kugelberg.sonos/SonosPlayer/module.php(1359): json_decode(NULL, true)
#1 /var/lib/symcon/scripts/__generated.inc.php(6871): SonosPlayer->PlayFiles(‚[„//192.168.2…‘, ‚40‘)
#2 /-(4): SNS_PlayFiles(14136, ‚[“//192.168.2…‘, 40)
#3 {main}
thrown in /var/lib/symcon/modules/.store/de.kugelberg.sonos/SonosPlayer/module.php on line 1359

nach dem Zurückspielen auf IPS 6.4 ist das Problem weg.

mfg

Kann es sein, dass du noch eine ältere Version des Moduls installiert hast? Probiere mal die Beta Version des Moduls.

Hallo,

ich habe die Aktuelle Stable Version installiert, sobald ich auf die Beta umschwenke, funktioniert es.
Wird das ganze bald auch in der Stable Version funktionieren?

Moin,

da ich keine Beschwerden bekommen habe, habe ich jetzt mal die Beta als Stable eingereicht.
Sollte also bald kommen.

Gruß,
Thorsten

Sorry, dass ich mich jetzt erst melde.
Mir ist eine Sache aufgefallen, der Wiedergabestatus bleibt bei mir auf „Play“ stehen, auch wenn ich auf Stop gedrückt habe.
Wenn ich übers Webinterface auf Stop drücke, stoppt die Sonos wohl aber er geht wieder auf den Status „Play“ zurück. das ist nicht weiter problematisch, leider habe ich ein zwei Automatisierungen, die davon abhängig sind, ob Musik abgespielt wird oder nicht.

mfg

Hallo,

das sieht mir in Deinem Video nach einer eigenen Visu aus. Zumindest wundert es mich, dass ich da nur „play“ und „stop“ sehe.
=> Die Werte für play stop, etc. haben sich geändert.

Jetzt ist es:
image

Vorher war es:

Also:
Play war 1, ist jetzt 2
Stop war 3 ist jetzt 1

Kann es daran liegen?

Gruß,
Thorsten

Perfekt, daran lag es :partying_face:
Ja, ist ein eigenes Button Profil dafür, die anderen Sachen brauche ich nicht und so ist es aufgeräumter :+1:
Dankeschön für die schnelle Hilfe.

Hallo Thorsten,
ich komme erst jetzt wieder dazu mich diesem Thema zu widmen. In der Zwischenzeit bin ich auf eine Synology DSM7 umgestiegen, auf dem IPS im Docker läuft und ich versuche mich nun erneut daran eine Ansage als mp3 abzuspielen.
Ich habe sie in der Filestation in diversen Unterordnern abgelegt. Ich würde sie gerne hier lassen und nicht im Symcon-Verzeichnis ablegen, da ich nicht weiß, ob sie noch vorhanden sind, wenn ich über Docker den Container mal löschen und neu installieren muss.

Nach zig Versuchen, obwohl ich die Dokumentation meines Erachtens beachtet habe, bekomme ich nun nach Ausführung keine Fehlermeldung mehr im Skript.

<?php

SNS_PlayFiles(20061, json_encode( Array( "////[IP-Adresse]/[Pfad]/Wäsche-fertig.mp3") ), 30);

Allerdings unterbricht die Musik nach Ausführung des Skiptes nur ganz kurz und in der Sonos-App kommt die Fehlermeldung "Wiedergabe von „Wäsche-fertig.mp3“ nicht möglich - Datei //[IP-Adresse]/[Pfad]/Wäsche-fertig.mp3 nicht gefunden.

Nach direkt doppelt hintereinander ausgeführtem Skript (siehe oben) erhalte ich folgenden Fehler im Skript:

Fatal error: Uncaught Exception: Error during Soap Call: UPnPError s:Client 701 (ERROR_AV_UPNP_AVT_INVALID_TRANSITION) in /var/lib/symcon/modules/.store/de.kugelberg.sonos/libs/sonosAccess.php:812
Stack trace:
#0 /var/lib/symcon/modules/.store/de.kugelberg.sonos/libs/sonosAccess.php(482): SonosAccess->processSoapCall('/MediaRenderer/...', 'urn:schemas-upn...', 'Play', Array)
#1 /var/lib/symcon/modules/.store/de.kugelberg.sonos/SonosPlayer/module.php(1424): SonosAccess->Play()
#2 /var/lib/symcon/scripts/__generated.inc.php(6051): SonosPlayer->PlayFiles('["\\/\\/192.168.2...', '30')
#3 /var/lib/symcon/scripts/53872.ips.php(3): SNS_PlayFiles(20061, '["\\/\\/192.168.2...', 30)
#4 {main}
  thrown in /var/lib/symcon/modules/.store/de.kugelberg.sonos/libs/sonosAccess.php on line 812

Interessanterweise springt nach doppelter Ausführung des Durchsage-Skriptes das Lied immer auf das Nächste Lied weiter, statt einfach die Wiedergabe fortzusetzen.

Hier der Dump:
gelöscht

Kannst du mir hier weiterhelfen?
Viele Grüße
Marvin

Hi,

Das bedeutet ja nichts anderes, als dass SONOS nicht an die Datei kommt.
Es muss halt ohne user/passwort, sondern komplett anonym funktionieren. Da kann ich Dir nicht wirklich helfen, aber ich bin mir sicher, dass es diesbezüglich einiges an HowTos gibt…

ERROR_AV_UPNP_AVT_INVALID_TRANSITION bedeutet, dass Du etwas ausführen möchtest, was (zu diesem Zeitpunkt) nicht erlaubt ist. Da es sich hier um Play() handelt würde ich tippen, dass exakt zu diesem Zeitpunkt keine wiedergabequelle gesetzt ist.

Da das SONOS Modul nicht das einzige ist, was die Player steuern kann, kann es immer sein, dass dies vorkommt.
Ich sehe keine Möglichkeit dies zu verhindern. Und dann die Exception zu werfen finde ich richtig.

Gruß,
Thorsten

Ich habe es nun mit folgender Anleitung hinbekommen auf die Datei zuzugreifen.

ENABLE GUEST:

  1. Control Panel → Users
  2. Select user guest and click Edit.
  3. Unckeck the ‘Disable User Account’

GIVE READ/WRITE:

  1. Control Panel → Shared Folders
  2. Select the folder and click on Privileges Setup
  3. Here you can select from the drop-down the Local Users or the Local Groups. Give Read/Write to the guest or the user group.

Der User Zugriff ermöglicht den Zugriff innerhalb des lokalen Netzwerkes ohne Passwort.
Danke für deine Unterstützung :slight_smile:

Auch in der Doku heißt es zur Status-Variable:

Mögliche Werte sind:
0 - Prev
1 - Play
2 - Pause
3 - Stop
4 - Next
5 - Transition

Ursprünglich war das auch bei mir so, es scheint sich aber zwischenzeitlich etwas geändert zu haben, denn nun ist es bei mir so:

Stop-1; Pause-3; Play-2

Entsprechend sind Skripte anzupassen, in denen die Werte der Status-Variable verwendet wird…

Viele Grüße!

Hallo,

danke für den Hinweis, ist angepasst.

Gruß,
Thorsten

Hallo,

ersteinmal vielen Dank für das tolle Modul!

Wie kann ich per IP-Symcon einen bestimmten TuneIn Radio-Sender auf dem Sonos starten?

Hallo,

das geht nur über den Umweg der Favoriten.
Wenn Du in der Sonos APP bei einem TimeIn Sender die drei Punkte drückst und dann 'Sender zu „Mein Sonos“ hinzufügen" ausführst, dann taucht der Sender vorne bei dem Stern auf.

Ab diesem Zeitpunkt kannst Du ihn schon per SNS_SetPlaylist + SNS_Play starten.

Falls Du im WebFront einen Knopf mit dem Sender haben möchtest, kannst Du in SonosSplitter mit dem Knopf „Update Playlists“, sofern ausgewählt ist, dass „favorites“ importiert werden.

Gruß,
Thorsten

1 „Gefällt mir“