Sonos Modul

Funkt bei mir - Klasse !

Moin,

erst mal vielen Dank für das Super geniale Modul! Gäbe es so was tolles nicht, hätte ich kein Sonos. :slight_smile:

Ich benutze zur Sprachausgabe einen kleinen Server-Dienst, der MP3-Dateien erstellt.
Das hat bis gestern auch sehr gut funktioniert. Seit dem ‚hängt‘ mein Script im SNS_PlayFiles fest.
Es wird immer die gleiche Datei abgerufen und in einem Endlosen Loop wiedergegeben.
Bis man auf dem Speaker (oder in der Sonos App) auf Pause drückt. Dann wird das Script weiter ausgeführt:


  $spk_W1 = 46273 /*[SONOS\Sonos P:1 - W1]*/;
  $to_say = [];
  
  $txt = "Das ist ein Test.";
  array_push($to_say, "http://symcon:3778/speak.mp3?".base64_encode($txt));
  
  IPS_LogMessage("SPK", "Start playing...");

  SNS_PlayFiles($spk_W1, $to_say, 0);

  IPS_LogMessage("SPK", "Done playing.");

Mit SNS_PlayMode habe ich es schon versucht, das hat nichts geändert. Gruppen verwende ich aktuell nicht.
Könnte mir jemand da eventuell einen Tipp gehen?

Ich habe natürlich nichts geändert. :smiley:
[ Okay, bis auf Symcon Aktualisiert. Das Sonos Modul aktualisiert. Einen neuen Lautsprecher eingebunden. Und viele andere Dinge an die ich mich nicht mehr erinnern kann ]

Thx,
Worta.

Hi,

nur um es gefragt zu haben:
Dass der „kleine Server-Dienst“ die Datei richtig erzeugt, hast Du überprüft?

Gruß,
Thorsten

Moin moin,

Ja - das habt ich geprüft. Der gleiche Fehler tritt mit statischen MP3’s auf, die ich von Symcon ausliefern lasse. Wie z.B. meinem Türklingel Sound.

Grüße,
Worta.

Gesendet von meinem Pixel XL mit Tapatalk

Hi Thorsten,

scheinbar hat Antenne Thüringen etwas geändert:

Kannst Du bitte die URL für Antenne Thüringen auf:

http://stream.antennethueringen.de/live/mp3-192/

ändern?

Die für das zugehörige Radio TOP40 auf:

http://stream.radiotop40.de/live/mp3-192/

BESTEN DANK!!!

Ciao
herbertf

Hi,

done. --> 1.5.1

Gruß,
Thorsten

Hallo

Ich finde das Sonos Modul sehr gelungen.

Ich hätte einen Vorschlag für eine mögliche Erweiterung.

Ich habe bei mir Funktionen geschaffen welche beliebige in Sonos aktuell abgespielte Streams in einem Favoriten String speichern kann. Egal ob Radio, Amazon Prime Radio, Spotify Radio…

Es gibt folgende Funktionen:

  • AddFavorite (speichert den aktuellen Stream in der Favioriten Liste ab)
  • DelFavorite (löscht den aktuell abgespielten Stream, wenn vorhanden aus den Favoriten)
  • Favorite +1 (geht zum nächsten Favoriten)
  • Favorite -1 (geht zum vorigen Favoriten)
  • PlayFavorite (spielt den unter Namen angegeben Favoriten ab)

Abgelegt werden diese Favoriten in einen Textstring:

swr3 | x-sonosapi-stream:s24896?sid=254&flags=32
Best Of Prime Music | x-sonosapi-radio:catalog%2fstations%2fA3DZ777QVRCLSD%2f%23chunk-NulXPEysSvuacgj6TB9P1g?sid=201&flags=8300&sn=9

Beispielcode kann ich gerne bei Bedarf zur Verfügung stellen.

Grüße Heinz

Hallo,

wenn ich einen Radiosender vorgeben will, wie nutzte ich dann

SNS_SetRadio(integer $InstanceID, string $radio)

Was beinhaltet dabei „$radio“?
Ich habs mit der url des MP3-Streams probiert? Oder geht damit nur auf die im Modul vorgebenen Sender zuzugreifen. Wenn ja, gibts ne Alternative bzw. ein Workaround? Mit SNS_Playfiles bekomme ich es auch nicht hin.

Gruß
hardlog

Bei mir steht da zb „KRONEHIT Digital“ drinnen das ist bei mir so bei den Sonos-Favoriten hinterlegt.

Hallo,

da steht der Name des Senders drin.
Entweder aus den ausgelieferten Sendern oder aus TuneIn Favoriten. Letzeres ist das, was Du in der Sonos App unter „Radio vonTuneIn“->„Meine Radiosender“ findest.

Gruß,
Thorsten

Ich wollte mit


$ansage = IVNTTS_saveMP3(20626 /*[Geräte\TTS\Ivona TTS Hans Deutsch Männlich]*/,"Hallo, es ist 14 Uhr und 14 Minuten.");
 var_dump($ansage);
SNS_PlayFiles(28677 /*[Geräte\Heimkino\Audio\Sonos\Sonos Bad]*/ , array($ansage), 0); 

etwas ausgeben.
Dabei bekomme ich aber folgende Fehlermeldung:


Fatal error:  Uncaught exception 'Exception' with message 'File (https://123456789.ipmagic.de/user/sonos/ivona/1e1558b08a47253267a3eea2c8af3022.mp3) 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:442
Stack trace:
#0 /var/lib/symcon/scripts/__generated.inc.php(3584): Sonos->PlayFiles(Array, 0)
#1 /var/lib/symcon/scripts/14951.ips.php(4): SNS_PlayFiles(28677, Array, 0)
#2 {main}
  thrown in /var/lib/symcon/modules/SymconSonos/Sonos/module.php on line 442
Abort Processing during Fatal-Error: Uncaught exception 'Exception' with message 'File (https://123456789.ipmagic.de/user/sonos/ivona/1e1558b08a47253267a3eea2c8af3022.mp3) 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:442
Stack trace:
#0 /var/lib/symcon/scripts/__generated.inc.php(3584): Sonos->PlayFiles(Array, 0)
#1 /var/lib/symcon/scripts/14951.ips.php(4): SNS_PlayFiles(28677, Array, 0)
#2 {main}
  thrown
   Error in Script /var/lib/symcon/modules/SymconSonos/Sonos/module.php on Line 442

Wenn ich die URL in einem Browser eingebe wird das MP3 normal abgespielt.

Was mache ich denn da falsch bzw. wo liegt der Fehler?

Hallo,

Ich habe versucht nur sinnvolle Dateien zugelassen. Und (warum auch immer) gehört alles mit https:// nicht dazu. Ich habe nur http:// als sinnvoll erachtet.
Müsste ich bei Gelegenheit anpassen…

könntest Du mal in einem Script versuchen https direkt auszugeben?


include_once("../modules/SymconSonos/Sonos/sonosAccess.php");
$sonos = new SonosAccess(<SONOS IP>);
$sonos->SetAVTransportURI("https://URL.to.file/bla/file.mp3");
$sonos->Play();


Dann muss ich nicht testen ob SONOS das unterstützt.

Gruß,
Thorsten

Das funktioniert es wird was abgespielt.

Das wäre super.

Hallo,

bin schon seit einem Jahr ein stiller Mitleser und freue mich immer über eure tollen Entwicklungen.
Das Sonos Modul funktioniert super, genau das was ich gesucht habe.

Habe eine kleine Anregung zu dem Sonos Modul zu den Statutsbuttons. Die Text-Beschriftung sieht im WFE nicht unbedingt besonders Chic aus. Bei mir habe das Variablenprofil angepasst, indem ich die Beschriftigung durch UTF-8 Sonderzeichen ersetzt habe. Sieht so aus:

2017-02-21 18_48_56-Haus.png

2017-02-21 18_48_18-Profile.png

Symbole sind: :rewind: ► ❚❚ :black_medium_square: :fast_forward: :hourglass: (zum Kopieren)

Würde mich freuen, wenn die Änderung angenommen wird :slight_smile:

Unterstütze auch gerne wenn die UTF-8 Codes gebraucht werden, such sie gerne raus.

Grüße Prometheus

Hallo,

find ich gut, hatte ich auch kurz drin.

Wird im Webfront auch gut angezeigt, aber in der Console kommen nur ? an.

Daher habe ich es wieder entfernt.

Kann mit jemand sagen, was ich in der module.php eintragen muss, damit es richtig im Profil ankommt?


        $this->RegisterProfileIntegerEx("Status.SONOS", "Information", "", "",   Array( Array(0, "prev",       "", -1),
                                                                                        Array(1, "play",       "", -1),
                                                                                        Array(2, "pause",      "", -1),
                                                                                        Array(3, "stop",       "", -1),
                                                                                        Array(4, "next",       "", -1),
                                                                                        Array(5, "transition", "", -1) ));

Ach ja, https geht jetzt bei PlayFiles( ).

Gruß,
Thorsten

:smiley: :loveips: Vielen Dank.

Hallo,

anscheinend bin ich blind - ich suche die Info wie ich ein Sonos Stereopaar einbinde. Dabei sind ja 2 IP Adressen vorhanden, erstelle ich dann einfach eine Sonos Instanz mit einer der beiden IP Adressen?

Wenn ich dann diese Anspreche mit nur der einen IP, wird dann dennoch die Musik auf beiden Geräte ausgegeben?

Danke für eure Hilfe.

Hallo,

ja, eine der beiden muss eingebunden werden. Aber welche?!
–> http://<sonos-ip>:1400/status/topology:


Da tauchen dann beide auf. Einer von denen ist als „Coordinator“ gekennzeichnet. Der ist ist.

Falls beide ein „false“ haben, hängt Dein Stereopaar in einer Gruppe. Dann einfach rausnehmen…

Wenn Du den falschen nimmst, bekommst Du exceptions. Man kann kein Play() oder so etwas auf dem Passiven Teil ausführen.

Gruß,
Thorsten

Hallo Thorsten,

danke für die schnelle Hilfe, hat prima geklappt.

Leider habe ich da ein weitere Problem, ich versuche auf den Schlafzimmer Sonospaar eine Playliste wiederzugeben - diese ist jedoch eine Spotify Playliste, die als Favorite abgelegt ist.

Geht das überhaupt?

Danke für deine/eure Hilfe :).

Ich würde gerne die Eingangsquelle bei einem Sonos Connect auf Audio Component In schalten. Geht das irgendwie von IP-Symcon aus?