Over the last few months, I’ve gotten several requests to launch an iPhone version of the HomeRemote app which will connect to your existing Arduino server for controlling outlets and speakers. If you implemented this project already, you can just grab the new app(s) for a complete graphical redesign and more powerful settings.
I’ve made a major revision to the documentation for HomeRemote Home Automation over at Bitbucket, with changes for the Speaker Zone control and Outlet control sections.
There have been no functional changes to the web server code. I hope that the documentation changes (including diagrams) make it much easier for new users to get started with this project.
Take a look and let me know what you think!
Just as a teaser, check out the new App screenshot in the documentation. This is in anticipation of releasing completely new versions of the remote control App. They will be available soon on the iPhone and Android app stores simultaneously, and the announcement is currently pending Apple’s review/approval process.
Uptime Robot – http://uptimerobot.com/
Uptime Robot monitors your websites every 5 minutes and alerts you if your sites are down.
Business / Website monitoring
Google Analytics – http://www.google.com/analytics/
Provides search engine information (keyword usage, click-through rate, etc.), details about your visitors, their browser, and their flow through your website, tracks conversions, and lots more. This is a powerful all-around monitoring tool.
Very capable server monitoring tools are built into the operating system.
Performance Optimization Tools
YSlow – http://yslow.org
YSlow analyzes web pages and suggests ways to improve their performance based on a set of rules for high performance web pages. YSlow grades web page based on one of three predefined ruleset or a user-defined ruleset. It offers suggestions for improving the page’s performance, summarizes the page’s components, displays statistics about the page, etc.
Performance Testing Tools
JMeter – http://jmeter.apache.org
The Apache JMeter™ desktop application is open source software, a 100% pure Java application designed to load test functional behavior and measure performance.
Other commercially available tools can integrate with a wider range of applications or provide more advanced monitoring/reporting, but this is a great tool for accomplishing the goal of load testing an application.
Here’s my write-up of an Arduino project that will enable speaker zone switching across your home WiFi network from your Android smartphone. A networked 4-zone speaker setup using Android as a remote control. Here are the instructions and code you need to do it too!
Watch the demo to see if it’ll do what you need (Youtube)
This provides the 4 big resistors to add 4 speaker zones to your powered second zone (or first zone, even). The watts delivered to a speaker varies based on how many speakers you have turned on, because there are resistors that get turned on/off to keep your receiver/amplifier from frying (impedance protection). I’m starting to question whether I should have gone with 8 zones, and the same company has that option here.
Update 10/30/13: The 4 zone device has been working great under pretty consistent use for 6 months now. Just wanted to chime in with that, since this plays a critical part of the switching setup.
Making the speaker selector work over the Internet
There’s a great pre-made relay module that I bought to simplify the construction of this whole thing. It is marketed as being Arduino compatible, but really anything with low voltage driver output would work, and it really simplifies the relays. SainSmart 8-Channel 5V Relay Module for Arduino
For four zones, it turns out you need 8 relays (4 left speakers & 4 right speakers). To each of the four contacts below each of the four switches, you’ll need to solder a cable. They’re using one switch to connect both the left and right speakers, so we’re going to have 16 solder points.
First zone is done:
A more zoomed in view of the 4 solder points for each zone:
Here it is hooked up:
And the whole system:
(The breadboard just has a 315MHz transmitter, see my last blog post to find out why. The entire breadboard is completely optional for this project.)
I added the code to my Arduino webserver, which will handle requests at /speakerStatus to see which are active, and /speaker?zone=&state=<0/1> to turn a zone on/off.
Speaking of the Arduino, I used the Ethernet model rather than buying an Ethernet shield separately. I don’t know if that’s still being sold. I am planning to port the code over to Raspberry Pi this winter to act as a lower-cost, higher-feature server.
But for the time being, take a look at the Arduino server and Android app code on Bitbucket here!
Android App Speaker Selector
Along with all that, I created barebones Android app that will request those URLs for you with toggle buttons. Code for that is also in the above repo. In addition to the basic functionality – querying status and updating the zones, a long-press on a button will allow you to rename any zone.
Modernizing the audio receiver
To complete my houses audio setup, I bought a web-enabled receiver for my Pandora/Spotify playing. I timed it right and got a good deal on an end-of run of last year’s model for this receiver… this is the current model: Onkyo TX-NR525 5.2-Channel Network Audio/Video Receiver
Of course it comes with an Android/iPhone app for remote control, to make this entire system complete! I’d say that Onkyo’s app for Android is pretty good, with a nice selection of internet radio options, Spotify being the one that sold it for me.
Bottom line… I can be in the basement and turn on my workout music without running upstairs to change any settings.