Sonos Modul

Ich hab 5.3…habs heute nochmal versucht. Zwiwchendurch mal einen Reboot. Fehlermeldung in bleibt bisher aus.
Von daher erstmal Entwarnung.

Gruß oekomat

Ich habe die Beam zusammen in eine Gruppe mit einem bestehenden Stereopaar gekoppelt.
Von dem Steropaar war noch eine Instanz vorhanden, nachdem ich diese gelöscht habe ist alles gut.

Danke!!

Hallo,

Sorry, Dein Post ist irgendwie untergegangen.

Wenn ich den Namen nicht in den lokalen Namen (also denen im Modul) finde, suche ich per „BrowseContentDirectory(‚R:0/0‘)“ nach dem Namen.
Der muss da aber exakt gleich sein… ->nicht so schön.

Falls Du bereits die neue Beta benutzt kannst Du zum einen Deinen Sender im Splitter hinterlegen (wäre meine Variante) oder Dir mal die Debug Informationen anschauen.
Wenn Du SNS_SetRadio aufrufst, schreibe ich raus welche Sender so in Sonos gefunden werden…

Gruß,
Thorsten

Guten Abend Zusammen,
wir nutzen schon das neue SONOS-Beta-Version und sind hell auf begeistert - danke dafür.

Ich versuche in einem Script die Sonos entsprechend anzusteuern, bzw. ich würde gerne die Gruppen Ansteuern. Jedoch sind ja immer andere Boxen als Koordinator eingetragen. Ich habe es mit folgendem Script versucht, jedoch klappt das net so gut.

SNS_DelegateGroupCoordinationTo(30771,19634, true);
SNS_Play(19634);
SNS_SetDefaultGroupVolume(19634);

Was mach ich denn falsch?

LG Dennis.

Danke für die ausführliche Info Thorsten,
das versuche ich gleich.

Klasse modul, denn die Original Sonos Steuerung ist !ne 6

Gruß Ralph

Hallo,

oh, auf dieses Vorgehen wäre ich nicht gekommen.
Wobei…
SNS_DelegateGroupCoordinationTo führt man ja auf den alten Koordinator aus. Dazu musst Du ihn also kennen, und das ist ja Dein Problem.

Vielleicht kannst Du ja mal beschreiben, was Du mit „jedoch klappt das net so gut.“ meinst.

Das mit dem „SNS_Play(19634);“ verwirrt mich auch ein wenig. Wozu?
Oder willst Du mit dem Script die Wiedergabe starten? Dann würde ich das „SNS_SetDefaultGroupVolume(19634);“ vor dem „SNS_Play(19634);“ machen. Wenn die Kinder Party gemacht haben, wird es sonst kurz recht laut!

Ich löse das so:
Ich habe mir die Lautsprecher in der Küche als „Hauptlautsprecher“ definiert.
Ich achte darauf, dass diese immer der Koordinator ist. Das erreicht man, indem man diese Box als erstes in der App auswählt und da dann die anderen aufnimmt.
Und dann rede ich von IPS aus nur noch mit der Küche.

Ich habe mir auch schon überlegt ein Script zu bauen, dass mit jede Nacht die Gruppierung herstellt.
Oder als „Gruppenkonfiguration“ am Splitter… Das wäre eine Idee. Dann könne man eine Funktion „SNS_SetDefaultGrouping“ machen… Mal sehen.

Ich hoffe ich konnte Dir ein wenig helfen.

Gruß,
Thorsten

Ich würde noch eine Funktion interessant finden, die herausfindet, ob ein Player gerade der Koordinator ist.

Hintergrund: ich schalte meine Player ab, wenn für den Zeitraum X niemand mehr im Raum ist. Doof, wenn das gerade ein Koordinator ist, dann dann ist überall Ruhe.

Hallo Thorsten,
ich habe nun Deinen neue sonos beta version installiert und das meinste läuft auch ganz gut. Aber mit den Sendern habe ich noch ein Problem.
Ich importiere die Sonos Favorieten und die werden auch im Webfront angezeigt. Wenn ich dann aber einen sender auswählen will, bekomme ich einen Fehler das die Variable Container nicht existiert.
Ich habe mal die debug datei des Splitters beigefügt.

[TXT: 04.05.2020, 11:56:00 | „UpdatePlaylists“ called |
HEX: 04.05.2020, 11:56:00 | „UpdatePlaylists“ called |
TXT: 04.05.2020, 11:56:00 | UpdatePlaylists: PlaylistImport set to | 5
HEX: 04.05.2020, 11:56:00 | UpdatePlaylists: PlaylistImport set to | 35
TXT: 04.05.2020, 11:56:00 | UpdatePlaylists: using Instance | 38553
HEX: 04.05.2020, 11:56:00 | UpdatePlaylists: using Instance | 33 38 35 35 33
TXT: 04.05.2020, 11:56:00 | UpdatePlaylists->sonos | BrowseContentDirectory(‚SQ:‘)
HEX: 04.05.2020, 11:56:00 | UpdatePlaylists->sonos | 42 72 6F 77 73 65 43 6F 6E 74 65 6E 74 44 69 72 65 63 74 6F 72 79 28 27 53 51 3A 27 29
TXT: 04.05.2020, 11:56:00 | UpdatePlaylists->sonos | BrowseContentDirectory(‚FV:2‘)
HEX: 04.05.2020, 11:56:00 | UpdatePlaylists->sonos | 42 72 6F 77 73 65 43 6F 6E 74 65 6E 74 44 69 72 65 63 74 6F 72 79 28 27 46 56 3A 32 27 29
TXT: 04.05.2020, 11:56:00 | UpdatePlaylists: Found PlayList | BAYERN 3
HEX: 04.05.2020, 11:56:00 | UpdatePlaylists: Found PlayList | 42 41 59 45 52 4E 20 33
TXT: 04.05.2020, 11:56:00 | UpdatePlaylists: Found PlayList | hr3
HEX: 04.05.2020, 11:56:00 | UpdatePlaylists: Found PlayList | 68 72 33
TXT: 04.05.2020, 11:56:00 | UpdatePlaylists: Found PlayList | N-JOY
HEX: 04.05.2020, 11:56:00 | UpdatePlaylists: Found PlayList | 4E 2D 4A 4F 59
TXT: 04.05.2020, 11:56:00 | UpdatePlaylists: Found PlayList | RADIO BOB!
HEX: 04.05.2020, 11:56:00 | UpdatePlaylists: Found PlayList | 52 41 44 49 4F 20 42 4F 42 21
TXT: 04.05.2020, 11:56:00 | UpdatePlaylists: Found PlayList | ROCK ANTENNE
HEX: 04.05.2020, 11:56:00 | UpdatePlaylists: Found PlayList | 52 4F 43 4B 20 41 4E 54 45 4E 4E 45
TXT: 04.05.2020, 11:56:00 | UpdatePlaylists: Found PlayList | SWR3 Elchradio
HEX: 04.05.2020, 11:56:00 | UpdatePlaylists: Found PlayList | 53 57 52 33 20 45 6C 63 68 72 61 64 69 6F
TXT: 04.05.2020, 11:56:00 | UpdatePlaylists->SendDataToChildren | {„DataID“:"{36EA4430-7047-C11D-0854-43391B14E0D7}",„type“:„checkPlaylistAction“,„targetInstance“:null,„data“:""}
HEX: 04.05.2020, 11:56:00 | UpdatePlaylists->SendDataToChildren | 7B 22 44 61 74 61 49 44 22 3A 22 7B 33 36 45 41 34 34 33 30 2D 37 30 34 37 2D 43 31 31 44 2D 30 38 35 34 2D 34 33 33 39 31 42 31 34 45 30 44 37 7D 22 2C 22 74 79 70 65 22 3A 22 63 68 65 63 6B 50 6C 61 79 6C 69 73 74 41 63 74 69 6F 6E 22 2C 22 74 61 72 67 65 74 49 6E 73 74 61 6E 63 65 22 3A 6E 75 6C 6C 2C 22 64 61 74 61 22 3A 22 22 7D

Ich hoffe das ist der richtige Weg zum debuggen,

Viele Grüße,
Ralph

Hallo Thorsten

Ausgangssituation : Die diversen Player sind teilweise (aber nicht alle) auf MUTE und spielen teilweise etwas ab unter Umständen auch auf einem gemuteten Player.

Ich gebe Sprachnachrichten aus um auf bestimmte Situationen hinzuweisen.
Dazu nutze ich die Funktion SNS_PlayFilesGrouping

Funktioniert auch prima bis auf die Player die auf Mute stehen, die bleiben nämlich auf Mute während der Ansage.

Ich könnte jetzt natürlich vor dem Aufruf der SNS_PlayFilesGrouping Funktion die für die durchsage genutzten player vorher auf UNMUTE stellen. Falls auf einem dieser player allerdings etwas läuft stört das die Durchsage (zumindest für einen kurzen Moment an Anfang)
Also müsste ich erst die ursprüngliche Player Einstellung Volume/Mute abspeichern dann die Lautstärke auf 0 stellen, dann unmute dann durchsage und dann
die alten Werte wieder eintragen.

Nun mein Funktions Wunsch : Bei der Nutzung der Funktion SNS_PlayFilesGrouping werden alle Player auf UNMUTE gesetzt und nach dem Ende der Durchsage wieder auf den vorherigen Zustand

Hallo,

die kenne ich auch nicht.
Hast Du einen Screenshot? Oder evtl. eine Datei + Zeile in der der Fehler auftritt?
–> Wenn man im Splitter speichert, wird auch etwas an alle Player geschickt…

Gruß,
Thorsten

Hallo,

schaue ich mir mal an. Müsste gehen.

Gruß,
Thorsten

Hallo,

So, ich habe da mal etwas eingebaut (waren erstaunlicherweise nur 8 Zeilen).
Kannst Du bitte mal schauen ob es auch funktioniert?

Danke,
Thorsten

Leider klappt es bei mir nicht. Ich habe einen Update auf das Modul gemacht und dann getestet

Ohne Mute kommt die durchsage mit Mute leider nicht, Insoweit ist alles beim alten



Hallo,

hmpf.
War ja klar, dass Du genau das testest, was ich nicht bedacht hatte.
Ich hatte vergessen die Instanz unzumuten, auf der das PlayFilesGrouping ausgeführt wird.

Habe ich jetzt nachgeliefert.

Gruß,
Thorsten

Das macht Spaß ! Funktioniert alles wie gewünscht.

Ganz herzlichen Dank für die schnelle und perfekte Umsetzung.
Das erspart mir jetzt eine Menge Arbeit

Funktionswunsch:
Ich benötige eine Funktion, die herausfindet, ob ein Player gerade der Koordinator ist.

Hintergrund: ich schalte meine Player ab, wenn für den Zeitraum X niemand mehr im Raum ist. Doof, wenn das gerade ein Koordinator ist, dann dann ist überall Ruhe.

Hallo Thorsten,
vielen Dank für Deine Antwort.

Du hast mein Problem erkannt. Mit „das klappt net so gut“ meine ich, dass ich den Koordinator wie in meiner Script nur einmal wechseln kann, wenn er gerade nicht der Koordinator ist. Wenn ich das Skript (weil er ja dann schon Koordinator ist) ein zweites Mal durchlaufen lasse bekomm ich naturgemäß eine Fehlermeldung.

Ich würde gern (Funktionswunsch oder Denkansatz) wenn ich das Script starte, egal wer gerade Koordinator ist, das neu setzen um dann entsprechend weiter die agieren. In meinem Fall, damit Du verstehst was ich vor hatte (vielleicht gibt es auch andere / bessere Möglichkeiten):

1. Koordinator auf Wohnzimmer setzen:
SNS_DelegateGroupCoordinationTo(30771,19634, true);
2. Wohnzimmer und alles was in der Gruppe hängt starten:
SNS_Play(19634);
3. Lautstärke aller Laustsprecher in der Gruppe auf Default stellen
SNS_SetDefaultGroupVolume(19634);

Damit der zweite Schritt gut funktioniert muss ja der erste zuerst kommen - und klar 2 und 3 können getauscht werden. Vielleicht macht es ja noch Sinn eine Möglichkeit zu geben (Falls die Gruppen mal nicht mehr zusammen hängen) als Schritt 1.1 die Gruppenmitglieder auch neu einzubeziehen - so sollte es dann eigentlich keine Probleme mehr geben, oder?

Hoffe es ist verständlich was ich meine.

LG Dennis.

Hallo,

es gibt jetzt

SNS_IsCoordinator(<instanceID>);

Liefert einen bool zurück.
Sollte passen, oder?

also wenn wir hier nur von 2 Instanzen sprechen würde Dir das „SNS_IsCoordinator“ evtl. ja schon helfen.
Damit könntest Du Dir ein IF um das SNS_DelegateGroupCoordinationTo(30771,19634, true); bauen.

Andererseits könnte ich mir auch eine Funktion „BecomeCoordinator“ vorstellen, die man auf eine Instanz aufruft.
Diese „reisst“ dann das Koordinatortum an sich.

  • Wenn sie schon Koordinator ist, passiert nichts
  • Wenn sie Teil einer Gruppe ist, leitet die DelegateGroupCoordinationTo an den eigenen Koordinator weiter.

Das müsste Doch Deine Wünsche erfüllen, oder?

Gruß,
Thorsten

Super, vielen Dank. Wird gleich morgen ausprobiert! :loveips:

Guten Morgen Thorsten,
klar, das "Koordinatorium (schönes Wort) an sich reissen wäre ja genau das was ich brauche - also die Funktion „BecomeCoordinator“. So kann man einfach fix festlegen das einer der Koordinator ist und wer in der Gruppe ist und den Koordinator dann entsprechend über ein Script ansteuern und die dazugehörige Gruppe steuern.

Klingt echt gut - danke sehr!

PS: Da SONOS ja gestern seine neuen Geräte vorgestellt hat - wie ist denn der Stand bezüglich dem Update auf das Sonos-Betriebssystem S2? Wenn das raus kommt ist Dein Modul bereit oder erstmal kein Update von S1 auf S2 machen?

LG Dennis.