HomeMatic CCU2 bei ELV bestellen

BOSE SoundTouch über Homematic CCU steuern

Anbindung von FS20-Komponenten, ELV-Wetterstationen, EnOcean und DMX an HomeMatic

Werbung


BOSE SoundTouch über Homematic CCU steuern

Beitragvon fraat » 22.01.2016, 22:02

Hallo,
ich habe ein par Scripts für die Ansteuerung der BOSE SoundTouch geschrieben die ich euch zur Verfügung stellen möchte.

Vorbereitungen:
* CUxD muss auf der CCU installiert sein
* Ihr müst die Adresse von CUxD wissen
* Ihr müsst die IP Adresse des BOSE SoundTouch wissen

Hier nun die Scripts zur BOSE SoundTouch Ansteuerung:

1. SoundTouch Ausschalten/Standby
Code: Alles auswählen
!Soundtouch IP setzen
string ST_Ip ="192.168.1.100";

!Überprüfung ob Soundtuch bereits in STANDBY ist
var url="http://" # ST_Ip #":8090/now_playing";
var cmd = "/usr/local/addons/cuxd/curl -s -k -L " # url ;

dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State(cmd);
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
var v = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
WriteLine("Ret>:" # v);

integer foo = v.Find("STANDBY"); ! World = 6
WriteLine("Find STANDBY at Position>: " # foo);

if (foo <> -1)
{    WriteLine("Soundtouch>: STANDBY");}
else
{
     WriteLine("Soundtouch>: ON");
 
   !Press Power Button (down)
   string ST_Method = "key";
   string ST_Post='<key state="press" sender="Gabbo">POWER</key>';
   string CurlCmd='/usr/local/addons/cuxd/curl --data "' # ST_Post # '" http://'# ST_Ip #':8090/' + ST_Method;
   dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State(CurlCmd);

   !Press Power Button (release)
   string ST_Method = "key";
   string ST_Post='<key state="release" sender="Gabbo">POWER</key>';
   string CurlCmd='/usr/local/addons/cuxd/curl --data "' # ST_Post # '" http://'# ST_Ip #':8090/' + ST_Method;
   dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State(CurlCmd)
}


2. SoundTouch Radio Sender setzen
Code: Alles auswählen
!Soundtouch Sender setzen
string ST_Location ="530"; !SWR3
!string ST_Location ="7297"; !Die Neue 107.7

!Soundtouch IP setzen
string ST_Ip ="192.168.1.100";

   !Set volume
   string ST_Method = "select";
    string ST_Post='<ContentItem source="INTERNET_RADIO" location="' # ST_Location # '"></ContentItem>';
   string CurlCmd='/usr/local/addons/cuxd/curl --data "' # ST_Post # '" http://'# ST_Ip #':8090/' + ST_Method;
   WriteLine("CurlCmd:" # CurlCmd);
   !dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State(CurlCmd)
   
    dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State(CurlCmd);
   dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
   var v = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
   WriteLine("SetLocationRet>:" # v);

   !get volume
   var url="http://" # ST_Ip #":8090/volume";
   var cmd = "/usr/local/addons/cuxd/curl -s -k -L " # url ;

   dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State(cmd);
   dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
   var v = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
   WriteLine("GetVolumeRet>:" # v);


3. SoundTouch Einen Button der Fernbedienung simulieren
Code: Alles auswählen
!Soundtouch Key setzen
string ST_Key ="PRESET_2";

!Soundtouch IP setzen
string ST_Ip ="192.168.1.100";

    !Press Power Button (down)
   string ST_Method = "key";
   string ST_Post='<key state="press" sender="Gabbo">' # ST_Key #'</key>';
   string CurlCmd='/usr/local/addons/cuxd/curl --data "' # ST_Post # '" http://'# ST_Ip #':8090/' + ST_Method;
   WriteLine("CurlCmd:" # CurlCmd);
   !dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State(CurlCmd);

     dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State(CurlCmd);
   dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
   var v = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
   WriteLine("Ret>:" # v);

   !Press Power Button (release wichtig!)
   string ST_Method = "key";
   string ST_Post='<key state="release" sender="Gabbo">' # ST_Key #'</key>';
   string CurlCmd='/usr/local/addons/cuxd/curl --data "' # ST_Post # '" http://'# ST_Ip #':8090/' + ST_Method;
   WriteLine("CurlCmd:" # CurlCmd);
   !dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State(CurlCmd)
   
    dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State(CurlCmd);
   dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
   var v = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
   WriteLine("Ret>:" # v);


Mögliche Tasten:
PLAY
PAUSE
STOP
PREV_TRACK
NEXT_TRACK
THUMBS_UP
THUMBS_DOWN
POWER
MUTE
VOLUME_UP
VOLUME_DOWN
PRESET_1
PRESET_2
PRESET_3
PRESET_4
PRESET_5
PRESET_6
AUX_INPUT
SHUFFLE_OFF
SHUFFLE_ON
REPEAT_OFF
REPEAT_ONE
REPEAT_ALL
PLAY_PAUSE
ADD_FAVORITE
REMOVE_FAVORITE

4. SoundTouch Lautstärke einstellen
Code: Alles auswählen
!Soundtouch Lautsterke setzen 0-100
string ST_Value ="40";

!Soundtouch IP setzen
string ST_Ip ="192.168.1.100";

   !Set volume
   string ST_Method = "volume";
   string ST_Post='<volume>' # ST_Value #'</volume>';
   string CurlCmd='/usr/local/addons/cuxd/curl --data "' # ST_Post # '" http://'# ST_Ip #':8090/' + ST_Method;
   WriteLine("CurlCmd:" # CurlCmd);
   !dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State(CurlCmd)
   
        dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State(CurlCmd);
   dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
   var v = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
   WriteLine("SetvolumeRet>:" # v);

   !get volume (Optional)
   var url="http://" # ST_Ip #":8090/volume";
   var cmd = "/usr/local/addons/cuxd/curl -s -k -L " # url ;

   dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State(cmd);
   dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
   var v = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
   WriteLine("GetVolumeRet>:" # v);


Hinzugefügt 18.03.2016

5. SoundTouch Lautstärke auslesen
+ erstelle eine Systemvariable string SoundTouch_NowPlayingVolume
Code: Alles auswählen
!"Soundtouch_IP" auslesen falls als SystemVariable vorhanden
!var STtempIP = dom.GetObject("Soundtouch_IP"); string ST_Ip= STtempIP .Variable();

!Soundtouch IP setzen (optional wenn nicht Systemvariable)
string ST_Ip ="xx.xx.xx.xx";
WriteLine("Soundtouch IP>: " # ST_Ip);

!get voluume
var url="http://" # ST_Ip #":8090/volume";
var cmd = "/usr/local/addons/cuxd/curl -s -k -L " # url ;

dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State(cmd);
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
var v = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
WriteLine("GetVolumeRet>:" # v);

integer foo = v.Find("encoding");
WriteLine("Find >encoding< at Position>: " # foo);


if (foo <> -1)
{


!"SoundTouch_NowPlayingSID"    
string foo4 = v.StrValueByIndex('="',3);
string deviceID = foo4.StrValueByIndex('"',1);
WriteLine("SoundTouch_NowPlayingSID>: " # deviceID);
!var STtempIP = dom.GetObject("SoundTouch_NowPlayingSID"); STtempIP.Variable(deviceID);   
 
!"SoundTouch_NowPlayingTargetVolume"
string targetvolume = foo4.StrValueByIndex(' ',3);
WriteLine("SoundTouch_NowPlayingTargetVolume>: " # targetvolume);
!var STtempIP = dom.GetObject("SoundTouch_NowPlayingTargetVolume"); STtempIP.Variable(targetvolume);

!"SoundTouch_NowPlayingActualVolume"
string actualvolume = foo4.StrValueByIndex(' ',7);
WriteLine("SoundTouch_NowPlayingActualVolume>: " # actualvolume);
var STtempIP = dom.GetObject("SoundTouch_NowPlayingVolume"); STtempIP.Variable(actualvolume);
 

}
else
{

!"SoundTouch_NowPlayingSID"    
string foo4 = v.StrValueByIndex('="',3);
string deviceID = foo4.StrValueByIndex('"',1);
WriteLine("SoundTouch_NowPlayi-ngSID>: NotFound");
!var STtempIP = dom.GetObject("SoundTouch_NowPlayingSID"); STtempIP.Variable("NotFound");   
 
!"SoundTouch_NowPlayingTargetVolume"
string targetvolume = foo4.StrValueByIndex(' ',3);
WriteLine("SoundTouch_NowPlayingTargetVolume>: 0");
!var STtempIP = dom.GetObject("SoundTouch_NowPlayingTargetVolume"); STtempIP.Variable("0");

!"SoundTouch_NowPlayingActualVolume"
string actualvolume = foo4.StrValueByIndex(' ',7);
WriteLine("SoundTouch_NowPlayingActualVolume>: 0");
var STtempIP = dom.GetObject("SoundTouch_NowPlayingVolume"); STtempIP.Variable("0");


}


6. SoundTouch NowPlaying auslesen (Sender, Standby status, Quelle,....)
+ erstelle eine Systemvariable string SoundTouch_NowPlayingSID
+ erstelle eine Systemvariable string SoundTouch_NowPlayingSource
+ erstelle eine Systemvariable string SoundTouch_NowPlayingContentItemSource
+ erstelle eine Systemvariable string SoundTouch_NowPlayingLocation
Code: Alles auswählen
!"Soundtouch_IP" auslesen wenn Systemvariable
!var STtempIP = dom.GetObject("Soundtouch_IP"); string ST_Ip= STtempIP .Variable();
!WriteLine("Soundtouch IP>: " # ST_Ip);

!Soundtouch IP setzen (optional wenn nicht Systemvariable)
string ST_Ip ="xx.xx.xx.xx";

!now_playing auslesen
var url="http://" # ST_Ip #":8090/now_playing";
var cmd = "/usr/local/addons/cuxd/curl -s -k -L " # url ;

dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State(cmd);
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
var v = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
WriteLine("Ret>:" # v);

integer foo = v.Find("encoding");
WriteLine("Find >encoding< at Position>: " # foo);


if (foo <> -1)
{


!"SoundTouch_NowPlayingSID"    
string foo4 = v.StrValueByIndex('="',3);
string deviceID = foo4.StrValueByIndex('"',1);
WriteLine("SoundTouch_NowPlayingSID>: " # deviceID);
var STtempIP = dom.GetObject("SoundTouch_NowPlayingSID"); STtempIP.Variable(deviceID);   
 
!"SoundTouch_NowPlayingSource"
string foo4 = v.StrValueByIndex('="',4);
string Source = foo4.StrValueByIndex('"',1);
WriteLine("SoundTouch_NowPlayingSource>: " # Source);
var STtempIP = dom.GetObject("SoundTouch_NowPlayingSource"); STtempIP.Variable(Source);
 
string foo4 = v.StrValueByIndex('="',5);
string ContentItemSource = foo4.StrValueByIndex('"',1);
WriteLine("SoundTouch_NowPlayingContentItemSource>: " # ContentItemSource);
var STtempIP = dom.GetObject("SoundTouch_NowPlayingContentItemSource"); STtempIP.Variable(ContentItemSource);
 
!string ST_Location ="530"; !SWR3
!string ST_Location ="7297"; !Die Neue 107.7
string foo4 = v.StrValueByIndex('="',6);
string isPresetable = foo4.StrValueByIndex('"',1);
WriteLine("SoundTouch_NowPlayingLocation>: " # isPresetable);
var STtempIP = dom.GetObject("SoundTouch_NowPlayingLocation"); STtempIP.Variable(isPresetable);
 
}
else
{

!"SoundTouch_NowPlayingSID"    
WriteLine("SoundTouch_NowPlayingSID>: NotFound");
var STtempIP = dom.GetObject("SoundTouch_NowPlayingSID"); STtempIP.Variable("NotFound");   
 
!"SoundTouch_NowPlayingSource"
WriteLine("SoundTouch_NowPlayingSource>: STANDBY");
var STtempIP = dom.GetObject("SoundTouch_NowPlayingSource"); STtempIP.Variable("STANDBY");
 
WriteLine("SoundTouch_NowPlayingContentItemSource>: NotFound");
var STtempIP = dom.GetObject("SoundTouch_NowPlayingContentItemSource"); STtempIP.Variable("NotFound");
 
WriteLine("SoundTouch_NowPlayingLocation>: NotFound");
var STtempIP = dom.GetObject("SoundTouch_NowPlayingLocation"); STtempIP.Variable("NotFound");
 

}

Mit diesen Beispielen kann man schon fast alle Funktionen der SoundTouch via CCU steuern. Abspielen von DEEZER, .. kommt irgendwann später.

Fraat
Zuletzt geändert von fraat am 18.03.2016, 21:45, insgesamt 5-mal geändert.
fraat
 
Beiträge: 17
Registriert: 23.02.2014, 21:56

Re: BOSE SoundTouch steuern

Beitragvon grissli1 » 22.01.2016, 23:15

Suuuuper. Vielen Dank.
Jetzt muss ich mich nur noch entscheiden ob ich Sonos oder Bose nehme.

Viele Grüße
Chris

Unterwegs @ G-Pad
System: RaspberryMatic 2.27.8–Final auf RPi2, ReverseProxy auf RPi3, Mediola Gateway v2 und Harmony Hubs
grissli1
 
Beiträge: 2103
Registriert: 22.06.2012, 17:46
Wohnort: Tirol/Austria

Re: BOSE SoundTouch steuern

Beitragvon fraat » 23.01.2016, 10:10

Ick kann BOSE empfählen habe selber 5 Soundtouch und Cinemate mit Sountouch und wird über ccu gesteuert.


Gesendet von iPhone mit Tapatalk
fraat
 
Beiträge: 17
Registriert: 23.02.2014, 21:56

Re: BOSE SoundTouch steuern

Beitragvon ger.isi » 23.01.2016, 20:05

Perfekt!
Genau das was ich brauche.
Werde es gleich ausprobieren, wenn ich dazukomme.


Gesendet von iPhone mit Tapatalk
592 Kanäle in 179 Geräten, 53 Gerätetypen
--------------------------------------------
CCU2 mit 2x LAN Gateway, LAN Wired Gateway, Wired Komponenten, 3x RaspberryPi 3 mit Homebridge für Siri für >200 Geräte, Synology NAS mit HomeHub, CUxD Highcharts
--------------------------------------------
ger.isi
 
Beiträge: 88
Registriert: 22.11.2015, 15:00
Wohnort: Österreich

Re: BOSE SoundTouch steuern

Beitragvon ger.isi » 16.02.2016, 19:57

Funktioniert ja perfekt!
Vielen Dank!

Natürlich noch eine weitere Frage:
Gibt es auch die Möglichkeit auf eine andere Source umzuschalten?
Apple TV z.B. oder meinen angeschlossenen Fernseher?
592 Kanäle in 179 Geräten, 53 Gerätetypen
--------------------------------------------
CCU2 mit 2x LAN Gateway, LAN Wired Gateway, Wired Komponenten, 3x RaspberryPi 3 mit Homebridge für Siri für >200 Geräte, Synology NAS mit HomeHub, CUxD Highcharts
--------------------------------------------
ger.isi
 
Beiträge: 88
Registriert: 22.11.2015, 15:00
Wohnort: Österreich

BOSE SoundTouch steuern

Beitragvon fraat » 16.02.2016, 20:11

Leider nein. Diese Funktionen sind in der original APP auch nicht vorhanden.
fraat
 
Beiträge: 17
Registriert: 23.02.2014, 21:56

Re: BOSE SoundTouch steuern

Beitragvon ger.isi » 16.02.2016, 20:22

sehr schade - das fehlt mir eben auch in der original App :cry:
Ev. über die source Taste der Lifestyle Anlage - aber die lässt sich nicht so einfach steuern, oder?
592 Kanäle in 179 Geräten, 53 Gerätetypen
--------------------------------------------
CCU2 mit 2x LAN Gateway, LAN Wired Gateway, Wired Komponenten, 3x RaspberryPi 3 mit Homebridge für Siri für >200 Geräte, Synology NAS mit HomeHub, CUxD Highcharts
--------------------------------------------
ger.isi
 
Beiträge: 88
Registriert: 22.11.2015, 15:00
Wohnort: Österreich

BOSE SoundTouch steuern

Beitragvon fraat » 17.02.2016, 01:10

Ich würde gerne die Quellen auch CCU steuern. Diese Funktion/Taste wird in der Soundtouch api nicht abgebildet
fraat
 
Beiträge: 17
Registriert: 23.02.2014, 21:56

Re: BOSE SoundTouch über Homematic CCU steuern

Beitragvon fraat » 18.03.2016, 21:46

Hallo,
heute habe ich neue Scripte zum auslesen von SoundTouch hinzugefügt. Ihr findet sie unter Punkt 5 und 6.

SuoundTouch NowPlaying auslesen (Sender, Standby status, Quelle,....
SoundTouch Lautstärke auslesen

Fraat
fraat
 
Beiträge: 17
Registriert: 23.02.2014, 21:56

Re: BOSE SoundTouch über Homematic CCU steuern

Beitragvon grissli1 » 25.04.2016, 12:10

So, habe mir letzte Woche mal eine Soundtouch 10 zum Probieren geholt. Soll ja nur für kleine Räume sein :shock: :shock: :shock: .
Also wenn ich die im Bad aufdrehe, fliegen mir die Fliesen runter :lol: :lol: :lol: . Musste erstmal den Bass runter drehen.
Habe sie jetzt im Esszimmer stehen und beschalle bei geöffneter Türe schön meine Wohnung. Ich habe eine 130qm Altbauwohnung.
Werde jetzt aber doch eine 20er für Wohn-/ Esszimmer und noch zwei 10er für die anderen Räume bestellen. Dann muss ich nicht so aufdrehen :mrgreen: .

Eigentlich bin ich ja BOSE Gegner aber hier bin ich froh, dass ich mal diese Marke genommen habe.

Genug abgeschweift, aber dieses System begeistert. Vor allem mit einem hohen WAF durch die FB.
Und am WE werde ich alles in die HM integrieren.

Viele Dank für die Arbeit und das zur Verfügung stellen der Scripte!!!!

Viele Grüße
Chris
System: RaspberryMatic 2.27.8–Final auf RPi2, ReverseProxy auf RPi3, Mediola Gateway v2 und Harmony Hubs
grissli1
 
Beiträge: 2103
Registriert: 22.06.2012, 17:46
Wohnort: Tirol/Austria

Nächste

Zurück zu CUxD

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast







© homematic-forum.de & Lizenzgebern. Alle Rechte vorbehalten. Alle Bilder & Texte auf dieser Seite sind Eigentum
der jeweiligen Besitzer und dürfen ohne deren Einwilligung weder kopiert noch sonstwie weiter verwendet werden.