Sonos Modul

das führt bei mir auch zum Fehler.
Gruß, Peter

zu welchem denn? Ich hoffe Du hast nicht „12345“ als Object ID verwendet.

Hallo,

Also, der Fehler kommt bei SNS_SetGroup(27631, 54958).
Kann es sein, dass diese Box gerade ein Koordinator einer anderen Gruppe ist?

Gruß,
Thorsten

Hi Thorsten,
ja das kann gut sein dass sie gerade einer anderen Gruppe als Koordinator zugeiwesen ist. Deshalb hatte ich auch mal testweise die Zeile BecomeCoordinator (siehe oben) vorne ran gestellt, um sicherzu gehen dass es nicht daran liegt. Aber die Fehlermeldung bleibt die selbe.

Hallo Thorsten,
habe natürlich nicht die „12345“ genommen :slightly_smiling_face:

Fehlermeldung ist

Fatal error: Uncaught Exception: Error during Soap Call: UPnPError s:Client 501 (UNKNOWN) in C:\ProgramData\Symcon\modules\.store\de.kugelberg.sonos\libs\sonosAccess.php:801
Stack trace:
#0 C:\ProgramData\Symcon\modules\.store\de.kugelberg.sonos\libs\sonosAccess.php(558): SonosAccess->processSoapCall('/MediaRenderer/...', 'urn:schemas-upn...', 'SetAVTransportU...', Array)
#1 C:\ProgramData\Symcon\modules\.store\de.kugelberg.sonos\SonosPlayer\module.php(1854): SonosAccess->SetAVTransportURI('x-rincon:RINCON...')
#2 C:\ProgramData\Symcon\scripts\__generated.inc.php(523): SonosPlayer->SetGroup(38920)
#3 C:\ProgramData\Symcon\scripts\38043.ips.php(31): SNS_SetGroup(38260, 38920)
#4 {main}
  thrown in C:\ProgramData\Symcon\modules\.store\de.kugelberg.sonos\libs\sonosAccess.php on line 801

Meine Gruppierungs-Sequenz ist:

case 1:				// Party-Modus = alle Lautsprecher an
		SNS_SetGroup($group_id, 0);		// gibt Fehler
		SNS_SetGroup($buero_id,$group_id);
		SNS_SetGroup($kueche_id,$group_id);
		SNS_SetGroup($sz_id,$group_id);
		SNS_SetGroup($bad_id,$group_id);
		SNS_SetGroup($gabi_id,$group_id);
		SNS_SetGroup($wk_id,$group_id);
		SNS_SetDefaultGroupVolume($group_id);
		// SONOS starten
		SNS_Play($group_id);
	break;

Den ersten Befehl SNS_SetGroup($group_id, 0); habe ich erst neu hinzugefügt.

Gruß, Peter

Hallo,

diese Funktion macht die angegebene Instanz zum Koordinator der Gruppe in der die Box gerade ist.
Wenn aber 11386 in der Gruppe von 27631 ist, hilft ein SNS_BecomeCoordinator(54958); nicht.

Wenn Du sichergehen willst, dass keine Box in einer Gruppe ist könntest Du folgendes für alle Player machen:
Wenn SNS_IsCoordinator() false liefert, ein SNS_SetGroup(, 0) ausführen.

Danach solltest Du keine Player in Gruppen haben.

Gruß,
Thorsten

Hallo,

wenn Du Dir mal den Callstack anschaust, siehst Du da bei „#3“: SNS_SetGroup(38260, 38920)

Kann es sein, dass 38260 noch andere Boxen als Member hat?

Gruß,
Thorsten

nein, eigentlich nicht.
Aber das ist eine Box, bei der schonmal die WLAN-Verbindung abbricht.
Ich habe den Aufruf nochmal gestartet als ich mir sicher war, dass die BOX erreichbar ist.
Der Fehler trat nicht mehr auf!
War wohl eine Verkettung verschiedener Ursachen.
Sorry, für die Verwirrung.

Gruß, Peter

Hat sich erledigt: Ich hatte Player in verschiedenen Subnetzen. Nun habe ich pro Subnetz einen eigenen Splitter angelegt und die dazugehörigen Player damit verbunden. Jetzt geht es wieder wie gewünscht.

Hallo Thorsten,

ich habe derzeit einen komischen Effekt, wo ich leider nicht sagen kann, woher der kommt. Hatte ich jedenfalls bisher nicht.

Sobald ich einen Player mittels der App (Desktop oder auch Smartphone) in eine Gruppe aufnehme, wird der Status des Players der hinzugefügt wird als auf „Wiedergabe“ angezeigt. Der Master, der den zweiten Player aufnimmt, steht auf „Stop“. Der aufgenommene Player spielt auch nichts. Trenne ich die Gruppe, ist der Player wieder auf Stop.

Woher könnte das kommen?

Tom

Hab ein blödes Netzwerkproblem.
Mein IPS ist in einem eigenen VLAN, wie alle SmartHome Geräte.
Die Sonos Soundbar ist im Standardnetzwerk, sonst ginge Spotify von den Handys nicht.

Hat jemand eine Idee wie ich übergreifend arbeiten kann?

Hallo,

ich Depp habe gerade versehentlich mein Sonos-Modul aktualisiert. Nun kommt eine Fehlermeldung „Konnte Konfigurationsform nicht laden, InstanceInterface is not available“.

Im Baum bekomme ich bei der vorhandenen (!) Geräteinstanz angezeigt „Diese Instanz wurde nicht erstellt“ !?

In der Discovery-Instanz bekomme ich dies angezeigt:
Konnte Konfigurationsform nicht laden
Warning: InstanceInterface is not available in C:\ProgramData\Symcon\modules.store\de.kugelberg.sonos\SonosDiscovery\module.php on line 117
Warning: InstanceInterface is not available in C:\ProgramData\Symcon\modules.store\de.kugelberg.sonos\SonosDiscovery\module.php on line 82
(…)

Ich habe nur ein Gerät, ein altes Play1. Hat vorher funktioniert, bis zum versehentlichen Update. Kann ich das einfach lösen oder besser per Backup auf die alte Version zurück?

edit: Habe die alte Version aus Backup wiederhergestellt, das war vermutlich der einfachste Weg.

Im Zweifelsfall mal ins Log schauen, warum die Instanz nicht erstellt werden konnte.

paresy

Ich habe mich vermutlich missverständlich ausgedrückt. Ich hatte zunächst nicht versucht, eine neue Instanz zu erstellen. Vielmehr wurde der Fehler "Diese Instanz wurde nicht erstellt“ nach dem Sonos-Modul-Update bei einer bereits seit Jahren existierenden (!) Sonos-Instanz im Baum angezeigt. Instanz bearbeiten ging dementsprechend auch nicht. Erst danach hatte ich mal versucht in die Discovery zu schauen.

Egal, ich bleibe jetzt erstmal bei der alten Modulversion, die ich aus dem Backup wiederhergestellt habe.

Hallo @Kugelberg,

ich möchte grade auch einfach per Taster eine Box aus einer Gruppe nehmen. Dabei haben sich mir beim experimentieren folgende Fragen ergeben, vielleicht kannst du sie mir beantworten:

  1. Der Beispiel-Code var_dump(SNS_GetMembers(36396)); ergibt string(7) "[44104]" wenn der Lautsprecher ein Coordinator ist und Member hat. Wenn er keine hat, dann bekomme ich string(2) "[]". Sollte an Stelle eines Strings hier nicht ein Array zurück kommen, also eher ein Output wie array(1) { [0]=> int(44104) } oder array(0) { }? Vielleicht ist es auch von dir so gewollt, ich kann den String ja wieder in ein Array wandeln.

  2. Wenn ich Gruppen-Aktionen mit möglichst wenig Code bauen möchte, dann wäre es total super, wenn die Instanzen eine Variable hätten, die anzeigt, ob der jeweilige Lautsprecher ein Gruppen-Koordinator ist. Diese Variable könnte dann in Bedingungen für Aktionen oder Automationen verwendet werden.

  3. Analog zum zweiten Punkt habe ich also versucht mit der Funktion isCoordinator() zu arbeiten. Allerdings fällt mit dabei auf, dass diese immer auch dann ein true zurück liefert, wenn sie alleinstehend ist, also nur sich selbst koordiniert. Ist das so gewollt?

  4. Am einfachsten wäre es (Achtung, jetzt kommt ein Feature Request :-)), wenn die Funktion SNS_SetGroup($instanceID, 0); auch dazu führen würde, dass die Box die Gruppe auch dann verlässt, wenn sie selbst Coordinator ist. Vielleicht mit einem einstellbaren oder zusätzlichen Parameter, was in dem Fall mit der Gruppe passieren soll - also ob die Wiedergabe gestoppt und die Gruppe aufgelöst werden soll oder ob automatisch irgenein anderer der Gruppe zum neuen Coordinator werden soll.

Im diesem Post von @AdrianS habe ich mich inspirieren lassen.

Was sagst du zu meinen Gedanken?

Ciao
Golo

PS: Ich behelfe mir vorerst, in dem ich als Aktion an einem Event unter der Instanz (Taster gedrückt), einfach nur diese drei Zeilen einsetzte:

$members = json_decode(SNS_GetMembers($_IPS['TARGET']));
foreach($members as $member) SNS_SetGroup($member, 0);
if (!$members && !SNS_IsCoordinator($_IPS['TARGET'])) SNS_SetGroup($_IPS['TARGET'], 0);

Das Sonos Modul ist echt gut und funktioniert einwandfrei.
Leider habe ich dennoch ein Problem.

Alle SmartHome Geräte sind in einem VLAN das vom Hauptnetz komplett getrennt wurde.
Damit ich vom Handy via Spotify Musik auf meiner Soundbar hören kann musste diese in das Hauptnetzwerk. Daher kann ich sie nun nicht aus IPS steuern,
Kann man netzwerkübergreifend arbeiten?
Die IP der Soundbar für alle VLAN’s freizugeben wäre kein Problem, aber das Modul scheint nur im entsprechenden Adressbereich zu suchen.

Hi,

Kann man netzwerkübergreifend arbeiten?

also meine Sonos sind auch in einem anderem VLAN als mein IPS und ich kann die Sonos steuern…

Es gibt unter linux ein nettes kleines tool, welches sich bcrelay nennt, damit kann man Broadcasttraffic von ein VLAN in ein anderes VLAN schupsen… Läuft bei mir auf einer VM unter Proxmox, diese VM muss Zugang zu allen VLANs haben (in meinem Fall, HauptVLAN und „NebenVLAN“) und wird ganz simpel mit

/usr/sbin/bcrelay -i eth0 -o eth0.2 -d 

aufgerufen.

Vielleicht hilft es.

Viele Grüße

Ich verstehe: Du einen Router mit Firewall zwischen den Netzen und kannst so die Kommunikation zwischen IPS und der SONOS Box erlauben, also alles ok.

Meinst du, die Discovery-Instanz? Du müsstest einen Lautsprecher auch manuell mit dessen IP Adresse hinzufügen können, also eine Player-Instanz. Natürlich setzt das auch voraus, dass der immer die selbe IP Adresse bekommt (DHCP Reservierung). Hast du das schon mal probiert?

Ich war, mal wieder, zu doof um das Ganze zu sehen.
Hatte in der Discovery versucht die Soundbar zu finden, ging nicht.

In der Variable ging es auch nicht weil er RINCON nicht finden wollte, dachte ich.
Man sollte nur die Reihenfolge einhalten was mir nicht so klar war.
Erst IP, dann speichern, dann RINCON.

Hallo @Kugelberg würde es eigentlich gehen das es eine extra Variable gibt wo drinnen steht was gerade die Quelle der Musik ist zb Spotify, Radio,…
Danke
gruß Stefan

1 „Gefällt mir“

Ich habe heute bemerkt das mit die Radiosender nicht mehr angezeitg werden.
Wenn ich ein Sender auswähle wird mir dieser solange angezeigt bis die UpdateFrequenz zum zuge kommt.
Habe die Update Frequenz im Sonos Splitter ist auf 60 s gesetzt.
Diese hat immer korrekt Funktioniert. Kann aber nicht genau sagen seit wann dieses Problem vorhanden ist.
Habe auf die Betaversion gewechselt. Aber ohne Erfolg.
Problem ist immer noch vorhanden.
Anbei noch das Debuglog mit mehren Radiosenderwechsel.

Die Update Frequent möchte ich ungern höher setzen. Zumal dies das Problem nicht behebt.
Habe die aktuelle IPS Version installiert.

Wäre schön wenn das Problem behoben werden kann.
dump.txt (7,3 KB)

Radio 01
Radio 02

Gruss