General agreement on the network reliability of the Bose SoundTouch.
But (IMO) the sound is better. I have 6 systems (went all in before realizing the SW issues) and they fill the house beautifully with sound when they work.
To that end, I have found that the (poorly written) phone apps and the (out of date) HA component are partly to blame for the problems. The speakers themselves contribute but are not 100% responsible.
I have been experimenting with the raw BOSE API, sending it rest commands.
I am having very good success with these little automations
- id: GroupAfterKitchen
alias: Group after Kitchen
initial_state: true
trigger:
- platform: state
entity_id: media_player.bose_kitchen
from: 'off'
to: 'playing'
action:
- service: rest_command.bose_add_stairs
- service: rest_command.bose_add_lounge
- service: rest_command.bose_add_family_room
So I use the HA Component here to detect when the speaker starts playing. This seems to be reliable for me.
and then I use these rest commands as the actions.
rest_command:
bose_add_stairs:
method: POST
url: http://192.168.2.180:8090/setZone
payload: '<?xml version="1.0" encoding="UTF-8" ?><zone master="000C8AC06D11"><member ipaddress="192.168.2.182">A81B6A53F41B</member></zone>'
bose_add_lounge:
method: POST
url: http://192.168.2.180:8090/setZone
payload: '<?xml version="1.0" encoding="UTF-8" ?><zone master="000C8AC06D11"><member ipaddress="192.168.2.181">08DF1F0DC6E0</member></zone>'
bose_add_family_room:
method: POST
url: http://192.168.2.180:8090/setZone
payload: '<?xml version="1.0" encoding="UTF-8" ?><zone master="000C8AC06D11"><member ipaddress="192.168.2.183">B0D5CCD8F1C5</member></zone>'
bose_add_back_deck:
method: POST
url: http://192.168.2.180:8090/setZone
payload: '<?xml version="1.0" encoding="UTF-8" ?><zone master="000C8AC06D11"><member ipaddress="192.168.2.186">EC24B8E5CF0E</member></zone>'
bose_add_master_bedroom:
method: POST
url: http://192.168.2.180:8090/setZone
payload: '<?xml version="1.0" encoding="UTF-8" ?><zone master="000C8AC06D11"><member ipaddress="192.168.2.185">F45EAB5367D7</member></zone>'
I created the payload by using Postman and playing with the API reference
https://developer.bose.com/guides/bose-soundtouch-api/bose-soundtouch-api-reference
Basically, make a zone with the phone app, then call getZone with Postman to get the strings you need for the rest_command payloads.
So now all I need to do is turn on the Kitchen Bose, best done with the remote / push buttons on the unit and then a few seconds latter the other speakers join the zone. And its reliable! The only unreliability is when HA does not see the state change of the speaker. This has only happened once over the past month for me (I use it every day) and rebooting the speaker fixed this.
(I plan to look into using rest_commands to reboot the speakers every night)
I have a similar automation on the Lounge Bose, but it creates a slightly different speaker grouping. And I exposed the “add_back_deck” rest_command to an Alexa routine so I can say “Alexa, add back deck”.
At the moment this is a messy cut and paste implementation because “zone_master” is hard coded into the rest commands. I need to template that so its more elegant. I’ll post it back here when I get around to it.