Sonos Modul

Hallo Zusammen!

Frage: Gibt es eine Funktion die eine laufende Musik langsam lauter ( ab EIN) und beim Abschalten langsam leiser (bis AUS) machen kann? Zeitraum einstellbar wäre cool.

Hintergrund: Ich möchte sobald jemand das WC betritt Musik spielen lassen. Es sollte aber nicht so abrupt ein und ausgeschalten werden.

RamptoVolume geht ja angeblich nur ein paar Sekunden…

Habe das von Burkhart gefunden:

  
[IMG]https://www.symcon.de/forum/images/misc/quote_icon.png[/IMG] Zitat von [b]PHPSonos Doku[/b]                                      
[b]RampToVolume($ramp_type, $volume)
[/b]
Function Parameters:
string $ramp_type: Ramps Volume to $volume using the Method mentioned in $ramp_type as string: 
"SLEEP_TIMER_RAMP_TYPE" - mutes and ups Volume per default within 17 seconds to desired Volume     
"ALARM_RAMP_TYPE" - Switches audio off and slowly goes to volume     
"AUTOPLAY_RAMP_TYPE" - very fast and smooth; Implemented from Sonos for the autoplay feature. 

string $volume: DesiredVolume
                      
     
 

Das haut irgendwie nicht hin:

Korrigiere mich! Es geht doch, aber es dauert nur gefühlte 5 Sekunden und sicher nicht 17 Sekunden.

  
    $name = "Gästebad";

   SNS_SetGroup(25480, 0);
    SNS_SetPlaymode(25480, 4);
    SNS_SetPlaylist(25480, $name);
    SNS_RampToVolume(25480, 1, 20);
    SNS_Play(25480);

Das Problem ist das „Fade Out“.

 SNS_RampToVolume(25480, 2, 0);    



Danke für eure Hilfe!

lg Chris

Wenn du dir die Lautstärkeänderung parallel in der SONOS App ansiehst, dann sieht man, dass es in der Tat ca. 17 Sekunden dauert. In den ersten Sekunden ist es jedoch noch so leise, dass man nichts hört.

Beim Ausblenden musst du auch den Modus 1 nehmen:

SNS_RampToVolume(25480, 1, 0);

Guten Morgen und Danke Burkhart!

Eine etwas längere Variante gibt es nicht? Ich denke so an 5 Minuten für einen Wecker…

Update: Ach, mein Fehler war wahrscheinlich das ich gleich nach dem RamptoVolume ein SNS_Stop nachgeschoben habe?
Recht das Volume Fade Out auf 0% als AUS?

lg

Moin Thorsten,

ich habe noch unten angeführten Fehler (relativ zyklisch) im Protokoll - vielleicht kannst Du ja mal schauen. Sonst funktioniert das neue Modul wunderbar. :slight_smile:

Ciao
HerbertF

Hallo,

bis Michael etwas gefunden hat, habe ich mal auf die Schelle einen einfachen Check hinzugefügt, ob es sich auch wirklich um ein Sonos Device handelt:


if ($discoveredDevice['Location'] == 'http://' . $discoveredDevice['IPv4'] . ':1400/xml/device_description.xml') {
...
}

nicht schön, sollte aber den Zweck erfüllen.
Sobald die SSDP Anfrage „sauber“ ist, baue ich es wieder aus, vielleicht.

Gruß,
Thorsten

Hallo,

nun ja, IPS erreicht Deine Boxen nicht.
Spontan würde ich ein nicht so richtig stabiles Netzwerk vermuten. In dem Screenshot ist auch (fast) immer die „Terrasse“ zu sehen…

Kannst Du mal die Meldung(en) „erweitern“? Passiert das immer an der gleichen Stelle? Im „Update Status“?

Danke,
Thorsten

Hallo,

dem würde ich zustimmen.
Wenn eine Box noch Koordinator ist und ich versuche sie einer Gruppe zuzuordnen, würde ich diesen Fehler erwarten.

Klar, man könnte zuerst die member Boxen machen, dann die Koordinatoren, aber was ist, wenn eine Box nicht mit drin ist?
das ist ganzschön rumgefummel…
Das muss ich mir mal in Ruhe bei einem Glas Wein überlegen…

Gruß,
Thorsten

Hallo,

nur mal so aus Interesse:
Hast Du die aktuelle Version vom Modul?

Ich hätte die Fehlermeldung „This device does not support NightMode“ erwartet:

Nicht, dass das unter Windows nicht geht…

Gruß,
Thorsten

Ja, das ist kompliziert: da fallen einem viele Situationen ein. Mein Extremfall wäre: A kooriniert(->) B, C -> D, E ->F. Und der Play-Auftrag lautet A -> (C und E).

Wenn du mehr Wein brauchst, melde dich :slight_smile:

Hi Thorsten,
richtig, aktuell spinnt das Netzwerk etwas. Ich bin schon am optimieren :banghead:
Ciao
HerbertF

bin gerade am SNS_Play Files, wenn ich eine Sonos anspreche geht es, wenn ich in einem Script mehrere hintereinander anspreche geht nur die erste, deshalb hab ich es mit der Gruppierung probiert, ich bekomme aber immer eine Fehlermeldung und weiß nicht was ich mit der Anfangen soll.
Es kommt auch vor, dass das abgespielte File (30 Sec) auf einer Box nur 3 sec. läuft

SNS_PlayFilesGrouping(42500 , json_encode( array( 20338 => array( "volume" => 0),
                                                 30877 => array( "volume" => 0),
                                                 47889 => array( "volume" => 0) ) ), json_encode(array("//hw18/FBHW18/Musik/rama.mp3")), 0 );

Hallo,

ich habe jetzt mal etwas eingebaut.
Wenn „Detaillierte Informationen“ angeschaltet ist, wird jetzt auch ein Media File angelegt.
Ich fülle es einfach nur mit dem Inhalt von „Cover URL“.

Falls jemand feststellt, dass es negativen Einfluss auf das „Update Staus“ hat, würde ich noch einen zusätzlichen Schalter einbauen, mit dem man es separat ausschalten kann.

Gruß,
Thorsten

Ist das schon online, ich finde bei mir kein Update?

Im Englischen fehlt im übrigen noch der Name des Moduls und die Beschreibung, da steht zur Zeit nichts im Modul Store.

Hallo,

Eigentlich schon.
Ich habe die englische Beschreibung noch hinzugefügt und nochmals eingereicht.

Gruß,
Thorsten

Hallo Thorsten,

ich habe folgende Situation:

Wohnzimmer (2x Play1) und Wintergarten (1x Play5) sind gruppiert. Büro, Bad und Schlafzimmer sind nicht gruppiert.
Wenn es an der Haustüre läutet, sollen alle Räume gruppiert und ein Gong abgespielt werden. Danach sollen Wohnzimmer und Wintergarten wieder eine Gruppe bilden und die restlichen Räume wieder Einzelräume werden.
Wie weiß ich jetzt, wer der Koordinator ist?
Teilweise gruppiere ich in der SONOS-App, hier kann ich - soweit ich weiß - den Koordinator nicht festlegen.

LG Peter

Hallo,

Ja, das ist nicht schön.
Es ist aber so, dass die Box, die man zuerst in APP auswählt der Koordinator ist. Zumindest habe ich das Gefühl.

Bei mir mache ich es so:
Ich habe für mich definiert, dass die Küche der „Hauptkoordinator“ ist. --> Alle Lautsprecher werden der Küche zugeordnet.
Dann habe ich für ein paar Lautsprecher, Sonderbehandlungen:

[ul]
[li]Wenn der Fernseher angeht, geht wird die Box im Wohnzimmer aus der Gruppe raus.
[/li][li]Wenn der Fernseher ausgeht, wird die Box dem Koordinator Küche zugeordnet.
[/li][li]Am Abend (ich glaube 20:00) werden alle Boxen im Obergeschoss aus der Gruppe genommen, und im Bad mache ich direkt ein SetRadio(), damit ich am Morgen per Knopfdruck an der Box anschalten kann
[/li][li]Morgens um 7:30 werden die Boxen im OG dem Koordinator Küche zugeordnet.
[/li][/ul]

–> eigentlich Gruppiere ich ausschließlich über IPS.

Wenn ich doch mal etwas über die App mache, wird das Meiste dann automatisch wieder korrigiert.

In Deinem Fall würde ich (ausgehend davon, dass Wohnzimmer der Koordinator als StereoPaar ist) das Ganze mit


SNS_PlayFilesGrouping(4711 , '{"4713":{"volume":30},"4714":{"volume":30},"4715":{"volume":30}}', '["//192.168.1.199/pi-share/Doorbell.mp3"]', 30 ); 

versuchen.


ObjectID | Sonos Lautsprecher
---------+-------------
4711     | Wohnzimmer
---------+-------------
4712     | Wintergarten 
---------+-------------
4713     | Büro
---------+-------------
4714     | Bad 
---------+-------------
4715     | Schlafzimmer 

Das würde auf der Gruppe vom Wohnzimmer abspielen und Büro, Bad und Schlafzimmer hizufügen.
Da der Wintergarten eh in der Gruppe ist sollte das funktionieren.

Gruß,
Thorsten

Nach dem heutigen Update habe ich leider folgenden Fehler:

Hat jemand eine Idee?

Bitte ein Mal die Fehlermeldung erweitern, damit man sehen kann an welcher Stelle im UpdateStatus der Fehler kommt.

Danke,
Thorsten

Sorry, klar…
Der Sleeptimer ist das Problem scheinbar.
Es handelt sich um eine Sonos Play 1

 01/09/2020, 07:15:24 PM | TimerPool | Sonos Schlafzimmer (Sonos Update Status): <br />
<b>Fatal error</b>:  Uncaught Exception: Error during Soap Call: UPnPError s:Client 800 (UNKNOWN) in /var/lib/symcon/modules/.store/de.kugelberg.sonos/libs/sonosAccess.php:740
Stack trace:
#0 /var/lib/symcon/modules/.store/de.kugelberg.sonos/libs/sonosAccess.php(272): SonosAccess->processSoapCall('/MediaRenderer/...', 'urn:schemas-upn...', 'GetRemainingSle...', Array)
#1 /var/lib/symcon/modules/.store/de.kugelberg.sonos/SonosPlayer/module.php(1768): SonosAccess->GetSleeptimer()
#2 /var/lib/symcon/scripts/__generated.inc.php(127): SonosPlayer->updateStatus()
#3 /-(1): SNS_updateStatus(38471)
#4 {main}
  thrown in <b>/var/lib/symcon/modules/.store/de.kugelberg.sonos/libs/sonosAccess.php</b> on line <b>740</b><br />


Habe das mit dem Koordinator in der SONOS-App mal geprüft.
Es ist tatsächlich so, dass jene Box der Koordinator ist, welche zuerst ausgewählt wird.
Öffnet man z.B. zuerst den Raum Wohnzimmer und fügt dann den Wintergarten hinzu, wird Wohnzimmer als Koordinator festgelegt.
Führe ich es umgekehrt durch, also zuerst Wintergarten auswählen und mit dem Haken das Wohnzimmer hinzufügen, so ist der Wintergarten der Koordinator.
Das ist eine sehr wichtige Erkenntnis, da nämlich jetzt auch dein zuletzt gesandter Code einwandfrei funktioniert und keine Fehler mehr auftreten :+1::+1:

Danke für den Hinweis, jetzt funktioniert alles wie gewünscht!

LG Peter