I’ve been thinking about a “simple” method for building a whole home audio system that wouldn’t tie me into any particular vendor’s products.
I have six audio zones in my home, driven by two Dayton Audio MA1240a amplifiers, and have a separate Apple Airport Express connected to each zone. I then use Airfoil from Rogue Amoeba to enable each zone, set volume, and play content. The system worked fine, but some of the Airport devices are starting to fail, and I would like to come up with another way to do this.
First off, let me say that I’m not interested in different audio sources for my indoor zones. My goal is to play something from my Volumio server and then simply enable or disable a zone. I think I can pull that off pretty easily with an ESP32 and some inexpressive relays (see diagram below), and then can enable/disable a zone from within Home Assistant. What this doesn’t give me, however, is volume control. Any ideas on how I can do this and make it accessible via Home Assistant?
The relays can be a problem, the coil can introduce noise into the system.
They make 0 current latching relays that should only add noise when the relay switches.
Relay control is easy in HA via esphome, they also make LAN controlled relay modules, but once again noise if its not latching
Relays that can handle the high current and voltage spikes for audio applications are not cheap, they can run several hundred dollars each… thats why good audio hardware is usually really expensive
KUL-11D15D-12 is a socket mountable dual contact dual coil relay with a 12V coil, they are $70 each, and can deal with a single pair of speakers if you dont switch the negatives or 1 speaker if you do. Dual coil means you can specifically activate or deactivate using voltage to a pin, with each pin having a different action, this is compared to a bistable relay which toggles on a single pin, but you have no specific control of the state.
These relays would be switched by a low power bank of solid state relays, controlled by something like an ESP32 board or RPi, this reduces the 300ma required to switch the relay down to 2ma which can be handled by GPIO
The combined solid state to latching transfer mechanism should remove all the noise from the system if the control voltage is isolated and filtered, and is vendor agnostic, there are other similar relays from other vendors, these were the first I found that fit the design in my head.
A pair of 8-channel SSR modules could control all 6 zones, you need 12 GPIO for that, and 1 channel of the SSR pair can control multiple latching relays, but the SSR needs to be DC compatible (type-f)
Thanks for your insights Richie. I did think about the possibility of noise, but wasn’t sure if that would be an issue or not. I’ve ordered the parts, so I’ll proceed with the experiment, and will see what happens.
I think Snapcast is a viable solution. Unfortunately. I can’t seem to get it to work. Installing the plugin on the Volumio box was easy enough. I then installed Volumio on a second Raspberry Pi and installed the Snapcast plugin there as well. I then disabled the Snapcast Server, enabled the client, and configured it to point to the Snapcast server. I then point my browser to the Snapcast Server WebApp, on port 1780, but it doesn’t seem to be available. I also tried enabling Snapcast in Home Assistant, but that doesn’t work either, so there’s no way for me to interact with it. I know others are able to get this working, so I’m sure the problem is me.
If you know of a good in-depth tutorial, please let me know.
I know you weren’t asking for suggestions for other systems, but i’ve used Volumio and Snapcast and moved over to Logitech Media Server (Squeezebox) and would never look back.
All parts can be built with Pi’s and you get a really good system out of it, basically a cheapo Sonos alternative.
Snapcast can be really powerful but also really complex. I spent more time on it than I should have, and LMS just worked within minutes.
Thanks for the suggestion Andy. I’ve installed piCorePlayer and LMS. I’ve been able to set volume, enable shuffle, etc, from HA, but I can’t figure out how to play a playlist.
With Volumio, I would call the service “media_player.select_source” and set my playlist with “source: playlist_name”. Unfortunately, this doesn’t work with the new setup.
Does LMS (in this case I mean PiCoreplayer) support Spotify and Spotify Connect? So is it possible to use the HA integration of Spotify to send a URI playlist to the LMS server as a Spotify Connect speaker?
I can speak to it… LOVE IT! I can’t believe it took me as long as it did to move to LMS/PicorePlayer. SO much better than Volumio.
Not sure if it has been mentioned but get the material theme as well. Such big props to the dev of that theme, he really does a great job on it and even released an APK for android so volume buttons work.