
Homeassistant: Bose Soundtouch Multi-Room Audio
Mit dem Release 0.107 erhielt die Bose Soundtouch Integration nach langer Zeit ein nützliches Feature für die heimliche Beschallung über mehrere Räume. Das Soundtouch System von Bose kann auf einfachem Weg mehrere Lautsprecher zu einem Verbund zusammenschließen und Audio synchron ausgeben. Das funktionierte in Homeassistant auch seit geraumer Zeit, jedoch gab die State Machine keinerlei Infos/Attribute preis, ob aktuell ein Lautsprecherverbund aktiv und welcher Lautsprecher der Master des Verbunds war. Diese fehlenden Attribute wurden im Release 0.107 ergänzt und nach einer anfänglich fehlerhaften Implementierung mit dem Release 0.108 komplettiert. Existiert ein Zonenverbund steht nun unter den Soundtouch Media Playern das Attribut is_master: true/false
zur Verfügung.
Zeitgleich zu dem Release erfuhr auch die grandiose Custom Lovelace Card Mini-Media-Player ein Update, um einfach einen Verbund (Zone) von Lautsprechern erstellen und auflösen zu können. Diese Custom Card kann einfach über HACS in Homeassitant installiert werden. Für die Nutzung von Multi-Room-Audio in der Lovelace Card gibt es einen eigenen Abschnitt in der README.

Template Sensor zur Ausgabe des aktuellen Masters
Wer in seiner Homeassistant UI nun einen Sensor haben möchte, der angibt welcher Lautsprecher gerade der Master ist oder ob überhaupt eine Zone aus mehreren Lautsprechern besteht, kann das auf folgende Weise mit einem Template Sensor und einer zugehörigen Automation, die diesen Sensor updated, lösen. In dem folgenden Beispiel nutze ich meine drei Soundtouch 10 Lautsprecher und einen Wireleass Link Adapter, die mit dem Namensschema media_player.soundtouch_RAUMNAME
benant sind.
Template Sensor
Der Template Sensor iteriert über alle Lautsprecher, prüft ob eine Zone existiert und sucht anschließend nach dem Attribut is_master
. Anschließend gibt er den Namen des Lautsprechers aus. Existiert keine Zone gibt er No Master
aus.
- platform: template
sensors:
soundtouch_master:
value_template: >
{% set master = states.media_player | selectattr('attributes.soundtouch_zone', 'defined') | selectattr('attributes.soundtouch_zone.is_master','eq',True) | map(attribute='name') | list | first %}
{{ master if master else "No Master" }}
friendly_name: 'Multiroom Master'
Das Problem mit diesem Sensor besteht darin, dass er mit keiner Entity_ID arbeitet. Dadurch updated er sich nicht selbst. Die Hintergründe sind in der offiziellen Homeassistant Doku nachzulesen. Daher wird noch eine Automation gebraucht, die den State aller eingebundenen Soundtouch Lautsprecher überwacht und anschließend den Template Sensor updated.
Automation zum updaten des Template Sensors
In der nachfolgenden Automation müssen die Namen der Lautsprecher entsprechend den von euch vergebenen angepasst werden:
- alias: Soundtouch update master sensors
initial_state: True
trigger:
- platform: state
entity_id:
- media_player.soundtouch_kuche
- media_player.soundtouch_room2
- media_player.soundtouch_schlafzimmer
- media_player.soundtouch_wohnzimmer
action:
- service: homeassistant.update_entity
entity_id: sensor.soundtouch_master
Ergebnis
Der erstellte Sensor mit dem namen sensor.soundtouch_master
kann nun in jeder Lovelace Card eingebunden werden:

Hallo
Danke für diesen guten Beitrag, einige der Fragezeichen rund um den mini-media-player haben sich dadurch gelöst.
Für das Beispiel oben mit der Soundtouch Room2 würde mich der Code für die Karte interessieren, denn die Geschichte mit den 6 Stationstasten bekomme ich irgendwie nicht funktionierend gelöst…. Vielleicht magst du den Code der Karte teilen?
Die Karten, die du hier zeigst, finde ich generell optisch sehr gelungen 🙂
Danke und Grüße
Hallo Marko,
Danke für dein Lob. Die Beispielkarte setzt sich aus folgendermaßen zusammen:
– eine picture-entity card, die ein Bild des Soundtouch und den aktuellen Zustand darstellt
– eine custom:mini-media-player card, die dein Problem mit den 6 Presettasten wunderbar löst
– damit die Karte keine optischen Ränder hat, sind sie in einer custom:vertical-stack-in-card eingebettet
Hier ist der Code:
https://gist.github.com/schneekluth/3583960e0f91c9b0d317c0dd55f6a042
Viel Spaß damit.