Sonos Modul

Hallo,

nein. Hier scheint das „__generated.inc.php“ nicht richtig generiert worden zu sein.
Bei mir hat bei diesem Fehler immer ein neustart von IPS geholfen.

Das ist ein SOAP Fehler der bei einem Aufruf in die Box geworfen wurde.
Wenn es immer der gleiche Callstack ist, ist es vielleicht etwas, was Deine Box nicht unterstützt.
Kannst Du mehr details bereitstellen?
Ein „Expand“ auf die Meldung sollte mehr anzeigen.

Danke,
Thorsten

Moin Leute,
ich taste mich gerade an das Thema Sonos ran weil ich über Sonos ein paar Durchsagen machen möchte. Hierbei bin ich über ein paar Probleme gestolpert …

  • Eine Auflistung aller Geräte in Discovery gibt es nicht. Ich kann die Geräte nur manuell erstellen.
  • Einen Sonos Five scheint es noch nicht zu geben, zumindestens steht keiner in der Liste.
  • Einen Sonos Port scheint es auch noch nicht zu geben.
  • Eine Durchsage nur mit dem Modul scheint nicht vorgesehen zu sein … oder doch?

Wäre schön wenn ihr mir bei den ersten Hürden helft.
Übrigens grosses Lob an Thorsten für das Modul.

Moin,

Doch, das sollte eigentlich so sein:


Wenn Du sie nicht angezeigt bekommst, funktioniert es bei Dir nicht richtig.
Was ich mit vorstellen könnte:
Wenn Du Dein IPS in einem Docker laufen lässt, musst Du dafür sorgen, dass die Broadcasts durchkommen.
Testen kannst Du es mit

var_dump(YC_SearchDevices(IPS_GetInstanceListByModuleID('{FFFFA648-B296-E785-96ED-065F7CEE6F29}')[0], 'urn:schemas-upnp-org:device:ZonePlayer:1'));

Stimmt:

        $knownModels = [
            ['caption' => 'Arc',         'value' => 'Arc'],
            ['caption' => 'Amp',         'value' => 'Amp'],
            ['caption' => 'Beam',        'value' => 'Beam'],
            ['caption' => 'Connect',     'value' => 'Connect'],
            ['caption' => 'Connect:Amp', 'value' => 'Connect:Amp'],
            ['caption' => 'Move',        'value' => 'Move'],
            ['caption' => 'One',         'value' => 'One'],
            ['caption' => 'One SL',      'value' => 'One SL'],
            ['caption' => 'Play:1',      'value' => 'Play:1'],
            ['caption' => 'Play:3',      'value' => 'Play:3'],
            ['caption' => 'Play:5',      'value' => 'Play:5'],
            ['caption' => 'Playbar',     'value' => 'Playbar'],
            ['caption' => 'Playbase',    'value' => 'Playbase'],
            ['caption' => 'Ray',         'value' => 'Ray'],
            ['caption' => 'Roam',        'value' => 'Roam'],
            ['caption' => 'SYMFONISK',   'value' => 'SYMFONISK']
        ];

Ich brauche aber zur Sicherheit was da exakt zurückkommt (siehe oben):

Wichtig ist das [„Model“]"

Du meinst, dass das Modul Text in Sprache umwandelt?
Das ist bewusst so.
Aber Du kannst ja einfach per TTS Lösung (da gibt es ja diverse) ein MP3 erzeugen und abspielen lassen. Hat mehrere Vorteile/Gründe:

  1. Du kannst die Lösung Deiner Wahl verwenden
  2. Das modul steuert nur Features von SONOS. Und TTS gehört nunmal nicht dazu.
  3. Würde die Komplexität nur unnötig erhöhen.

Es gibt aber z.B. auch ein Polly Modul, das sich wunderbar integrieren lässt. :wink:

:face_with_hand_over_mouth: Danke.

Gruß,
Thorsten

Moin Thorsten und Danke für deine schnelle Reaktion. :+1:

  • Mein IPS 6.2 läuft auf einem WIN10 Rechner
    Den Befehl teste ich aber trotzdem.
  • Den Output zu den neuen Geräten liefere ich.
  • Deine Einstellung zum TTS kann ich nachvollziehen.
    Gerne würde ich was ohne Kosten haben und bestenfalls ohne Cloud. Hat wer eine Tip für mich?

Job 1 … der Output vom Five und Port

array(8) {
[„RINCON_347E5CE17C9401400“]=>
array(5) {
[„Name“]=>
string(6) „Küche“
[„Model“]=>
string(4) „Five“
[„RINCON“]=>
string(24) „RINCON_347E5CE17C9401400“
[„IPAddress“]=>
string(14) „192.168.178.82“
[„Invivble“]=>
bool(false)
}
[„RINCON_48A6B825858E01400“]=>
array(5) {
[„Name“]=>
string(10) „Wohnzimmer“
[„Model“]=>
string(4) „Port“
[„RINCON“]=>
string(24) „RINCON_48A6B825858E01400“
[„IPAddress“]=>
string(14) „192.168.178.83“
[„Invivble“]=>
bool(false)
}
}

Job 2 … das Ergebnis bezüglich Discovery sieht mau aus

array(0) {
}

Bei meinem dritten Punkt bin ich noch nicht weiter.

  • Modul Text to speech (AWS Polly) von der SYMCON GmbH erfordert einen AWS Account und ist nach einem Jahr kostenpflichtig … richtig?
  • Modul VoiceRSS von Michael Tröger ist ein „offline“ Modul mit 350 freien Anfragen pro Tag … richtig?

Sind beide Module nutzbar um Meldungen und Durchsagen über Sonos auszugeben?
Wäre bei Einstiegshilfe oder Alternativen dankbar.

ziemlich am Anfang war mal die Frage nach Fade In und Fade Out. Ist dies inzwischen möglich? Ich finde nichts dazu.

Ich möchte gerne die Geister-Player löschen.
Ich habe schon versucht, das Modul zu deinstallieren und wieder zu installieren.
Als folge tauchen immer mehr Geisterplayer auf, welche dann beim Auswählen eine Fehlermeldung generieren.
Ich habe 4 Sonos Player im Einsatz.
Ich verwende die aktuellste Version Symcon und Sonos Modul.
Weis jemand Rat?

image

Hallo,

nun ja, die Liste der verfügbaren Player besteht aus allen Instanzen des Moduls.
Wenn Du die Discovery Instanz öffnest, sollen die nicht erreichbaren player rot hinterlegt sein.

Ich würde erwarten, dass die „Geisterplayer“ verschwinden, wenn Du die zugehörigen Instanzen in IPS löschst.

Gruß,
Thorsten

Guten Morgen!

Ich versuche mp3-files mit SNS_PlayFiles abzuspielen und komme nicht weiter und erhoffe mir hier Hilfe.

Folgender Sachstand:

Sonos-Modul erfolgreich installiert. Player laufen und lassen sich über das Webfront steuern.

Per Script kann ich auch mit


$ID = 57799;

SNS_Play($ID);

SNS_Pause($ID);

Die entsprechenden Player steuern, wobei 57799 die ID eines Players ist.

Ich habe nun eine Datei per winSCP auf der Symbox abgelegt und zwar hier:
/var/lib/symcon/webfront/user/

Ferner konnte ich mit Polly eine Testdatei ebenfalls per Skript dort ablegen. Zugriff funktioniert also.

Wenn ich nun aber den folgenden Befehl ausführe:


$ID = 57799; //Sonosplayer Küche

SNS_PlayFiles ($ID, json_encode (array("http://192.168.1.50:3777//user/test.mp3") ), 10);

passiert leider gar nichts. Keine Fehlermeldung aber auch kein Ton.

Kann mir jemand hier einen Tipp geben?

Danke im Voraus.

Hallo
Ich wuerde das 2. Slash wegnehmen.
Wenn ich bei mir auch 2 Slashes benutze passiert hier auch nichts.

That’s it!!!

Es funktioniert!

Danke!!!

Sonos Modul erneut installiert.
Im Discovery sind meine 4 Player ersichtlich, keiner ist rot…
Wenn ich aber im WebFront eine Gruppenzuordnung machen will tauchen diese ‚Geisterplayer‘ auf, welche schon lange gelöscht sind. Zum Teil mehrmals derselbe Namen, wahrscheinlich so oft wie ich das Modul schon installiert und deinstalliert habe…
Hier das ganze Auswahlmenü…
image
image
image

Hallo,

kann sein. Ich habe mir gerade nochmals durchgelesen, was ich da so mache und um Altlasten kümmere ich mich scheinbar nicht. Auch wenn ich dachte, dass ich dies tue…

Dieses Script löscht alle „Associations“ (also die auswählbaren Instanzen) und fügt die hinzu, die aktuell Koordinator sind. So ist es dann richtig:

<?php

$Associations = IPS_GetVariableProfile('SONOS.Groups')['Associations'];

foreach ( $Associations as $Association ){
  if ( $Association['Value'] != 0 ){
    print "remove " . $Association['Value'] . ": ". $Association['Name'] . "\n";
    IPS_SetVariableProfileAssociation('SONOS.Groups', $Association['Value'], '', '', -1);
  }
}

$instances = IPS_GetInstanceListByModuleID('{52F6586D-A1C7-AAC6-309B-E12A70F6EEF6}');

foreach ( $instances as $instance ) {   
  if ( SNS_IsCoordinator($instance) == true ) {
    print "add " . $instance . ": ". IPS_GetName($instance) . "\n";
    IPS_SetVariableProfileAssociation('SONOS.Groups', $instance, IPS_GetName($instance), '', -1);
  }
}

Mal sehen, ob ich das irgendwo einbauen kann, dass es immer mal wieder automatisch aufräumt…

Gruß,
Thorsten

Hallo, bei hat es funktioniert. Die einzelnen Geräte waren scho 3 mal in der Liste drin.

Wir haben in einem WLAN zwei Controller, allerdings wird immer nur der eine über den Konfigursator gefunden.
@Kugelberg, kannst du mir da helfen?

Grüße,
Kai

Das wäre cool. Jedenfalls hat das Script mein Arsenal an SONOS-Playern drastisch reduziert und jetzt stimmt der Soll-Ist Bestand :joy:

Hallo,

seit kurzem funktioniert der Befehl

SNS_SetPlaymode

nicht mehr; es kommt die Meldung

Warning:
Fatal error: Uncaught Exception: Error during Soap Call: UPnPError s:Client 712 (ERROR_AV_UPNP_AVT_UNSUPPORTED_PLAY_MODE) in /var/lib/symcon/modules/.store/de.kugelberg.sonos/libs/sonosAccess.php:801
Stack trace:
#0 /var/lib/symcon/modules/.store/de.kugelberg.sonos/libs/sonosAccess.php(706): SonosAccess->processSoapCall(‚/MediaRenderer/…‘, ‚urn:schemas-upn…‘, ‚SetPlayMode‘, Array)
#1 /var/lib/symcon/modules/.store/de.kugelberg.sonos/SonosPlayer/module.php(2020): SonosAccess->SetPlayMode(‚SHUFFLE‘)
#2 /var/lib/symcon/modules/.store/de.kugelberg.sonos/SonosPlayer/module.php(2637): SonosPlayer->SetPlayMode(4)
#3 /-(3): SonosPlayer->RequestAction(‚PlayMode‘, 4)
#4 {main}
thrown in /var/lib/symcon/modules/.store/de.kugelberg.sonos/libs/sonosAccess.php on line 801
Abort Processing during Fatal-Error: Uncaught Exception: Error during Soap Call: UPnPError s:Client 712 (ERROR_AV_UPNP_AVT_UNSUPPORTED_PLAY_MODE) in /var/lib/symcon/modules/.store/de.kugelberg.sonos/libs/sonosAccess.php:801
Stack trace:
#0 /var/lib in /var/lib/symcon/scripts/35336.ips.php on line 7

Selbst über

RequestAction

kommt dieselbe Meldung.

Wie lässt sich der Fehler beheben?

Vielen Dank und Grüße…!

Hallo,

ich habe komische Effekte beim Abspielen von (langen) MP3 Dateien. Ich will gerne abends als Hintergrundgeräusch Wellenrauschen einspielen. Das startet ich mit dem Befehl:

SNS_PlayFiles(14351, "["http://symconserver:3777/user/musik/Wellenrauschen.mp3\„]“,„15“);

Die MP3 Datei ist ca. 3h lang.

Zum einen kommt das Skript, das nur den obigen Befehl enthält nicht mehr zurück. Der Sound startet auf dem angewählten Lautsprecher, aber das Skript zeigt nur die „Sanduhr“ und beendet sich nicht wieder.

Das Wellenrauschen läuft dann immer so ca. 50 Minuten und endete danach. Die Datei ist allerdings wie gesagt ca. 180 Minuten lang. Keine Fehlermeldung o.ä. im Log zu finden.

Hat jemand eine Idee?

Vielen Dank
Ralf

Hallo,

ja. Ich habe das damals so gebaut, dass in der Funktion PLayFiles darauf gewartet wird, dass die Datei abgespielt wurde, damit danach dann wieder das vorherige abgespielt werden kann.
Ich hatte dazu auch schon mal die eine oder andere Diskussion, ob und wie man das besser machen kann, aber das ist nicht so einfach möglich.

Das ist Grund dafür, dass das script nicht zurückkommt. Vorher schlägt halt die maximale Laufzeit für ein Script zu…
Warum es nach 50 Minuten aufhört, habe ich keine Ahnung. Wäre reine Spekuation.

Ich würde Dir ein anderes Vorgehen empfehlen (unter der Annahme, dass Du nicht die Vorhergehende Wiedergabe fortsetzen möchtest).
Du kannst mit SNS_SetTransportURI sagen, was abgespielt werden soll. Nichst anderes passiert im PlayFiles. Danach nicht vergessen die Wiedergabe zu starten:

SNS_SetTransportURI(14351, 'http://symconserver:3777/user/musik/Wellenrauschen.mp3');
SNS_Play(14351);

Gruß,
Thorsten