UPDATE: I’ve reposted this to the 2024 WTH. Please go vote for it here!
HA now has a feature to detect and set up pretty rare Bluetooth devices like Miflora plant sensors. Why does this ignore Bluetooth speakers, which are far more common and requested ? Playing music and audio notifications are far more common needs. Let’s get loud with the new Bluetooth stack!
It would be straight-forward enough in theory to create a Bluetooth audio integration that paired the device to the system, at which point pulseaudio would treat them similarly to locally connected speakers. But this won’t do what people want. To have them actually work as media players it would be necessary to implement a local media player to actually play the audio source. That is not easy, especially since you need to configure them to output to specific pulseaudio
Even then the ability to play audio on more than one speaker depends on the specifics of the Bluetooth adapter used, as certain older one cannot support that.
Also all of this so far has been assuming classic Bluetooth audio, but there is now a new BLE based Bluetooth audio standard that makes things even more complicated.
Furthermore the chances that esphome bluetooth proxies would support audio is basically zero, so it could only support speakers in range of the Bluetooth of the home assistant machine itself.
Basically Bluetooth audio is absurdly complicated, would take an enormous amount of work to support, and would still have weird limitations that users might not expect.
Yes, especially with the rise in popularity of Bluetooth LED Bulbs, it would be neat if we can use those bulbs to play notifications and messages throughout the house. Range is an issue, hopefull that can be solved with some sort of proxy.
Just chiming in here with some additional interest. I have had no problem using esphome and an ESP32 to stream music to an attached speaker via I2C, so it would seem that the ESP32 can at least stream music as an audio device. the trick is then pairing a bluetooth speaker with an ESP device as an audio output. So it seems possible to do HA->ESP->audio-out, but instead of a wired speaker, one that is paired with the ESP32.
Can you share which project you have used?
Since bluetooth audio is still not practical, I am looking in to different ways to get it working. I would probably solder my own board and install it in the ceiling with a speaker.
Take a look at esp32 squeezelite. This runs an instance of squeezelite on an esp32. You will also need to be running Logitech Media Server (LMS) which is a add-on for Home Assistant.
Esp32 squeezelite can directly output audio to a Bluetooth speaker or an I2S DAC.
I’ve been using this for multi room audio as well as broadcasting home assistant audio messages. LMS is very well supported by home assistant.
LMS and PiCore player on Raspberry Pi does a great job of connecting blue tooth speakers. As noted in earlier posts it is well integrated into HA as well.
Yeah. To be honest, I’m more excited by the option to have HA speak to me and speak info updates when I wake up or get home, than I’m excited by being able to talk to my HA (although that’s pretty cool, too).
Ideal situation for me would be combination of ESPHome’s bluetooth proxy functionality and Bluetooth speakers/headphones.
So Have ESP32s in many rooms, that talk over wifi with ESPHome / Home Assistant backend and connect over Bluetooth with Bluetooth speakers / headphones in the respective rooms. Basically ESPHome should support A2DP Bluetooth profile on ESP32.
Obviously they (The ESP32s instead of the Bluetooth speakers/headphones I’d assume would make more sense) should be seen as mediaplayers in Hass.
I’m also very frustrated that Bluetooth speakers are not available in HA. It’s the most widely developed wireless streaming environment in the world, and is just ignored.
I am currently using a bluetooth speaker to play audio from Music Assistant. It was a little difficult to set up (I am a novice at best), but it works. I had to connect the speaker to the Raspberry Pi 5 using web terminal bluetoothctl. Then I set it up in VLC add on, plays on VLC telnet.