BOSE SoundTouch über Homematic CCU steuern

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

Moderator: Co-Administratoren

Highfly78
Beiträge: 65
Registriert: 21.03.2015, 13:08
Wohnort: Ruhrpott
Danksagung erhalten: 2 Mal

Re: BOSE SoundTouch über Homematic CCU steuern

Beitrag von Highfly78 » 10.11.2017, 10:36

Hmm, wenn ich so nachdenke kommt mir folgende Frage:

Ist es auch möglich, per CCU Lautsprecher einer Gruppe hinzuzufügen? Als Beispiel: In der Küche läuft Internetradio. Ich gehe ins Arbeitszimmer und die CCU fügt den entsprechenden LS der Gruppe hinzu. Gehe ich wieder raus aus dem Zimmer und gehe ins Bad -> der eine LS verlässt die Gruppe, der im Bad springt an... usw. Sozusagen "Sound follows resident" :D

Bisher habe ich das probeweise so programmiert: Im entsprechenden Raum wird das selbe Preset gewählt wie das auf dem laufenden Soundtouch. Problem: Das Internetradio läuft dann nicht synchron! Die einzelnen LS haben einen timelapse von bis zu 10 Sekunden, da wird man verrückt. Mit Spotify Playlists funktioniert es gar nicht, was wahrscheinlich eine Rechteangelegenheit ist weil immer nur ein Downloadstream erlaubt ist. Ergo: Klappt so nicht. Mit der Soundtouchapp funktioniert das ganze ja wunderbar, aber eben nicht automatisiert...

Sieht da jemand eine Möglichkeit? Ich habe das PDF von Hubobel aud Seite 2 dieses Threads angeschaut. Es sieht so aus als wenn das grundsätzlich möglich ist - Leider nicht für mich programmier-DAU!

Vielen Dank schonmal
--------------------------------------------
349 Kanäle in 110 Geräten und 116 CUxD-Kanäle in 23 CUxD-Geräten
--------------------------------------------

Benutzeravatar
Hubobel
Beiträge: 123
Registriert: 10.05.2016, 11:49
Wohnort: Exilplauner in Oggersheim

Re: BOSE SoundTouch über Homematic CCU steuern

Beitrag von Hubobel » 20.11.2017, 07:43

Ich verweise da gerne auf folgenden Beitrag hier im Forum:

viewtopic.php?f=48&t=25087&start=10#p256168

Damit klappt das wunderbar.
Gruß, Carsten
--------------------------------------------
RaspberryMatic 2.29.22.20171007 @ RPi3
--------------------------------------------
102 Kanäle in 39 Geräten und 4 CUxD-Geräten
Programme: 59 - Skripte: 67 - Variabelnamen: 30
--------------------------------------------

Highfly78
Beiträge: 65
Registriert: 21.03.2015, 13:08
Wohnort: Ruhrpott
Danksagung erhalten: 2 Mal

Re: BOSE SoundTouch über Homematic CCU steuern

Beitrag von Highfly78 » 20.11.2017, 11:06

Super, Danke! Das probiere ich gleich aus!

VG
--------------------------------------------
349 Kanäle in 110 Geräten und 116 CUxD-Kanäle in 23 CUxD-Geräten
--------------------------------------------

Beezy
Beiträge: 52
Registriert: 12.03.2016, 23:18
Wohnort: Hermsdorf

Re: BOSE SoundTouch über Homematic CCU steuern

Beitrag von Beezy » 30.11.2017, 22:26

fraat hat geschrieben: ...
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)
} 
...
Im ersten Post gibt es diese Möglichkeit den Power Button nur zu drücken wenn das ST an ist. Kann mir jemand sagen was ich ändern muss das es andersrum funktioniert? Also das nur die Power Taste gedrückt wird wenn ST aus ist.
Stand 2019:
Homematic auf RaspberryMatic
ioBroker auf Rock64
div. Xiaomi Mi Home Produkte
Yeelight
Mi Robot 1. Gen

Highfly78
Beiträge: 65
Registriert: 21.03.2015, 13:08
Wohnort: Ruhrpott
Danksagung erhalten: 2 Mal

Re: BOSE SoundTouch über Homematic CCU steuern

Beitrag von Highfly78 » 30.11.2017, 23:40

Mach aus

Code: Alles auswählen

if (foo <> -1) 
einfach

Code: Alles auswählen

if (foo == -1) 
Darf man fragen wofür du das benötigst?

Gruß

Björn
--------------------------------------------
349 Kanäle in 110 Geräten und 116 CUxD-Kanäle in 23 CUxD-Geräten
--------------------------------------------

Beezy
Beiträge: 52
Registriert: 12.03.2016, 23:18
Wohnort: Hermsdorf

Re: BOSE SoundTouch über Homematic CCU steuern

Beitrag von Beezy » 01.12.2017, 00:11

Danke für deine schnelle Antwort.

Ich habe das Bose SoundTouch10 als Badradio im Einsatz. Ein- und Ausgeschalten wird es mit einem HM-BWM. Da jedesmal am Anfang des Radiostreams Werbung kommt und mich das nervt habe ich gestern die Leistungsaufnahme gemessen:
Standby = 1,6W
Ein Lautstärke 0: 2,8W
Ein Lautstärke bis 50: 2,8W

Die 1,2W zwischen StandBy und Lautstärke 0 machen aufs Jahr gerechnet ca 3€. Deshalb habe ich seit gestern es so eingestellt das es nicht ausgeht sondern nur leise (Lautstärke 0).
Allerdings war es heute früh im StandBy. Ich weis noch nicht warum aber entweder schaltet es nach einer gewissen Zeit ab oder die DSL-Zwangstrennung war dran Schuld.
Heut war es tagsüber 10h bei Lautstärke 0 und ist nicht in den StandBy gewechselt
Ich brauche den Befehl also nur für den Fall das es sich abgeschalten hat. Je nach dem woran es liegt werde ich den Befehl entweder morgens nach der Zwangstrennung starten oder zu anderen Zeitpunkten. Das gilt es aber noch herauszufinden.
Stand 2019:
Homematic auf RaspberryMatic
ioBroker auf Rock64
div. Xiaomi Mi Home Produkte
Yeelight
Mi Robot 1. Gen

Highfly78
Beiträge: 65
Registriert: 21.03.2015, 13:08
Wohnort: Ruhrpott
Danksagung erhalten: 2 Mal

Re: BOSE SoundTouch über Homematic CCU steuern

Beitrag von Highfly78 » 01.12.2017, 14:58

Hmm, OK, kann man so machen. Sei aber nur vorsichtig mit den CURL-Abfragen! Die funktionieren sehr zuverlässig, solange die abgefragte Seite verfügbar ist. Ist sie das nicht verursachen die CURL abfragen (bei mir) ein ca. 2 Minuten langes "hängen" des Raspi 3, also meiner an und für sich schnellen CCU! In dieser Zeit geht gar nichts. Wenn du also schön regelmäßig deine ST10 checkst, ob sie im Standby ist oder nicht und deine Frau gerade den Stecker der ST10 gezogen hat um den Föhn dranzuhängen geht minuenlang nichts. Fragst du das Gerät alle 10 Minuten ab ergibt das schon Chaos. Und dann erklär mal deiner Frau dass die Kaffeemaschine nicht angeht weil der Stecker vom Badezimmerradio gezogen ist :shock: :shock: :shock: So ist ein Hobby schnell beendet bevor es richtig angefangen hat :mrgreen:

Daher mein Tip: Interne CURL Abfragen immer mit einem Ping auslösen und das geht so:
1. Neues CUxD-Gerät vom Typ System (28) mit Funktion: Ping/Alive anlegen
2. Einem Kanal davon unter Geräte --> Einstellungen die IP des ST10 geben und Pinginterval auf 1200 (Alle 20 Minuten oder wie es dir am besten passt)
3. Ein Program in der WebUI mit "WENN Gerät CUX2803xxx:X UNREACH kleiner oder gleich 0 - bei Aktuallisierung auslösen DANN Skript:

Code: Alles auswählen

! ACHTUNG geaendertes Skript
! Dieses Skript schaltet Soundtouch EIN nicht AUS

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>: ON");}
else
{
     WriteLine("Soundtouch>: STANDBY");
 
   !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)
} 
Auf diese Weise wird der eigentliche CURL Abruf nur dann gestartet, wenn das Gerät auch definitiv erreichbar ist. Mit dem Intervall mit dem du pingst (1/15s bis 1/h) wird dann auch das Gerät wieder gestartet, sollte es aus sein. Wenn du das wiedereinschalten unter bestimmten Umständen (z.B. während Abwesenheit) unterbinden willst, kannst du mit z.B.
WENN abwesend DANN Skript

Code: Alles auswählen

dom.GetObject("CUxD.CUX2803xxx:X.INHIBIT").State(true);
das Pingen unterbrechen, das Gerät direkt anschließend per

Code: Alles auswählen

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)
} 
in den Standby versetzten (Schadet ja nicht wenns doch nur die 1.2Watt zieht während du eh nicht zu Hause bist... :D ) und es dann mit

WENN anwesend DANN Skript

Code: Alles auswählen

dom.GetObject("CUxD.CUX2803xxx:X.INHIBIT").State(false);
wieder aufwecken. Nach dem Inhibit-->false wird sofort ein Ping geschickt und das Einschaltskript entsprechend wieder ausgelößt. Musst du mal probieren, aber eigentlich dudeln die STs beim einfachen Druck auf die Powertaste da los, wo sie vorher aufgehört haben.

Das ist, denke ich, eine saubere und stabile Lösung für dein Anliegen.

Gruß aus dem Pott

Björn
Zuletzt geändert von Highfly78 am 01.12.2017, 18:07, insgesamt 1-mal geändert.
--------------------------------------------
349 Kanäle in 110 Geräten und 116 CUxD-Kanäle in 23 CUxD-Geräten
--------------------------------------------

Beezy
Beiträge: 52
Registriert: 12.03.2016, 23:18
Wohnort: Hermsdorf

Re: BOSE SoundTouch über Homematic CCU steuern

Beitrag von Beezy » 01.12.2017, 17:25

Oh wow krass. :shock:

Danke werde das so umsetzen. Super das du gleich die Scripte mit dazu geschrieben hast. Denn damit kenn ich mich nicht aus aber so bekomme ich das hin.

Vielen vielen Dank.
Stand 2019:
Homematic auf RaspberryMatic
ioBroker auf Rock64
div. Xiaomi Mi Home Produkte
Yeelight
Mi Robot 1. Gen

pesi
Beiträge: 3
Registriert: 04.09.2017, 12:43

Re: BOSE SoundTouch über Homematic CCU steuern

Beitrag von pesi » 09.03.2018, 19:14

Hallo Fraat,

in deinem Eintrag " Hinzugefügt 18.03.2016" ( Seite1) steht als letzter Satz
> Mit diesen Beispielen kann man schon fast alle Funktionen der SoundTouch via CCU steuern.
> Abspielen von DEEZER, .. kommt irgendwann später.

Zu dem Thema Deezer gibt es da etwas neues? Habe ich etwas überlesen.

Gruß Peter

harry.refrath
Beiträge: 7
Registriert: 27.05.2018, 10:04

Re: BOSE SoundTouch über Homematic CCU steuern

Beitrag von harry.refrath » 27.05.2018, 11:15

Hallo Zusammen,
ich bin neu hier :-)
Dank eurer Beschreibung und Scripte habe ich es soweit hinbekommen meine 3 Soundtouch soweit in die CCU2 einzubinden.
Vielen Dank für die Anleitungen und Scripte....
Ich wollte folgendes erreichen:
Einschalten aller ST über die Homematic FB und einbinden zu einer Gruppe damit in allen Räumen das gleiche abgespielt wird
Ausschalten aller ST Geräte über die FB

Hat aufgrund der Anleitungen soweit auch alles funktioniert, habe aber ein kleines Problem wo ich bisher noch keine Lösung gefunden habe und da ich mich mit Scripten nicht wirklich auskenne hoffe ich auf Unterstützung.
Ich arbeite wie beschrieben mit einer Variablen "VAR-Bose" die bei Betätigen der FB entweder auf "aus"oder "ein" gesetzt wird (siehe Dateianhang)
Mein Problem ist das wenn die ST nicht über die CCU2 bedient wird sich die Variable logischerweise auch nicht verändert und wenn ich dann die FB drücke es sein kann das ich die Taste 2 x betätigen muß um alles auszuschalten.
Meine Frage:
Besteht die Möglichkeit bei Bedienen der FB über ein zusätzliches Script den Zustand der ST auszulesen (An oder aus), und erst die Entscheidung getroffen wird die Geräte ein oder auszuschalten

Bei mir sieht das folgendermaßen aus: siehe Dateianhang

Danke für eure Unterstützung
Dateianhänge
ST.JPG

Antworten

Zurück zu „CUxD“