EASY Sonos Beispiele

Hier können Sie einige praktische Anwendungsbeispiele zu unserer Homegear-Lösung für Sonos finden.

Audiodatei abspielen

Mit diesem Programm werden die aktuellen Daten der Wiedergabe eines Sonos Speakers in Systemvariablen gespeichert, es wird eine Audiodatei abgespielt (aus der Musikbibliothek der Sonos auf einem NAS oder von einer anderen aus dem Internet erreichbaren Stelle) und anschließend setzt die ursprüngliche Wiedergabe wieder ein.

Für das Programm müssen Sie zuerst zwei Systemvariablen auf Ihrer Zentrale anlegen:
1. Eine Systemvariable vom Typ Zeichenkette mit dem Namen "SonosUri".
2. Eine Systemvariable vom Typ Zahl (Mindestwert: 0, Maximalwert: 100) mit dem Namen "SonosVolume".

Nachdem Sie die Systemvariablen angelegt haben, erstellen Sie ein Programm auf der Zentrale:

In der Bedingung "WENN" konfigurieren Sie das Ereignis, auf welches reagiert werden soll (Beispielsweise ein Tastendruck, wenn das Programm bei einem Tastendruck ausgeführt werden soll). In der Aktivität "DANN" erstellen Sie zwei Skripte. Das erste Skript lassen Sie sofort ausführen. Dieses sorgt dafür, dass sich Ihre Zentrale die aktuelle Wiedergabe der Sonos merkt und startet die Ausgabe der anderen abzuspielenden Audiodatei. Das zweite Skript setzt nach Ausgabe der Audiodatei ein (dafür geben Sie eine Verzögerung in Länge der abzuspielenden Datei an) und lässt die ursprüngliche Ausgabe der Sonos fortsetzen.

Skript 1
var newAudiofile = 'DATEIPFAD';
! Ersetzen Sie DATEIPFAD durch den Pfad zu der abzuspielenden Datei
! Wenn die Datei auf Ihrem Webserver liegt, zum Beispiel in der Form: https://control.easy-smarthome.de/EASYDisplay/alarmkassel2016.mp3
! Wenn die Datei auf einem NAS liegt und in der Musikbibliothek der Sonos ist, zum Beispiel in der Form: x-file-cifs://IP.ADRESSE.IHRES.NAS/Dateipfad/Dateiname.Dateiendung

var newVolume = 'LAUTSTÄRKE';
! Ersetzen Sie LAUTSTÄRKE durch die Lautstärke, mit der die Datei abgespielt werden soll
! Hierbei können Werte von 0 bis 100 angegeben werden, dies entspricht der Lautstärke in %

var sonosSpeaker = dom.GetObject('SPEAKERKANAL');
! Ersetzen Sie SPEAKERKANAL durch die Bezeichnung des ersten Kanals des Sonos Speakers, auf welchem die Ausgabe erfolgen soll

!!! Von hier an übernehmen Sie den Code bitte UNVERÄNDERT !!!

! read out current uri and volume
var currentUri = sonosSpeaker.DPByHssDP('AV_TRANSPORT_URI').State();
var currentVolume = sonosSpeaker.DPByHssDP('VOLUME').State();

! saving current uri and volume into sysvars
dom.GetObject('SonosUri').Variable(currentUri);
dom.GetObject('SonosVolume').Variable(currentVolume);

! play audio file
sonosSpeaker.DPByHssDP('AV_TRANSPORT_URI').State(newAudiofile);
sonosSpeaker.DPByHssDP('VOLUME').State(newVolume);
sonosSpeaker.DPByHssDP('PLAY').State(1);
Skript 2
var sonosSpeaker = dom.GetObject('SPEAKERKANAL');
! Ersetzen Sie SPEAKERKANAL durch die Bezeichnung des ersten Kanals des Sonos Speakers, auf welchem die Ausgabe erfolgen soll

!!! Von hier an übernehmen Sie den Code bitte UNVERÄNDERT !!!

! get previous uri and volume from sysvars
var sysvarUri = dom.GetObject('SonosUri');
var sysvarVolume = dom.GetObject('SonosVolume');

! return to original output
sonosSpeaker.DPByHssDP('AV_TRANSPORT_URI').State(sysvarUri.Variable());
sonosSpeaker.DPByHssDP('VOLUME').State(sysvarVolume.Variable());
sonosSpeaker.DPByHssDP('PLAY').State(1);

Sonos Wecker

Legen Sie über "Programme und Verknüpfungen" > "Programme & Zentralenverknüpfung" ein neues Programm an und vergeben Sie einen sinnvollen Namen (in unserem Beispiel "Sonos_Wecker"). In der "Wenn"-Bedingung wählen Sie "Zeitsteuerung" aus und setzen die Uhrzeit auf die gewünschte Weckzeit.

Anschließend wählen Sie in der "Dann"-Aktivität bei "Geräteauswahl" den entsprechenden Sonos Speaker aus. Wählen Sie den Datenpunkt "PLAY_FAVORITE" und geben im Textfeld den Namen der abzuspielenden Datei an. Achtung: Die abzuspielende Datei muss sich in den Favoriten des Sonos Speakers befinden! Bitte geben Sie den Namen exakt so ein, wie er in der Favoritenliste des Speakers angezeigt wird!

Fertig! Nun müssen Sie das Programm nur noch speichern. Zukünftig werden Sie zu der von Ihnen festgelegten Zeit durch den Sonso Speaker geweckt.

Playlist bei Betreten eines Raumes abspielen

In diesem Beispiel zeigen wir Ihnen, wie man in einem Programm per Skript beim Betreten eines Raumes eine spezielle Playlist lädt und diese abspielt. Dies soll nur geschehen, sofern der Sonos Speaker aktuell nichts abspielt. Voraussetzung für dieses Beispiel ist eine Bewegungserkennung, wir haben hier die EASY Cam verwendet.

Legen Sie über "Programme und Verknüpfungen" > "Programme & Zentralenverknüpfung" ein neues Programm an und vergeben Sie einen sinnvollen Namen (in unserem Beispiel: "Sonos_Playlist_EnterRoom"). In der „Wenn“-Bedingung wählen Sie bei „Geräteauswahl“ die entsprechende EASY Cam aus. Wählen Sie den Datenpunkt „Bewegung erkannt“ aus und setzen „bei Änderung auslösen“.

Wählen Sie in der "Dann"-Aktivität "Skript" aus und klicken auf "Skript erstellen". Kopieren Sie das folgende Skript und fügen Sie es in Ihrem Programm ein. Vergessen Sie nicht die notwendigen Daten (Adresse des Sonos Speakers, Namen der Playlist) anzupassen.

! Sonos Speaker
var Sonos=dom.GetObject("Sonos PLAY:3 000E58FE462E:1");
! Datenpunkt des aktuellen "Transport-Status" (0=stopped, 1=paused, 2=transition, 3=play)
var playing = Sonos.DPByHssDP("TRANSPORT_STATE").State();

if (playing != 3) {
    ! Aktuell wird nichts abespielt, Playliste "Rock" laden und abspielen
    Sonos.DPByHssDP("PLAY_PLAYLIST").State("Rock");
}

Fertig! Nun müssen Sie das Programm nur noch speichern. In Zukunft wird beim Betreten des Raumes die Playlist "Rock" geladen und abgespielt, sofern der Speaker aktuell nichts abspielt.

Lautstärke eines Speakers um einen bestimmten Wert erhöhen

Wenn Sie die Lautstärke Ihrer Sonos-Lautsprecher um einen bestimmten Wert erhöhen oder verringern möchten, können Sie das nachfolgende Skript verwenden.

Ersetzen Sie im Skript den Wert "SonosPlay3:1" (die Anführungszeichen bitte drin lassen) durch den Namen des ersten Kanals des jeweiligen Sonos-Lautsprechers auf Ihrer CCU. Ersetzen Sie im Skript die Variable "ErhoehenUmFolgendenWert" mit dem Wert "5" (die Anführungszeichen bitte drin lassen) durch den von Ihnen gewünschten Wert (auch Minuswerte sind möglich).

var NameDesErstenKanalsVonSonos = "SonosPlay3:1";
var ErhoehenUmFolgendenWert = "5";

var Sonos = dom.GetObject(NameDesErstenKanalsVonSonos);
var AktuelleLautstaerke = Sonos.DPByHssDP("VOLUME").State();

var NeueLautstaerke = AktuelleLautstaerke + ErhoehenUmFolgendenWert;
Sonos.DPByHssDP("VOLUME").State(NeueLautstaerke);

Das folgende Skript setzt die Sonos-Lautstärke anhand der Seriennummer:

var sonosSerialNo = "000E58FE462E";
var increaseVolumeBy = 10;

var currentVolume = dom.GetObject("Homegear." # sonosSerialNo # ":1.VOLUME").Value();
var volumeToSet = currentVolume + increaseVolumeBy;
dom.GetObject("Homegear." # sonosSerialNo # ":1.VOLUME").State(volumeToSet);