BOSE SoundTouch Einbindung (All-In-One Skript)

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

Moderator: Co-Administratoren

tobinedo
Beiträge: 23
Registriert: 23.02.2016, 11:46

BOSE SoundTouch Einbindung (All-In-One Skript)

Beitrag von tobinedo » 24.04.2017, 18:00

Hallo Zusammen, hier mein kleines Projekt zum Thema Soundtouch:

Die Vorgeschichte:

Nachdem ich die Bose Soundtouch Lautsprecher (habe inzwischen 4) erfolgreich in mein Smarthome intergriert habe, und diese auch erfolgreich liefen, habe ich mal die dafür erstellten Programme und Systemvariablen durchgezählt und kam auf sage und schreibe 12 Programme und 23 Variablen.
Das war mir zu viel und sorgte immer wieder für Verwirrung bei Anpassungen. Aber so ist es leider, wenn man immer mal eben schnell anbaut und es trotzdem dauerhaft funktioniert.

Jedenfalls habe ich mal gesammelt, gebündelt und umstrukturiert und programmiert.
Ich war selbst erstaunt: Ich habe nur noch ein Programm und eine Systemvariable.
Man muss aber dazu sagen, dass ich auf das Auslesen des Aktuellen Tracks verzichte. (Seit dem Bose Plugin für Mediola NEO benötige ich das nicht mehr.

Meine Soundtouch Anforderungen:

Wenn bei uns zu Hause (Zwei-Personen Haushalt) Musik läuft, dann immer in allen Räumen das gleiche.
Die Soundtouch geht an wenn jemand nach hause kommt und geht aus wenn alle aus dem Haus sind.
Genau so ist es wenn der Fernseher eingeschaltet wird: TV an -> Musik aus, TV aus -> Musik an.
Nachdem abends dann die Nachttischlampen aus sind, geht die Musik zu schlafen aus und morgens mit dem Wecker wieder an.
Ihr merkt schon. Bei uns läuft immer Musik so lange jemand zu hause ist und nicht schläft oder TV guckt.
Und abhängig von Tageszeit, Helligkeit, Wochentag, Gästen usw. andere Presets.

Changelog:
v2.180922
- Das Ausschalten der Slaves wurde wieder hinzugefügt (Logikfehler)
v2.180904
- Lautstärkeregelung für jedes Preset & jeden Lautsprecher Definierbar
- Optional: Soll Lautstärke bei einem Presetwechsel geändert oder beibehalten werden
v2.180824
- Neue Versionierunsbezeichnung ;)
- Neudesign des Codes
- Ausschalten optimiert
- aus SV Wert "aus" wurde "Aus"
- Die Name der Systemvariable kann frei gewählt werden
- Klingelfunktion wurde entfernt
v1.4 (22.08.2017)
- Es gibt einen Definitionsbereich. Änderungen außerhalb dieses
Bereichs sind nicht mehr notwendig
- Die Slaves werden nur noch im Definitionsbereich definiert.
- Sind keine Slaves definiert, findet auch kein Koppeln statt
- SHUFFLE und REPEAT_ALL sind definierbar
- Klingelfunktion wurde hinzugefügt:
Wird ein Klingelsensor verwendet und mit Soundtouch angesteuert,
kann ein Preset für die Klingel definiert werden. Dies kann dann
mit einer eigenen Lautstärke pro device gestartet werden.
v1.3
- Beim Start des Skripts wird geprüft welche Soundtouch
bereits an ist und in einer Booleal wariabel ablegelt
- Beim ausschlaten wird jede Soundtouch ausgeschlatet,
für den Fall, dass eine Soundtouch ohne Master betrieben wurde
- Beim Einschalten werden nur Slaves gekoppelt,
die vorher nicht an waren
v1.2
- SystemVariable in Status.Soundtouch umbenannt
- Status "0" in "aus" umbenannt
v1.1
- prüfen ob Soundtouch vorher schon an war,
dann alle einstellungen (Lautstärke, Slaves) beibehalten
- Durch Preset 0 Soundtouch ausschalten
- SystemVariable von String zu Werteliste geändert

Meine Lösung:

Ich habe nur noch eine Systemvariable mit dem Namen Status.Soundtouch. Eine Werteliste mit den Zahlen von 1-6 und "Aus" (Das Bild ist aus einer Älteren Version):
"1"-"6" sind meine Presets und "Aus" heisst ausschalten.

In einem anderen Programm, in dem ich dann z.B. die Musik wieder einschalten möchte,
wähle ich die Systemvariable ST.Preset aus und gebe mein Wunschpreset an.
Bild

Kommen wir nun zum eigentlichen Programm:

Mein Programm ist Systemintern und heißt Musik und sieht so aus:
Bild

Ändert sich meine Systemvariable springt wird das Programm "aktiv" und führt das folgende Skript aus:
Ich hab mir mühe gegeben, alles soweit es geht zu kommentieren. :D
(Die CUxD Adresse ist CUxD.CUX2801001:1 wie man unschwer im Skript erkennen kann.)

Code: Alles auswählen

!*******************************************************************************
!**      Bose Soundtouch HomeMatic-Script V2.180922
!**      by TobiNedo
!**      22.09.2018
!**
!**      Durch wählen eines Presets aus der Werteliste einer
!**      Systemwariablen werden alle im Script enthaltenen
!**      SoundTouch Geräte eingeschaltet, synchronisiert auf eine
!**      individuell für jedes Gerät vorgegebene Lautstärke gesetzt und
!**      nach wunsch SHUFFLE_ON und REPEAT_ALL aktiviert.
!**
!**      Verwendete Homematic Systemvariablen:
!**      Werteliste (Name im Definitionsbereich angeben)
!**      - Aus;1;2;3;4;5;6
!**      - "Aus" wird jetzt groß geschrieben ;)
!**
!**      Voraussetzungen:
!**      - Feste IP-Adressen für Soundtouch-Geräte
!**      - Definierte Presets
!**      - CUxD muss auf der CCU installiert sein
!**      - CUxD Adresse von Soundtouch
!**
!**      Inspiriert durch fraat:
!**      https://homematic-forum.de/forum/viewtopic.php?f=37&t=29122
!*******************************************************************************

!*******************************************************************************
!************************** START DEFINITIONSBEREICH ***************************
!*******************************************************************************

!Name der Systemvariable mit Werteliste
var sv_Werteliste = "Status.Soundtouch.Preset";

!Soll die Lautstärke mit einem Preset Wechsel
!neu gesetzt (true) oder beibehalten (false) werden?
boolean change_Volume = true;

!Master und Slaves Definieren:
!Die Device ID findet man unter http://<<SoundtouchIP>>:8090/now_playing
!Master bestimmen:
  var ST_Master_IP = "192.168.178.29";
  var ST_Master_DeviceID = "EC1127B0xxxx";
  !Volume für den Master für einzelne Presets 0-100
  !Schreibweise: "Preset1,Preset2,...,Preset6";
  var ST_Master_Volume = "30,30,15,30,30,30";

!Slaves bestimmen:
  !Schreibweise: "IP-Adresse,DeviceID,Volume Preset1,Volume Preset2,...,Lautstärke Preset6;";
  !Der Letzte darf kein ";" innerhalb der Anführungszeichen und statt dem "+" ein ";" enthalten.
  !Wenn keine Slaves vorhanden: "";
  !Schlafzimmer, Badezimmer, Wintergarten, Ankleidezimmer, Wohnzimmer
  string ST_Slaves = "192.168.178.27,EC24B8E8xxxx,25,25,15,25,25,25;"+
                    "192.168.178.25,EC24B8Cxxxx,30,30,15,30,30,30;"+
                    "192.168.178.35,C4F31270xxxx,25,25,15,25,25,25;"+
                    "192.168.178.23,EC24B8Cxxxx,30,30,15,30,30,30;"+
                    "192.168.178.37,04A316B5xxxx,25,25,15,25,25,25";
!Liste der Presets, die mit einer REPEAT_ALL Funktion gestartet werden sollen
  var repeat_list = "4,5,6";

!Liste der Presets, die mit einer SCHUFFLE_ON Funktion gestarte werden sollen
  var shuffle_list = "4,5,6";

!*******************************************************************************
!*************************** ENDE DEFINITIONSBEREICH ***************************
!*******************************************************************************
WriteLine("Definition CHECK");

!gewünschtes Soundtouch Preset aus Systemvariable holen und setzen
var ST_Preset = web.webGetValueFromList(dom.GetObject(sv_Werteliste).ValueList(),dom.GetObject(sv_Werteliste).Value());
boolean ST_Master_Status;
string ST_Slave; !ST_Slave.StrValueByIndex(",", 0) 0=IP, 1=ID, 2=Volume1, 3=Volume2

!Zählen wieviele Slaves vorhanden sind
integer ST_Slavecount = 0;
foreach(ST_Slave, ST_Slaves.Split(";")) {
  ST_Slavecount = ST_Slavecount+1;
}

!Überprüfen ob der Master bereits eingeschlatet ist
  dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("/usr/local/addons/cuxd/curl -s -k -L http://" # ST_Master_IP #":8090/now_playing");
  dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
  if(dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State().Find("STANDBY") != "-1"){ ST_Master_Status = false; }
  else { ST_Master_Status = true; }

if (ST_Preset == "Aus") {
  !Wenn Master bereits eingeschlatet war
  if (ST_Master_Status == true) {
    !Virtuellen Powerbutton drücken
    string CurlCmd='/usr/local/addons/cuxd/curl --data "<key state="press" sender="Gabbo">POWER</key>" http://' # ST_Master_IP # ':8090/key';
    dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State(CurlCmd);
    dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
    dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
    !Virtuellen Powerbutton loslassen
    string CurlCmd='/usr/local/addons/cuxd/curl --data "<key state="release" sender="Gabbo">POWER</key>" http://' # ST_Master_IP # ':8090/key';
    dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State(CurlCmd);
    dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
    dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
  }
  !Slaves ausschlaten
  if(ST_Slavecount >= 1) {
    foreach(ST_Slave, ST_Slaves.Split(";")) {
      dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("/usr/local/addons/cuxd/curl -s -k -L http://" # ST_Slave.StrValueByIndex(",", 0) #":8090/now_playing");
      dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
      if(dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State().Find("STANDBY") == "-1"){
        !Virtuellen Powerbutton drücken
        string CurlCmd='/usr/local/addons/cuxd/curl --data "<key state="press" sender="Gabbo">POWER</key>" http://' # ST_Slave.StrValueByIndex(",", 0) # ':8090/key';
        dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State(CurlCmd);
        dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
        dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
        !Virtuellen Powerbutton loslassen
        string CurlCmd='/usr/local/addons/cuxd/curl --data "<key state="release" sender="Gabbo">POWER</key>" http://' # ST_Slave.StrValueByIndex(",", 0) # ':8090/key';
        dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State(CurlCmd);
        dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
        dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
      }
    }
  }
}
else{
  !ST_Master mit Preset einschalten Einschalten
  !Preset in Soundtouch-Key wandeln
  var tmp_Key = "PRESET_" + ST_Preset;

  !Soundtouch-Key auf ST_Master ausführen
  string CurlCmd='/usr/local/addons/cuxd/curl --data "<key state="press" sender="Gabbo">' # tmp_Key # '</key>" http://' # ST_Master_IP # ':8090/key';
  dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State(CurlCmd);
  dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
  dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
  !SoundTouch-Key auf ST_Master beenden
  string CurlCmd='/usr/local/addons/cuxd/curl --data "<key state="release" sender="Gabbo">' # tmp_Key # '</key>" http://' # ST_Master_IP # ':8090/key';
  dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State(CurlCmd);
  dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
  dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();

  if ((ST_Master_Status == false) || (change_Volume == true)) {
    !ST_Master Lautstärke setzen
    string CurlCmd='/usr/local/addons/cuxd/curl --data "<volume>' # ST_Master_Volume.StrValueByIndex(",", ST_Preset.ToInteger() - 1) # '</volume>" http://' # ST_Master_IP # ':8090/volume';
    dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State(CurlCmd);
    dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
    dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
  }

  !Slaves koppeln
  if(ST_Slavecount >= 1) {
    foreach(ST_Slave, ST_Slaves.Split(";")) {
      !Prüfen ob Slave eingeschlatet ist
      dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("/usr/local/addons/cuxd/curl -s -k -L http://" # ST_Slave.StrValueByIndex(",", 0) #":8090/now_playing");
      dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
      if(dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State().Find("STANDBY") != "-1"){
        if (ST_Master_Status == false) {
          !Slave mit Master koppeln
          dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl -d '<zone master='" # ST_Master_DeviceID # "'>
          <member ipaddress='" # ST_Slave.StrValueByIndex(",", 0) # "'>" # ST_Slave.StrValueByIndex(",", 1) # "</member>
          </zone>' http://" # ST_Master_IP # ":8090/setZone");
        }
      }
      if((ST_Master_Status == false) || (change_Volume == true)){
        !Lautstärke des Slaves setzen
        string CurlCmd='/usr/local/addons/cuxd/curl --data "<volume>' # ST_Slave.StrValueByIndex(",", ST_Preset.ToInteger() + 1) # '</volume>" http://' # ST_Slave.StrValueByIndex(",", 0) # ':8090/volume';
        dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State(CurlCmd);
        dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
        dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
      }
    }
  }

  !ST_Master auf SHUFFLE_ON und REPEAT_ALL setzen
  !Shuffle bestimmen
  var shuffle_check;
  boolean shuffle = false;
  foreach(shuffle_check, shuffle_list.Split(",")) {
    if (shuffle_check == ST_Preset) {shuffle = true;}
  }
  if(shuffle) {
    !Soundtouch-Key auf ST_Master ausführen
    string CurlCmd='/usr/local/addons/cuxd/curl --data "<key state="press" sender="Gabbo">SHUFFLE_ON</key>" http://' # ST_Master_IP # ':8090/key';
    dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State(CurlCmd);
    dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
    dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
    !SoundTouchKey auf ST_Master beenden
    string CurlCmd='/usr/local/addons/cuxd/curl --data "<key state="release" sender="Gabbo">SHUFFLE_ON</key>" http://' # ST_Master_IP # ':8090/key';
    dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State(CurlCmd);
    dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
    dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();

    !SoundTouch-Key für NEXT_TRACK, dass es nicht immer mit dem gleichen Track startet
    !Soundtouch-Key auf ST_Master ausführen
    string CurlCmd='/usr/local/addons/cuxd/curl --data "<key state="press" sender="Gabbo">NEXT_TRACK</key>" http://' # ST_Master_IP # ':8090/key';
    dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State(CurlCmd);
    dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
    dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
    !SoundTouchKey auf ST_Master beenden
    string CurlCmd='/usr/local/addons/cuxd/curl --data "<key state="release" sender="Gabbo">NEXT_TRACK</key>" http://' # ST_Master_IP # ':8090/key';
    dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State(CurlCmd);
    dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
    dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
  }

  !SoundTouch-Key für REPEAT_ALL
  !Repeat Bestimmen
  var repeat_check;
  boolean repeat = false;
  foreach(repeat_check, shuffle_list.Split(",")) {
    if (repeat_check == ST_Preset) {repeat = true;}
  }
  if(repeat) {
    !Soundtouch-Key auf ST_Master ausführen
    string CurlCmd='/usr/local/addons/cuxd/curl --data "<key state="press" sender="Gabbo">REPEAT_ALL</key>" http://' # ST_Master_IP # ':8090/key';
    dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State(CurlCmd);
    dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
    dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
    !SoundTouchKey auf ST_Master beenden
    string CurlCmd='/usr/local/addons/cuxd/curl --data "<key state="release" sender="Gabbo">REPEAT_ALL</key>" http://' # ST_Master_IP # ':8090/key';
    dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State(CurlCmd);
    dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
    dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
  }
}
Gerne würde ich das Skript perfektionieren und mit Wünschen von euch füllen. Also bitte Feedback, Fragen und Wünsche äußern

Inspiriert durch:
viewtopic.php?f=37&t=29122
DANKE!
Zuletzt geändert von tobinedo am 24.09.2018, 19:52, insgesamt 8-mal geändert.

tobinedo
Beiträge: 23
Registriert: 23.02.2016, 11:46

Re: BOSE SoundTouch Einbindung (All-In-One Skript)

Beitrag von tobinedo » 25.04.2017, 13:35

FAQ

Wie richte ich meine Soundtouch im CUxD ein?
Hier verweise ich auch den Blogbeitrag von Peyto:
viewtopic.php?f=48&t=25087&start=10#p256168
Zuletzt geändert von tobinedo am 01.11.2018, 23:28, insgesamt 4-mal geändert.

Benutzeravatar
Nachtfux
Beiträge: 23
Registriert: 09.01.2016, 17:49
Kontaktdaten:

Re: BOSE SoundTouch Einbindung (All-In-One Skript)

Beitrag von Nachtfux » 06.08.2017, 11:51

Hallo und erstmal danke für das tolle Script.
Was mich noch interessieren würde ist, wie man MP3 Dateien direkt an die SoundTouch senden kann um die SoundTouch als Ersatz für den MP3 Funkgong zu verwenden. Hat da jemand eine Idee zu wie man das realisieren könnte?

tobinedo
Beiträge: 23
Registriert: 23.02.2016, 11:46

Re: BOSE SoundTouch Einbindung (All-In-One Skript)

Beitrag von tobinedo » 20.08.2017, 12:18

Nachtfux hat geschrieben:Hallo und erstmal danke für das tolle Script.
Was mich noch interessieren würde ist, wie man MP3 Dateien direkt an die SoundTouch senden kann um die SoundTouch als Ersatz für den MP3 Funkgong zu verwenden. Hat da jemand eine Idee zu wie man das realisieren könnte?
Du kannst über die Bose Soundtouch App eine DLNA Quelle oder andere Musikserver hinzufügen. Dafür brauchst du natürlich einen solchen Server. bieten aber die meisten NAS-Server, wenn du einen hast, ansonsten einen Rasperry Pi nehmen. Diese kannst du dann genau wie Online Streaming deinste als Favorit hinzufügen und ansteuern. Ob das ganze aber schnell genug reagiert ums als Funkgong zu fungieren kann ich nicht sagen.

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

Re: BOSE SoundTouch Einbindung (All-In-One Skript)

Beitrag von pesi » 13.06.2018, 12:37

Hallo Tobinedo,
erstmal mein Dank an deine ganze Arbeit......
Ich habe folgendes Problem.
Ich benutze von dem "all in once" Script die version 1.1 mit allen Preregs und es funktioniert alles.

Bei der Version 1.4 und gleichen Preregs klappt leider nach dem Eingeben im Definitionsbereich gar nichts.
Ich habe meine Daten und Syntax, Master und Slaves, schon mehrmals überprüft...leider ohne Erfolg.
An den Parameter der Klingelfunktion, sowie Shuffle und Repeat habe ich nichts verändert.

Muss ganz ehrlich sagen ich habe im Moment kein "packan" mehr.
Ich hoffe das Du ein paar Gedanken und Ideen hast.
Gruß Peter

Pfanni
Beiträge: 3
Registriert: 09.12.2017, 13:40

Re: BOSE SoundTouch Einbindung (All-In-One Skript)

Beitrag von Pfanni » 01.09.2018, 22:45

Hallo Tobinedo,

Danke erstmal für deine Arbeit.

Ich habe bei mir die Version 1.1 am laufen, aber die Zickt ein wenig beim ausschalten ab der CCU Firmware 2.31.23.
gehe ich zurück auf die CCU Firmware 2.29.23 funktioniert wieder alles wie gehabt.
Da habe ich einen Kleinen Eintraf auf easy-smarthome gefunden:

Update vom 10.01.2018
Bitte beachten Sie, dass seit der neuesten Firmwareversion 2.31.23 der CCU die Sonderzeichen und Steuerbefehle escaped werden müssen!
Beispiel: string MailText = "Dies ist ein Text mit Sonderzeichen \< und Steuerbefehlen.\\r\\n";

aber ich bin da mit meinem Anfängerlatein völlig am Ende und weis nicht was ich da ändern müsste damit sich die ST beim ausschalten nicht gleich wieder einschaltet.

Das wollte ich jetzt als Ansporn nehmen um auf deine Version 1.4 umzusteigen, aber da funktioniert nichteinmal mehr die Ansteuerung der ST.
Ich sehe da nur einen Runtime Error im CUxDaemon...

vielleicht hast du eine Idee was ich ändern bzw. anpassen muss.

mfg

Pfanni

Pfanni
Beiträge: 3
Registriert: 09.12.2017, 13:40

Re: BOSE SoundTouch Einbindung (All-In-One Skript)

Beitrag von Pfanni » 03.09.2018, 12:55

pesi hat geschrieben:
13.06.2018, 12:37
Hallo Tobinedo,
erstmal mein Dank an deine ganze Arbeit......
Ich habe folgendes Problem.
Ich benutze von dem "all in once" Script die version 1.1 mit allen Preregs und es funktioniert alles.

Bei der Version 1.4 und gleichen Preregs klappt leider nach dem Eingeben im Definitionsbereich gar nichts.
Ich habe meine Daten und Syntax, Master und Slaves, schon mehrmals überprüft...leider ohne Erfolg.
An den Parameter der Klingelfunktion, sowie Shuffle und Repeat habe ich nichts verändert.

Muss ganz ehrlich sagen ich habe im Moment kein "packan" mehr.
Ich hoffe das Du ein paar Gedanken und Ideen hast.
Gruß Peter
Hallo Pesi,

ich denke Ich habe den Fehler gefunden.
zum ausschalten musse du die Variable ST.Preset mit "aus,0,1,2,3,4,5,6" deklarieren,
und im Programm musst du:

!*************************** ENDE DEFINITIONSBEREICH ***************************

!Soundtouch Preset holen und setzen
var tmp_preset = dom.GetObject("Status.Soundtouch");

das "Status.Soundtouch" mit "ST.Preset" ersetzen, erst dann nimmt es die Werte der Systemvariable.

mfg

Pfanni

tobinedo
Beiträge: 23
Registriert: 23.02.2016, 11:46

Re: BOSE SoundTouch Einbindung (All-In-One Skript)

Beitrag von tobinedo » 04.09.2018, 22:25

Lang Lang ists her, dass ich hier was gepostet habe.

Ich habe im letzten Jahr das Skript etwas verfeinert und mit neuen Funktionen versehen.
(Die Klingelfunktion habe ich entfernt. Sie lief nicht zuverlässig)
Alle Änderungen und den Code findet Ihr oben.

Viel Spaß damit.

Ich versuche bei Gelegenheit auch einmal die Screenshots zu erneuern.

tobinedo
Beiträge: 23
Registriert: 23.02.2016, 11:46

Re: BOSE SoundTouch Einbindung (All-In-One Skript)

Beitrag von tobinedo » 22.09.2018, 16:59

Ich habe eine aktualisierte Version online gestellt. (v2.180922)

In v2.180904 habe ich das einzelene Ausschalten der Slaves entfernt, da diese auch ausgeschaltete werden wenn der Master ausgeschaltet wird.
Wenn aber in der Zwischenzeit ein Slaves etwas aus der Gruppe gelöst wurde, reagiert er natürlich nicht darauf. Ist jetzt wieder aufgenommen.

Nitram
Beiträge: 24
Registriert: 15.10.2018, 10:48

Re: BOSE SoundTouch Einbindung (All-In-One Skript)

Beitrag von Nitram » 29.10.2018, 09:47

Hallo tobinedo,

vielen Dank für dein Script. Bin neu in der Homematic Welt und habe mir am Freitag eine piVCCU mit Homebridge und ioBroker aufgesetzt. Zu Hause habe ich insgesamt drei Soundtouch Geräte im Einsatz (SoundTouch 20, 300 und 10). Ich benutzte bisher auch Alexa zum Spielen von Musik auf der Soundtouch. Wenn ich die Musik allerdings auf weitere Lautsprecher bringen will, muss ich bisher immer die App zücken. Ein Traum wäre es einfach sagen zu können "Alexa, spiele die Musik auch im Wohnzimmer". Nun sollte folgendes geschehen:

1.Routine von Alexa über ioBroker löst Script auf CCU aus
2.Schauen auf welcher SoundTouch überhaupt bisher Musik läuft -> Wird zum Master
3.Den gewünschten Slave (in diesem Fall "Wohnzimmer") hinzufügen

Ich denke das sollte mit Teilen aus deinem Script durchaus realisierbar sein. Soll auch keine Aufforderung zur Umsetzung sein, wollte lediglich meine Gedanken mit dir teilen. =)

Grüße,
Martin

Antworten

Zurück zu „CUxD“