Sonos - einzelne Befehle in ein Skript packen

Hallo zusammen,

ich nutze voller Liebe und Leidenschaft IPSSonos. Funktioniert auch alles wunderbar.
Nun möchte ich meiner „Willkommen zu Hause“- Funktion noch eine „Willkommen zu Hause mit Musik“- Funktion hinzufügen.
Nun meine eigentliche Frage. Wenn ich in meinem „Willkommen…“- Skript den Sonos steuern möchte (z.B. alle an oder alle aus) was muss in dem Skript alles stehen (function… etc), damit ich an- oder ausschalten kann.

Sorry für die sicher simple Frage, aber beim Forum durchforsten habe ich nichts gefunden.
Liebe Grüße
Lieschen

Moin Lieschen!

Soooo simple ist das gar nicht… Das Problem ist das gruppieren der Sonos Boxen. Wenn sie vorher schon gruppiert sind, dann alle auftrennen? Merken wer mit wem gruppiert war und wiederherstellen danach? Dann musst du dir überlegen was du abspielen willst (Radio/Playlist/MP3-Datei/…) - diese Befehle sind dann einfach. Auch das setzen der Lautstärke usw. :slight_smile:

Deshalb laufen bis heute bei mir die Sprachausgaben „einzeln“ und nicht über alle Sonos in einer Gruppe. Der Gruppenkram steht schon ewig auf meiner 2do :slight_smile: Aber vlt. hat jemand anderes ja ein paar Beispiele.

Damit du wenigstens ein kleines Beispiel hast (ohne gruppieren):

<?
IPSUtils_Include ('IPSSonos.inc.php', 'IPSLibrary::app::modules::IPSSonos');

$roomName = "Bad oben";
$EinschaltRadiosender = GetValue(48700 /*[Skripte & Variablen\MediaPlayer\Sonos\Bad oben\Variablen\Einschalt-Radiosender]*/);
$EinschaltLautstaerke = GetValue(56888 /*[Skripte & Variablen\MediaPlayer\Sonos\Bad oben\Variablen\Einschalt-Lautstärke (Allgemein)]*/);


// Wenn Sonos ausgeschaltet, dann einschalten
if (IPSSonos_GetRoomPower($roomName) != 1) {
	IPSSonos_SetRoomPower($roomName, true);
}

// Im WebFront voreingestellte Einschaltlautstärke einstellen, falls nicht eingestellt
if (IPSSonos_GetVolume($roomName) != $EinschaltLautstaerke)) {
	IPSSonos_SetVolume($roomName, $EinschaltLautstaerke);
}

// Im WebFront voreingestellten Radiosender abspielen
IPSSonos_PlayRadiostationByID($roomName, $EinschaltRadiosender);
?>

Grüße,
Chris

Hallo

Ich möchte per Bewegungsmelder die Sonos Box einschalten und ca. für 10 Minuten laufen lassen …

es scheitert schon am Sonos script … es soll nur der letzte Radiosender eingeschaltet werden …

&lt;?

$timeupdate = IPS_GetVariable(35251/*[\Bewegungsmelder \Bewegung]*/);
    $timeupdate = $timeupdate['VariableUpdated'];                 // Wann war Variablenupdate
    $time = microtime(true);                                             // aktueller Unix-Timestamp
    $timer = 600;                                                         // Verzögerung in Sekunden
    
IPSUtils_Include ('IPSSonos.inc.php', 'IPSLibrary::app::modules::IPSSonos');

$roomname = "Allgemein";
IPSSonos_SetRoomPower($roomname, true);
IPSSonos_RampToVolumeMuteSlow($roomname, '30');
IPSSonos_PlayRadiostationByID($roomName, )

?&gt;
/PHP]

einen  Radiosender kann nicht einschalten... Fehler in der Zeile IPSSonos_PlayRadiostationByID($roomName, )
Bitte um Hilfe  -- Danke.

Tjaaaaa…dann schau dir mal diese Zeile genau an:

IPSSonos_PlayRadiostationByID($roomName, )

So wäre die Zeile richtig :wink:

$RadiostationID = 1;  // welcher Sender welche ID hat siehst du im Variablenprofil "IPSSonos_Radiostations"
IPSSonos_PlayRadiostationByID($roomName, $RadiostationID);

Wenn du die letzte Radiostation willst, dann musst du diese aus der Variable „RADIOSTATION“ des jeweiligen Raumes mit „GetValue“ auslesen. Oder einfach einen „Einschalt-Radiosender“ festlegen.

Und damit du auch noch ein wenig selbst denken darfst, hier eine Vorlage, wie man mit X Sekunden Verzögerung etwas ausführen/schalten kann :slight_smile: >> Sauna Aus wenn Tür 15 sek. offen

Grüße,
Chris

Danke für die kurzfristigen Antworten! Ich werde es am WE mal ausprobieren.
Lieschen