I recently got excited about the idea of creating a web software to run locally for my home that could be accessed via computer, smart phone, or tablet, which would give me complete control over most of the house's functions.

I went ahead and wrote the code to control a virtual home that's displayed on the site to show your changes instantly. The virtual home responds great, however, I'm a bit stumped as to how I can implement many of the features into a real home. I already added function calls to empty functions that are supposed to change the actual hardware, however, I haven't written any code for them because I'm not really sure what's available and how I could implement it. Here's a few of the main features in the virtual home that I need to connect to and control via the server, so essentially I need a way of controlling these features from a computer.

LED Lighting:

I'd like to be able to install LED lights with color changing capabilities. I've tried LED lights in the past, and they don't quite work for this application for a few reasons:

  • Narrow beam. I'd like it to spread light like a normal lightbulb, rather than having a beam of light.
  • Color selection. I wrote the code to basically take colors in an RGB hex format, so I'd like a bulb that can do millions of colors, not just 16.
  • Dimming options. I've seen bulbs that have like 255 different light levels, and I'd love that capability.
  • Effects. If I could fade, flash, etc. from color to color, that'd be cool, or at least be able to do it using code, even if it's not built-in.

While these are fairly major, obviously the biggest problem is finding a way to individually control the lights via computer.

Speaker Control

I'd like to install speakers throughout the house that can be controlled to play music from a centralized library, but more importantly, I'd like individual control of which speakers play what, so different rooms could be playing different songs simultaneously. Again, this would all need to be controllable from the server.

Automagical Appliances

My wife was fond of the idea of being able to turn the oven on or off remotely, so she could access the house's server from her phone through a purchased domain name, and get the oven heating before she got home, or make sure she hadn't left it on.

Basically, if you know of any way to control various appliances and capabilities of a home via computer(preferably low-level commands, such as in a console), I'd love to see what options are available, and possibly expand the capabilities of my software.

1 Answer 1


What you're looking for is home automation. X10 is probably the most popular technology system for this, but that Wikipedia page lists a number of alternatives.

To address your specific areas of interest:

LED lighting

There may be pre-built solutions out there, but as you're already writing custom software, you may want to look into using something like the Arduino platform to control your lights. Done correctly, you should be able to get the effects you're after. I found a tutorial about how to do a simple LED system that may be useful.

Speaker Control

There are actually a number of systems out there for home media distribution, such as Linux MCE (it took awhile to load that page when I wrote this, but it did load without timing out). You may be able to use one of these, or work some of the code in from one to duplicate the functionality (MCE is open source). The most simple solution is to use small appliance computers that run a very lightweight Linux solution (like MCE) that stream from the base computer. There are actual streaming devices out there, but I'm not sure how well they would integrate into your automation/control software. If you literally just want to run speakers, you'll need multiple sound cards in the base computer to differentiate between the feeds.

Automagical Applicances

This is where the home automation tech comes in. Using something like X10, you have the ability to flip switches, monitor their status, etc. There are appliances out there that will talk some of these languages, allowing you to control them remotely. A quick search turns up an Engadget article pointing out LG Thinq devices that are accessible via WiFi and ZigBee. If you program your software to speak ZigBee, you should be able to integrate these appliances. Given the number of different protocols out there, you'll probably want to find your devices, try to settle on devices that use one protocol, and then write your code to speak that protocol, but you can also work with multiple protocols if you don't mind developing for each. I believe Linux MCE supports a few of those languages, and since it's open source, you can expand it to support whatever you'd like.

  • Good complete answer, a bit sad to see that it looks like I'll have to spend extra money to get gadgets that are specially designed for home automation, but at least it's a step in a good direction. Linux MCE looks promising to help me avoid low level protocol programming as much as possible, however, it's looking more and more like I'll have to hardcode my software specifically to my home. Also, Arduino looks good for some applications, but I can't see it being useful for LED fixtures that meet the criteria I posted, any other answers would be appreciated
    – Ecksters
    Commented Jul 25, 2012 at 19:17
  • If you're really good with electronics, you could (DO AT YOUR OWN RISK, NOT RECOMMENDED) probably hack your existing oven, but the most straightforward (SAFEST) approach would be the new appliances. I suggested Arduino mainly because it seems to be showing up everywhere. The project I linked was one of the simplest ones I've seen. That said, hopefully someone more knowledgeable will chime in. You may get better responses from Electrical Engineering on those specific topics.
    – ND Geek
    Commented Jul 25, 2012 at 21:02

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.