Over a year after it began, the whole-house-audio project is complete. 4 rooms around the house can now be filled with the sound of any of (currently) 4 audio devices thanks to a mixture of hardware and software.
The project had a slightly rocky start, with a prototype not functioning at all and partly destroyed amplifier (which was thankfully fixable by replacing a couple of components). A software alternative was considered at one point, to avoid too much expensive hardware. The hardware solution proved to be less complex and more likely to work.
The living room, dining room, kitchen and master bedroom are host to a pair of speakers each, connected to matching 240W rack-mounted amplifiers housed in my home-made full-height 19″ rack cabinet. The cables that carry the audio signals to the speakers were installed along with 24 runs of CAT5 before moving into the house.
The audio is routed to the amplifiers via an 8×8 VAMS-0808 AV matrix switcher, which allows the 8 outputs to take their inputs from any of the 8 available sources. Only 4 of each are currently in use, so there’s plenty of room for expansion.
4 audio sources are connected via simple custom-altered CAT5 cables, which simply transmit line-level signals over the existing twisted pair infrastructure installed in the house. These sources are currently the DAB radio in the kitchen, the TV in the living room, the computer in the dining room (for playing CDs) and a second DAB radio in the master bedroom.
I’ve written the software to control it all using .Net (C# of course), running on mono on linux. There are four components to this:
- To control the matrix switcher, I have written a library which communicates with the VAMS-0808 via an RS232 serial connection. The software can perform any of the operations that can be performed via the front panel of the device, apart from switching power on and off.
- The amplifiers are connected to an APC AP9212 MasterSwitch Power Distribution Unit which was bought with this project in mind. Controlling this is slightly less straightforward and not quite as elegant. The library that I’ve written for this communicates through the telnet interface of the MasterSwitch to turn devices on and off.
- Combining these two libraries is a simple web server which presents an equally simple XML-based web service. The service allows room inputs to be changed and switches the amplifiers on and off as necessary. This runs on a low-power disk-less computer running Ubuntu, hidden within the rack cabinet.
- A touchscreen web interface acts as a front-end to the entire system. The simple menu system uses iUi for a clean touchscreen-friendly design. As with the web server this runs on a low-power machine, although this one has a small hard disk and runs Windows due to technical issues with the touchscreen.
There is currently just the one controller front-end, located in the dining room. To listen to the kitchen radio, for example, all that is necessary is to select the ‘Kitchen DAB Radio’ option from the main menu, then select which of the 4 rooms to play it through – or all of them if you are going to be wondering around most of the house.
Future extensions
Thanks to building the web interface with iUi, the system is compatible with the iPod Touch and iPhone, so they can instantly act as frontends for audio control. A second fixed controller may be added in the master bedroom in time, if there’s enough money available. Each front-end costs about £200 in hardware, depending on what bargains can be found on eBay.
The matrix switcher supports both audio and video. Only the audio channels are used at the moment, so there is the very real possibility of using the remaining 4 output zones to connect to TVs around the house and adding some AV sources. This way it’s instantly converted into a whole-house-AV system. The video signals can be carried over the twisted pair CAT5 cables like the audio, but will require a little more hardware to preserve quality. This hardware is relatively expensive, although savings can be made by building the equivalents by hand. Following the tradition of this project, that’s probably what I’ll do. I have done it before while I was at university and it works beautifully.
Looks good, bet you are glad you have finished! Could you turn it in on itself to use webcam to see what room people were in? Or for home security? Or is it just a communications console.
Yep, it’s a relief to have finished something at last. I did try out setting up networked webcams for security, but my parents weren’t too keen on the idea. External webcams might be an option though.
There is also the possibility of tying in with the security system but all this conflicts with saving enough money to buy a house.
Another possibility is using it for home automation – turning lights and other electrical items on and off. Tied in with motion sensors, this can save power by turning off or reducing the lighting in rooms that appear to be unoccupied.
The heating system could also be integrated so that only the rooms that need to be heated at certain times of day have their radiators turned on. Our heating system doesnt have a thermostat and our gas bills are huge, so doing something with the heating could be beficial.
Killswitch,
Any chance, you could let me have the serial commands you were able to work out, please.
Trying to control the VAMS from a Crestron system!
Does it need a or do you just send the command?
Thanks and regards,
Paul.
I can provide the source code for my implementation of the interface. It’s written in C# and should be fairly straightforward to follow. I was going to write up a guide for control of the VAMS0808 but it proved to be quite complicated with all the different possible states.
I’m cleaning up the code at the moment, and I’ll make a post about it when it’s ready.
What serial codes are you using to read the current state of the system? I’m trying to implement an interface using php with a serial extension, but I haven’t found any read state commands for the VAMS.
Nicely done project, btw. What you’ve documented so far has been very helpful.
The source for the C# version should be released soon. You should be able to follow that, or at least extract the commands from it. In the meantime you may wish to look at my post about the initial commands that I discovered before owning the unit at http://www.killswtch.net/2008/02/17/the-vams-0808-matrix-switcher-and-determining-its-protocol/
Please note that the post doesnt contain all of the necessary commands, and does not take into account the reponses from the VAMS-0808.
The source for the VAMS-0808 control software is at http://www.killswtch.net/2008/08/23/source-code-for-the-vams-0800-serial-interface/