29-04-2014, 13:36:22
(Dieser Beitrag wurde zuletzt bearbeitet: 29-04-2014, 15:59:05 von netsloh.)
Bis jetzt sind die Playlisten immer heile geblieben. Allerdings decke ich nicht den Fall ab, dass in zwei Räumen unterschiedliche Musik läuft, zwischendrin die Nachricht abgespielt wird und danach wieder die Musik von zwei Räumen zurückgeschrieben wird. Kommt bei uns so gut wie nie vor - ist denke ich aber auch ohne Problem machbar.
Ich nutze für das Gruppieren bei Messages allerdings nicht die Standardfunktion aus der Sonos2.php, weil durch das Gruppieren die aktuelle Lautstärke pro Gerät und der Mute Status verloren gehen. Daher speichere ich mir den Status pro Gerät weg und schreibe ihn dann wieder zurück (könnte man mit der Playlist ja auch so machen).
case 'groupalarm':
foreach ($sonoszone as $player => $ip)
{
$sonos = new PHPSonos($ip);
$save_Mute =$sonos->GetMute($ip);
$save_Vol = $sonos->GetVolume($ip);
}
$masterrincon = getRINCON($sonoszone[$zonen]);
foreach ($sonoszone as $zone => $ip)
{
if($zone != $_GET['zonen']) {
$sonos = new PHPSonos($ip);
$sonos->SetAVTransportURI("x-rincon:" . $masterrincon);
}
}
foreach ($sonoszone as $player => $ip)
{
$sonos->SetVolume($save_Vol);
$sonos->SetMute($save_Mute);
}
break;
Ich habe keine Fritzbox, daher kann ich an der Stelle leider nicht weiterhelfen. Wenn du es hinbekommst: Ich habe die Mute Funktion angepasst, damit sie zum einen nicht mehrfach aufgerufen wird (sonst gibt's unschöne Aussetzer) und zum anderen wegen der Lautstärke. Ich speichere mir jetzt einfach die Ursprungslautstärke weg, setze die Lautstärke dann fix auf 5 (hat mir sonst zu lange gedauert) und regle dann mit ramptovolume wieder auf die gespeicherte Lautstärke ein:
if($_GET['mute'] == 'false') {
$MuteStat = $sonos->GetMute();
If($MuteStat == 'true') {
$SaveVol = $sonmaster->GetVolume();
$sonos->SetVolume(5);
$sonos->SetMute(false);
$sonos->RampToVolume($rampto, $SaveVol);
}
}
else if($_GET['mute'] == 'true') {
$sonos->SetMute(true);
$SaveVol = $sonmaster->GetVolume();
$sonos->SetVolume($SaveVol);
}
PS: Ich setze unten auch bei Mute = true die vorher gespeicherte Lautstärke zurück um folgendes abzufangen: Mute = True wird kurz nach Mute = false gesetzt und die Endlautstärke mit ramptovolume ist noch nicht erreicht.
Dazu der Anwendungsfall Badezimmer: Unser Play:1 ist zwar immer in der Sonos Hauptgruppe und spielt deren Playlist steht aber im Default auf Mute = true. Betritt jemand das Badezimmer (Türsensor), wid die Mute = False Funktion ausgelöst und das Hauptlicht eingeschaltet. Beim Verlassen des Badezimmers (über UP Schalter), wird das Hautplicht ausgeschaltet und Mute = True gesetzt. Wenn man jetzt bsp. kurz etwas im Badezimmer sucht und den Raum schnell wieder verlässt, ist die Endlautstärke noch nicht erreicht und wird somit falsch für den nächsten Aufruf abgespeichert. Daher das zusätzliche Zurücksetzen...
Ich nutze für das Gruppieren bei Messages allerdings nicht die Standardfunktion aus der Sonos2.php, weil durch das Gruppieren die aktuelle Lautstärke pro Gerät und der Mute Status verloren gehen. Daher speichere ich mir den Status pro Gerät weg und schreibe ihn dann wieder zurück (könnte man mit der Playlist ja auch so machen).
case 'groupalarm':
foreach ($sonoszone as $player => $ip)
{
$sonos = new PHPSonos($ip);
$save_Mute =$sonos->GetMute($ip);
$save_Vol = $sonos->GetVolume($ip);
}
$masterrincon = getRINCON($sonoszone[$zonen]);
foreach ($sonoszone as $zone => $ip)
{
if($zone != $_GET['zonen']) {
$sonos = new PHPSonos($ip);
$sonos->SetAVTransportURI("x-rincon:" . $masterrincon);
}
}
foreach ($sonoszone as $player => $ip)
{
$sonos->SetVolume($save_Vol);
$sonos->SetMute($save_Mute);
}
break;
Ich habe keine Fritzbox, daher kann ich an der Stelle leider nicht weiterhelfen. Wenn du es hinbekommst: Ich habe die Mute Funktion angepasst, damit sie zum einen nicht mehrfach aufgerufen wird (sonst gibt's unschöne Aussetzer) und zum anderen wegen der Lautstärke. Ich speichere mir jetzt einfach die Ursprungslautstärke weg, setze die Lautstärke dann fix auf 5 (hat mir sonst zu lange gedauert) und regle dann mit ramptovolume wieder auf die gespeicherte Lautstärke ein:
if($_GET['mute'] == 'false') {
$MuteStat = $sonos->GetMute();
If($MuteStat == 'true') {
$SaveVol = $sonmaster->GetVolume();
$sonos->SetVolume(5);
$sonos->SetMute(false);
$sonos->RampToVolume($rampto, $SaveVol);
}
}
else if($_GET['mute'] == 'true') {
$sonos->SetMute(true);
$SaveVol = $sonmaster->GetVolume();
$sonos->SetVolume($SaveVol);
}
PS: Ich setze unten auch bei Mute = true die vorher gespeicherte Lautstärke zurück um folgendes abzufangen: Mute = True wird kurz nach Mute = false gesetzt und die Endlautstärke mit ramptovolume ist noch nicht erreicht.
Dazu der Anwendungsfall Badezimmer: Unser Play:1 ist zwar immer in der Sonos Hauptgruppe und spielt deren Playlist steht aber im Default auf Mute = true. Betritt jemand das Badezimmer (Türsensor), wid die Mute = False Funktion ausgelöst und das Hauptlicht eingeschaltet. Beim Verlassen des Badezimmers (über UP Schalter), wird das Hautplicht ausgeschaltet und Mute = True gesetzt. Wenn man jetzt bsp. kurz etwas im Badezimmer sucht und den Raum schnell wieder verlässt, ist die Endlautstärke noch nicht erreicht und wird somit falsch für den nächsten Aufruf abgespeichert. Daher das zusätzliche Zurücksetzen...