SonosBY (Sonos // Gruppen erstellen, Gruppen auflösen, Text to Speech, ...)

Hallo Chris.

Das sind Spotify Playlisten - allerdings importiert in die Sonos Playlisten… bis jetzt haben die sich also immer wie Sonos PL verhalten.
Ist das so nicht mehr möglich?

Danke für die Antwort! Wenn ich daheim bin, teste ich das Script mal mit reinen Sonos PL.

Peter

Wie gesagt, habe keinen Spotify-Zugang und kann es deshalb nicht testen. Und SonosBY ist SonosBY und nicht PHPSonos, IPSSonos oder sonstwas :wink:

Ich kann nur sagen - bei mir und einigen anderen funktionieren die Sonos-Playlisten ohne Probleme mit Sonos v6. Also Sonos eigene Dinge sind ok, mehr weiß ich aktuell nicht.

Kannst ja mal Bescheid sagen, dann weiß ich gleich ob Spotify-Playlisten allgemein „stören“ oder nur ein Aufruf der Spotify-Playlisten mit der SonosBY-Funktion nicht klappt.

Grüße,
Chris

Also ich habs nun nochmal daheim getestet. Es liegt an den Spotify Playlisten.
Sobald auch nur eine solche in der Sonos-PL Liste vorhanden ist, kommt das Skript nicht damit zurecht.

Nachdem Spotify jetzt aber nun nichts völlig außergewöhnliches in Verbindung mit Sonos ist, bin ich doch sicher nciht der Einzige, dem daran gelegen ist, dass diese Funktion implementiert wird. Oder?

Gerne steuere ich Zeit, Arbeit oder Inforamtionen dazu bei - nur der Ansatz fehlt mir noch. Kann da evtl. jemand einen Hint geben?

Schönen Abend

Peter

***Update: Wenn ich nachträglich wieder Spotify PL hinzufüge, findet das Skript diese nun auch und produziert keine Fehlermeldungen mehr. Evtl. hilft es ja jemandem.

Nein daran liegts nicht; ich habe 0 Probleme Spotify Playlists mit Bayaros Script, mit PHPSonos und IPSSonos abzuspielen.
Sobal die Playlists in die Sonos Playlists importiert wurden ist das abspielen kein Problem. Gilt ebenfalls auch für Favoriten (falls man PHPSonos diesbezüglich erweitert hat).

Gruß
hoep

Hi hoep!

Danke fürs Testen! Aber nochmal zum genauen Verständnis > ALLEIN mit SonosBY kannst du eine Spotify Playlist auf deinen Sonos abspielen?

Mein Skript läuft ja unabhängig von PHPSonos/IPSSonos, deshalb verwirrt mich dein Post ein wenig.

Danke und Grüße,
Chris

Jesso Sir ! :slight_smile:
nur mit dem Befehl:

 SonosBY_PlayPlaylistByName_Auswahl("Wohnzimmer", "Peters Favorites");

klappts, wobei Peters Favorites eine importierte Spotify Playlistist und die Songs via Spotify gestreamt werden.
Somit ist Dein Script in der jetzigen Version in der Lage PHPSonos und die defekte Browse-Funktionalität hinsichtlich Radiostations & Playlists meiner bescheidenen Meinung nach zu ersetzen :slight_smile:
Es klappt aber auch mit IPSSonos und PHPSonos mit gepatchter Browse-Funktionalität…
Mal eine Vermutung @Pezi737: Wurde die Spotify Playlist importiert als Sonos Playlist ? Sonst kennt nämlich das Sonos-System die Playlist nicht…
Gruß
hoep

Yeah :cool: Klingt gut :slight_smile:

Vlt. gibt es bald noch eine Ergänzung mit zyklischem Auslesen der Sonos Player…aber bin mir noch nicht ganz sicher. WENN wird es ein minimalistisches extra Skript und zeigt einem dann die nötigsten Infos zu seinen Sonos Playern (Volume, Playing-Status, …) in Variablen. Mal sehen… :slight_smile:

Danke für die Rückmeldung!
-Chris-

Hiho,

ersteinmal danke für die Mühen die du dir gemacht hast.

Ich habe das ganze mal mit dem Amazon / Ivona TTS ausprobiert.

Die Datei wird erstellt allerdings wird sich nicht im Player abgespielt.
Die Netzwerkfreigabe habe ich erstellt, und wird im Sonos Tool auch angezeigt.

Ich erhalte bei Ausführen des folgendes Scripts :

include 'SonosBY.ips.php';
include 'ivona_tts.inc.php';

SonosBY_TTS_Alle("Das ist ein Test");  // Spielt auf allen eingetragenen Playern (in Gruppe) den Text ab (mit Zustände merken und wiederherstellen)


diese Meldung :

Notice: Undefined offset: 1 in C:\IP-Symcon\scripts\SonosBY.ips.php on line 1042

Weißt du was das sein könnte ? Verwende die 4.0 Beta auf Windows.

Die Config sieht so aus :

$SonosGroupAR[0] = array("Office","192.168.0.26","RINCON_000E58CBFFA001400","30"); 

$Sonos_Dateiordner = "C:\\IP-Symcon\\media\\sonos-sounds\\";  // Das hier eingetragene Verzeichnis muss für Sonos freigegeben werden 
$Sonos_SMBordner = "//SMARTHOMESERVER/media/sonos-sounds/";            // Hier den SMB-Pfad zur Netzwerkfreigabe eintragen ("//IPS-Server-IP/ORDNERNAME/")

LG

Moin!

Könntest du es bitte mal mit Google TTS gegenchecken? Amazon hab ich selbst noch nicht verwendet. Nur um sicher zu stellen, dass es nicht daran liegt und wir unnötig lange an der falschen Stelle suchen :slight_smile:

Die Datei wird erstellt…kannst du sie manuell im Windows abspielen? Kannst du sie manuell im Sonos abspielen (z.B. über die Windows-/Handy-App).

Hast du den SMB-Pfad mit DNS-Name oder IP-Adresse eingetragen (Skript + Sonos App)?

Grüße,
Chris

Gude!

Also das Playlisten „Problem“ hat sich zu meiner vollen Zufriedenheit aufgelöst. Funktioniert nun alles bestens - vielen Dank für die Tipps!

Bleibt jetzt leider nur noch mein evtl. spezielles Radio Problem. Ich lese die Radio Favoriten (TuneIn) via Browse Befehl aus. Heraus kommt eine Radio URL à la:

x-sonosapi-stream:s255334?sid=254&flags=8224&sn=0

Leider schaffe ich ums Verrecken nicht, diesen Stream öffnen zu lassen.
Es muss aber grundsätzlich funktionieren - da Wireshark offenbart hat, dass der SONOS Controller auch diesen Stream öffnet.

Hätte dazu evtl. auch noch jemand eine Idee wie es funktioneieren könnte? Ich habe wirklich alles versucht…

Vielen Dank

Peter

Moin!

Wie du meiner aktuellen Version entnehmen kannst, verwende ich nicht die Stream URLs über Sonos und TuneIn, sondern die direkten Stream URLs von den Webseiten der Radiostation!

Hat 2 Vorteile:
> Man muss die Sonos-RadioStream-URL nicht auslesen
> Die direkten Streams der Radiosender (ohne TuneIn) reagieren VIEL schneller und starten VIEL schneller

Also einfach die Stream URL von der Webseite des Radiosenders verwenden und wie in SonosBY beschrieben „bearbeiten“, in SonosBY eintragen und schon kannst du dich erneut freuen und zufrieden sein :slight_smile: :wink:

Beispiel aus dem Skript:

// RADIOSENDER     (Radiosender müssen nicht im Sonos eingerichtet sein, man muss nur die Stream-URL aus dem Internet heraussuchen) 
// $SonosRadiostationenAR[0] = array("NAME","URI");  // Einfach bei der Stream URL das "http" der URL durch "x-rincon-mp3radio" ersetzen 
// $SonosRadiostationenAR[0] = array("FFH","x-rincon-mp3radio://streams.ffh.de/radioffh/mp3/hqlivestream.m3u"); 

Grüße,
Chris

Hallo Chris!

Natürlich kenne ich die Doku bzw. verstehe auch den Sinn dahinter.
Mein Hintergrund ist folgender:
Ich benutze das Auslesen der Radio Stationen dazu, diese auf meinen Wandtablets darzustellen. Wenn jetzt ein Familienmitglied einen neuen Radiosender zu den Sonosfavorien packt, erscheint dieser auch syncron auf allen Tablets.

Für das Setzen dieses Radiosenders muss ich allerdings den Weg rückwärts gehen und Sonos liefert mir dann leider nur die x-sonosapi-stream Adresse.

Ist es grundsätzlich nciht möglich diesen Stream zu setzen, oder hast du es aus Gesvhwindigkeitsgründen beim Setzen nicht mit eingebaut?

Danke für deine Hilfe.

Peter

Hi!

Ich verstehe dich und deinen Wunsch. Bei IPSSonos habe ich es genauso gemacht gehabt. Aber bei SonosBY habe ich es wegen der deutlich schnelleren Reaktions-/Einschaltzeiten über die direkten Stream der Radiosender gemacht. Denn im Normalfall trägt jeder seine 3,4,5 Lieblingssender ein und dann wird alle 10 Jahre maximal etwas daran geändert.

Technisch wäre es möglich auch die Sonos-Radiosender zu verwenden und anzusprechen (siehe IPSSonos). Aber aktuell steht es nicht auf meiner 2do. Du kannst mein SonosBY aber gerne selbst um diese Funktion erweitern und ich nehme es dann mit auf.

Vielleicht kannst du dich ja doch noch mit meinem Weg anfreunden, wenn du siehst wie viel schneller es so über IPSView zu schalten/starten ist :smiley: :wink:

Grüße,
Chris

Hi Chris,

Danke nochmal für die nächtliche Unterstützung :slight_smile: Habe heute das Skript neu eingerichtet und jetzt klappts auch mit Datei abspielen, Lauter und Leiser etc …
Ich habe auch versucht eine Datei abzuspielen und wollte, dass sich der alte Zustand wiederherstellt. Sprich wenn vorher ein RadioStream lief, sollte dieser nach der Datei wieder weiterspielen. Dies habe ich mit dem Beispiel versucht:

<? 
include 'SonosBY.ips.php'; 

// Spielt in allen Räumen (in Gruppe) die Datei ab (mit Zustände merken und wiederherstellen) 
SonosBY_DateiAbspielen_Alle("WaeschetrocknerFertig.wav");  

// Spielt in bestimmten Räumen (in Gruppe) oder einzelnen Räumen die Datei ab (mit Zustände merken und wiederherstellen) 
SonosBY_DateiAbspielen_Auswahl("BadOben", "WaschmaschineFertig.mp3"); 
?>

Ich habe meinen Master im Bad (Play1) und noch ne Play1 in der Küche. Bei beiden kann ich die Datei abspielen. Der Radiostream startet danach leider nicht mehr.:confused:

Moin! gähn Das nächste Mal bitte früher fragen :smiley:

Nimm die Play:1 als Master, die du weniger im Betrieb hast. Weil, wie in der Doku vom Skript zu lesen ist, am Master KEINE Wiederherstellung des alten Zustandes erfolgt :wink:

Hast du aber z.B. Küche als Master und Bad als [1], und du spielst im Bad etwas ab (egal was) und machst dann eine Sprachausgabe oder Datei abspielen, dann wird danach das im Bad weiter gespielt, was vorher lief! Wenn nicht, machst du was falsch :stuck_out_tongue: Nimmst du „…_Alle“, dann ist [0] der Master, schreibst du aber „…_Auswahl“, dann ist immer der 1. Player/Raum den du nennst der Master. Steht aber auch im Skript im Text.

Und du hast hoffentlich nur jeweils „…_Auswahl“ oder „…_Alle“ im Skript als Befehl?! Beides nacheinander könnte Sonos verwirren :smiley:

Sollte es jetzt immer noch Probleme machen, bitte nochmal genau prüfen wie wo was und berichten :slight_smile:

Grüße,
Chris

Ok. Mit „…_Alle“ bleibt der Master (also der $SonosGroupAR[0]) danach aus. So wie du beschrieben hast. Das reicht mir jetzt mal.

Wenn ich aber mit „…_Auswahl“ das Ganze mache bleiben sie immer danach aus. Sprich …

1. $SonosGroupAR[0] = Bad; $SonosGroupAR[1] = Küche

  • auf beiden läuft Radio
  • spiele ich im Bad mit „…_Auswahl“ eine MP3 ab, bleibts danach still.
  • spiele ich in der Küche mit „…_Auswahl“ eine MP3 ab, bleibts danach still.

2. $SonosGroupAR[0] = Küche; $SonosGroupAR[1] = Bad

  • auf beiden läuft Radio
  • spiele ich im Bad mit „…_Auswahl“ eine MP3 ab, bleibts danach still.
  • spiele ich in der Küche mit „…_Auswahl“ eine MP3 ab, bleibts danach still.

Ich glaube du hast es falsch verstanden. Wenn du mit …_Auswahl eine Datei/TTS abspielst, dann musst du das so machen, damit beide Sonos das in einer Gruppe abspielen und nicht jeder für sich:
SonosBY_DateiAbspielen_Auswahl(„Bad,Kueche“, „WaschmaschineFertig.mp3“); // hier wäre Bad der Master
oder
SonosBY_DateiAbspielen_Auswahl(„Kueche,Bad“, „WaschmaschineFertig.mp3“); // hier wäre Küche der Master

-Chris-

Hi Chris,

Jop … Interpretationsproblem :wink: So funzts wie du beschrieben hast. Danke

Erst mal großes Kompliment! Die Lib funktioniert super :slight_smile:

Ein kleines Problem hätte ich noch:
Der lautsprecher in mienem Bad geht mit dem Licht aus. Wenn ich ich das Licht An mache und er Lautsprecher im Netzwerk erreichbar ist wird ein ein Stram gestartet und direkt danach die Lautstärke gesetzt. Leider spielt der Lautspreher dann nicht mit der eigestellen Lautstärke sondern lauter :frowning:
Habt ihr eine Idee?

Hi!

Wenn du das Licht ausschaltest, wird der Player dann nur auf STOP gesetzt oder komplett vom Strom getrennt?

Wenn du PLAY machst, dann wird die Lautstärke gewählt, die im Skript als „default“ eingetragen ist. Kann man sich aber auch in eine Variable legen und per WebFront anpassbar machen usw… :slight_smile:
Erst wenn diese default Lautstärke gesetzt wurde, dann kannst du eine eigene Lautstärke setzen. Sinnvoller wäre es aber, einfach direkt die richtige Lautstärke als default zu wählen…dazu ist diese Einstellung da :slight_smile:

Grüße,
Chris