2010 Home Automation Control Of RGB LED Lighting Strips
I'm replacing the blue fluorescent lighting above my fish tank with LED strips. The original intent was to use blue LEDs, but as I'm already going through the effort, I opted to use RGB LED strips (each LED is made up of three LEDs, one red, one green, and one blue), allowing me to create and endless choice of colors (although I know that I'll primarily use various flavors of blue to simulate moonlight).
The RGB LED strips come on a reel and are encased in rubber so they are waterproof. The strips can be spliced and reconnected at specified cut marks, and the reconnected strips can be waterproofed, too. RGB LED strips are powered by 4 wires, one each of red green and blue, and a common wire. Run power on the blue and common and the LEDs glow blue. Run power down the red and green and the common and the LEDs glow yellow. You get the idea.
Simply turning on and off power (at full intensity) to any wire is easy, any switch can do that. For greater control, and to be able to mix amounts of each color to obtain the exact color you want, that requires a RGB controller. Most controllers allow for some sort of color selection, and adjust the power to each wire accordingly. Pretty simple.
Where things get trickier is finding the right controller. Most RGB LED controllers are interactive, push a button or turn a knob to control the lights as you wish. What I needed was a way to do this under home automation control, so that changes could be scheduled or occur in response to other actions. And I could not find a single RGB LED controller with a programmatic interface. The next best option was to try the IR route. There are controllers with remote controls, and Insteon home automation can use an infrared link to fake remote control sequences. Unfortunately, that option did not work. The remotes that I found all allowed for cycling through programs or increasing and decreasing lighting power, but none allowed for explicit control over the R, G, and B values.
So, time to introduce a whole new technology and protocol to the mix. DMX512 is a communication standard commonly used to control stage lighting and effects. It's been around for over 20 years, and is what most clubs and concert halls use to sequence lighting, fog machines, moving lights, and more. It's a very simple and open protocol, and is widely supported by all sorts of hardware, software, devices, and more.
I found a DMX Decoder which accepts DMX512 commands to power RGB LEDs. The decoder plugs into any DMX512 source on one end (using an XLR connector), and connects to the RGB LEDs (via a simple screw terminal) on the other end. So now all I'd need to do is generate DMX512 sequences programmatically to fully control my lights. Simple, right? Not quite. Unfortunately, my Insteon based home automation system does not support DMX512.
My home automation controller, which I've discussed previously, is the ISY-99 from Universal Devices. One feature of the ISY-99 that I had not previously played with was its Network Module, an optional component which allows the controller to communicate with network resources over HTTP, TCP, UDP, and more. Using the Network Module you can talk to just about any networked device, sending raw text, binary data, and more.
With the Network Module I could send DMX512 commands to the DMX Decoder, all I would need is something to bridge DMX512 and Ethernet. And I found this exact bridge, the Ethernet / DMX512 Generator made by Cinetix in Frankfurt, Germany. This device does exactly what I was looking for, it acts (among other things) as a Telnet server, accepts commands, and generates DMX512 sequences which then get passed to the DMX Decoder which in turn controls the RGB LED strips. And the commands are pretty simple. For example, send S001,V$FF to turn on the red to full brightness (S001 is the first slot, red, and V$FF sets the value to 255), and so on. (The only gotcha is that Cinetix does not sell the device in the U.S., so I had to have it shipped to an address in Europe and then brought it over myself).
The last thing to do was to define the commands in the ISY-99. I added a whole bunch of commands, one for each color I'd want. Each command simply sends raw text TCP data to port 23 on the DMX512 Generator, and in milliseconds the lights respond. These commands can now be triggered as needed in the home automation controller. I can invoke them on scheduled intervals, in response to buttons being pushed or toggled, and much more.
So, I now have RGB LED strips above my fish tank powered by a DMX Decoder which receives commands from an Ethernet DMX512 bridge which in turn receives Telnet commands from my ISY-99 home automation controller. (And I even have a little in-house ColdFusion app on my home Intranet which pops up a color picker, allows for color selection, converts the selection to the required DMX512 Generator sequence, and then sends the command as a socket request to the controller)!
Now that I'm reading through everything I just wrote up, it seems like a whole lot of work for what started as a simple fish tank lighting enhancement. But, hey, this stuff is fun. And it's cool to see all the pieces fit together. And it's really cool to see just how flexible the Universal Devices ISY-99 is.
2009 Home Automation And External Devices
It's been a while since I posted an update on my home automation adventures. But, having spent some time tweaking my system this week, I thought it worthwhile to share what I've been up to.
But first, a detour. As many of you know, I am an aquarium enthusiast, and made the switch from freshwater to saltwater marine fish about 9 years ago (I've posted some pictures to Flickr). And recently my setup suffered a minor setback. I have a 180 gallon fish tank stocked with all sorts of marine life (including coral, anemones, shrimp, urchins, and of course, fish). I have another 100 gallon tank below, which is used for filtration, and it is home to biological filters, a protein skimmer, a UV sterilizer, and more. That lower tank is also where water is added during water changes. Well, a couple of months ago that lower tank overflowed for several hours, and the backup measures I had in place to prevent flooding failed. Besides from water in my basement, I also ended up with a drop in water salinity levels (as salt water was being replaced by fresh water), and that stressed out marine life causing them to spew toxins which in turn hurt lots of my invertebrates and coral. The tank has since recovered nicely, and in fact may be healthier now than it was before, thank goodness.
But this little adventure prompted me to look into how home automation technologies could have helped the situation, and prevent similar situations in the future. Obviously, a water sensor could have helped. These are typically little boxes that connect to a sensor that sits on the floor, and when the sensor gets wet a circuit is completed and an alarm goes off. These are cheap, readily available, and really easy to use, but useless if no one is around to hear the alarm.
And then I discovered the Shut Off Valve Kits created by OnSite Pro. Like other sensors, this kit is made up of a small control box and a sensor that is placed on the floor, under the device that could leak. And like other sensors, when water is detected, an alarm sounds. But this goes a whole lot further, it also actually cuts off the water supply to prevent further flooding. It does this via a motor controlled ball valve that sits in between the water feed and your pipe (so it sits inline in between the faucet and whatever is connected to the faucet). When water is detected, and the alarm sounds, the motor is activated, and the ball valve closes, shutting off the water supply. OnSite Pro creates several versions of the kit with different size adapters (for washing machines, dishwashers, ice makers, etc.) ranging in price from $80 to $140 or so. The water feed for my fish tank is actually a washing machine feed, so I used the washing machine version. The sensor is now on the floor right beneath the lower tank, and if the sensor gets wet, the alarm sounds, and water feed is cut off. This is a no-brainer and I'd recommend installing these for use with washing machines and more, installation is quick and easy, and if you ever suffer a burst hose or a leaking washing machine, you'll be thankful for the minimal investment that could prevent serious flooding. Seriously, even if you're not tinkering with home automation, this kit can save you lots of time, money, and aggravation - this should be installed standard with every appliance that uses a water connection.
But wait, it gets better. We can also introduce home automation into the mix. Why would you want a home automation tie-in to a cutoff valve like this? Well, you could have all the lights in your house flash when a leak is detected. Or you could have the system send you an SMS alert. Or you could sound a louder alarm. Lots of options, you get the idea. The Shut Off Valve Kits do not have any integrated home automation support, but they do have an ingenious little interface that makes home automation possible. At the bottom of the control is a little connector where you can attach two wires. These wires are usually part of an open circuit, meaning that they are like a switch in the off position. But when the presence of water activates the alarm and closes the water valve, it also closes this circuit, like turning on a switch. The use of this wire is optional (and not even properly documented in the kit), but it is the key to tying in home automation.
Which brings me to the next Insteon device you need to know about, the I/O Linc. This is a plug in device, (it plugs into any outlet, and provides a pass-through outlet so the outlet can still be used as needed) which contains a wire block at the bottom to which you can attach sensors and more. Sensors generally come in two forms, normally open (circuit broken, like switched off, so when switched on an event has occurred) and normally closed (circuit closed, like switched on, so when switched off an event has occurred). The I/O Linc essentially allows you to connect any device that exposes a change in circuit making it a sensor (and it can also take actions, but more on that in a moment). So, all I needed to do was plug in an I/O Linc near the water shut off kit controller, attach the little connectivity to wire to the control, and then connect the wire to the I/O Linc connectors for a normally closed circuit. Now, when the water sensor activates the alarm and closes the water shutoff valve, it also tells my I/O Linc that the sensor is active, and now that the home automation system is aware of the event, well, it can do just about whatever you can dream up (in my case it sends me an e-mail and an SMS message). Pretty slick.
I/O Linc opens up all sorts of possibilities. If you can find a sensor, chances are that it can be made to work with the I/O Linc. In fact, SmartHome sells sensors for everything from water, to light, to motion, to sound, to temperature, to rainfall, to RFID, to keypads and more. And they also sell a magnetic garage door sensor, which I just installed last night (and thus this post). The I/O Linc Garage Door Control And Status Kit contains the previously mentioned I/O Linc, a magnetic reed switch which acts as a sensor, and a strong magnet. The reed switch switches between two circuits, one that is normally open and one that is normally closed. When the magnet is close to the switch, the open circuit closes and the closed circuit opens. So, mount the sensor on the garage door frame and the magnet on the garage door itself, and now you have a sensor that indicates if the garage door is open or closed. (The I/O Linc also features a relay that can be connected to the garage door activation switch, allowing control of door opening and closing, too). Next, simply connect the sensor to the I/O Linc, and now your home automation system can react to garage door openings and closings. For my own setup I connected each garage door to an illuminated switch in the house, so the lights show me which garage is open and which is closed, and I can use those switches to open and close the doors, too.
And I'm just getting started. For less than $50, I/O Linc opens up all sorts of new options to home automation enthusiasts, and is both useful and lots of fun.
2008 My Favorite Home Automation Controller
In previous posts I discussed home automation using X10 and Insteon. There are other technologies out there, and I've tinkered with many of them, but my own system is all built using a combination of X10 and Insteon.
Home automation technologies are used for a variety of reasons and to solve a wide range of problems. For example, what if you wanted a way to turn your outside lights on and off from your bedroom upstairs, how could you do this? Traditionally you'd need to install a multi-way circuit adding another electrical switch in a new location and then running electrical wire to the new switch. The logic used to wire 3 (or more) way switches is pretty simple. Getting the electrical cable through the walls to the new location can be far less so. Using home automation technologies the task becomes a whole lot simpler. You can replace the existing light switch with one that can be controlled remotely, and then install a new light switch anywhere else in the house. The new light switch would not actually switch anything directly, it would be connected to the live electrical feed and likely have no load. Then you'd program the new light switch to remotely control the old one. Turn the new one on and a signal gets sent over the wire and triggers the actual light switch. Clean, simple, no messy wiring, and you'd be done for under $100. Remote control is actually a common use for home automation technologies. So much so that the vendors in this space all sell multiple switches in a single switch size and format, as many as 8 push buttons in the form factor of a regular light switch, and each can be programmed to do a different task.
But what if you want to do more? What if you want timers and scheduled events - things like turning on and off lights at sunrise and sunset, or turning on appliances at 8:00am, or faking random home activity when you are away? What if you want to automatically respond to events - things like turning on lights when a motion detector is activated, or turning off valves if water is detected in the basement, or shutting garage doors 15 minutes after they were opened if they were in fact left open? All of these, and more, require that a home automation controller be introduced into the mix.
Home automation controllers come in two primary forms, software and devices:
- Home automation software runs on a computer in your home. You typically have the option of registering devices, clicking to trigger actions, drawing floor plans, writing programs or execution sequences, and more. The software needs a way to communicate with the actual home automation network, and so there is usually a connection (originally serial, now USB) that connects to a modem that plugs in to an outlet. Commands are transmitted via the modem, and events are routed back to the software when the occur. I've generally avoided software based controllers for the simple reason that I don't want to have to rely on a PC running at all times.
- Home automation devices are just that, dedicated devices for home automation, all with ways to program them. Some plug into outlets and accept programs that are created using a computer and then uploaded via a USB connection (so the computer is needed at programming time but not at runtime). Others are wall mounted in double gang boxes and have their own power feeds and touch screen interfaces. Others have their own power supplies and integrated HTTP servers and are managed over a local LAN. And home automation controller devices are what I've been using for years.
My previous controller was a wonderful little touch screen device that installed into a regular double gang box. It required power from a plug in adapter, and transmitted data via a connected modem that plugged into another outlet. To use these I installed outlets inside of a wall, and mounted the touch screen in front of them. The device allowed me to touch any light to turn it on and off, activate scenes, and program times and schedules. It was an entirely self-contained X10 only controller, and it served me well for about 7 years, until the touch panel stopped responding to touch in some places, and it started to lose time, and more. So, time for a new controller, and this time one that supported Insteon as well.
I looked at several controller options, and the one I ended up installing is the ISY-99i from Universal Devices. This is an inexpensive and tiny device, but don't let its size deceive you - it is about as powerful a controller as I have ever run into.
The ISY-99i is a little black box with LEDs on the front and two CAT5 connectors on the back. One of the CAT5 connectors plugs into your home network, and the ISY-99i gets an IP address via DHCP on startup so that you can connect to it. The other CAT5 connector is used to plug the device into a PowerLinc Modem (PLM for short) which is used to both power the device and to send data over the electrical system.
Once powered up you simply use your web browser to access the ISY-99i to do all management and programming. The device features a simple web interface for basic on/off controls and the like, and a big old Java applet administrator for more control and management. Key features include:
- Simple options for finding and adding devices, creating scenes, and more. And UI to click on any device to control it.
- Support for Insteon, X10, and RF.
- A very powerful (and simple to use) programming interface. You can define events (button pressed, scene activated, X10 signal received, etc.) and schedules (times, dates, days of week, sunrise/sunset, etc.), and then define the actions to perform if the conditions are true or false. The UI walks you through the process so no actual coding is needed. The programming constructs are simple and intuitive, but don't let that simplicity fool you. This is powerful stuff!
- Ability to send notifications via e-mail and SMS.
- Automatic NTP lookups, and locale specific calculations based on selected city or longitude and latitude (this is how it can determine sunrise and sunset, for example).
- Newer versions of the firmware have added extensibility options, including a Web Services interface. Now that really opens things up. (More on this in a future post).
The ISY-99i also has perfected the process of applying firmware updates. (I've downgraded once, because one other device I was using required this, and since then have upgraded to the latest firmware). Just download the firmware ZIP file, go to the UI, upload it, and the device reboots and you're done. This is actually more important than you might think. As vendors release new hardware and devices, Insteon controllers like the ISY-99i often need updating to support them. Simple foolproof firmware updates are critical.
Universal Devices support has been superb. When I first installed the ISY-99i, I was running into some bizarre problems that ended up being caused by a faulty PLM - it was not their product that was at fault but they worked with me to figure it all out anyway. I've dealt with their support via e-mail, forums, and on the phone, and Universal Devices wins top marks for going above and beyond what can be expected for a device that costs just a few hundred dollars.
So, I've been using my ISY-99i for about a month. I have dozens of devices being controlled by it (both Insteon and X10), have created all sorts of programs and scheduled events (it is completely running my fish tank setup now). And thus far it's worked perfectly. (And yes, as you'd expect, I've already submitted lots of enhancement requests).
The ISY-99i is priced between $300 and $370 (there are several models with the key differences being the number of scenes and programs supported, and whether or not the device is an IR receiver itself).
So, power, simplicity, extensibility, price, support ... which is why this one is my new favorite home automation controller.
2008 From X10 To Insteon
In my prior post I introduced the basics of home automation via X10. X10 is not a new standard and specification, it has actually been around since the 1970s. And over that time is has not evolved much, if at all. X10 is incredibly popular, because of its simplicity and extensibility and low cost.
But X10 also has some very real problems:
- X10 signals are not 100% reliable and can be affected by other plugged-in devices. Erroneous and seemingly random signals are not uncommon, and are hard to truly eliminate.
- X10 signals lose their strength over distances, so the bigger your house the less reliable the signals. You can buy repeaters and signal boosters, but these are not perfect.
- X10 has a very limited address range, and if your next door neighbor gets into home automation you can end up bumping into each other. And the likelihood of this happening may be higher than you think. As such, you may need to install signal filtering on the AC feed to your house to block signals from passing in and out.
- Getting X10 signals to pass between the two electrical phases in a typical U.S. AC installation can be rather painful. There are bridges that can help with this, but their installation is not for the feint of heart, and they don't seem to work perfectly.
- But the biggest drawback to X10 is the poor error correction. X10 signals are kind of tossed over the wall, a broadcast, perhaps telling device F2 to turn on. But X10 does not provide a failsafe way to check that that the signal actually reached device F2, and that device F2 truly is on. So, while things usually work and work well, when they don't there is little you can do automatically or programatically.
Over the years we've seen a variety of home automation technologies appear on the scene, and I've tinkered with most. But the one I've grown most impressed with, and have started to migrate to, is Insteon (created by SmartLabs). Insteon is relatively new (the first Insteon devices started appearing in mid-2005) and works much like X10 but with some very important differences:
- Insteon never suffers from signal loss because all devices are repeaters, so the more complex and sophisticated your home automation network, the stronger the signal.
- Insteon uses 3 byte device addresses, and devices have manufacturer defined addresses (a bit like NIC MAC addresses). So device addressing conflicts are a thing of the past.
- Insteon is a dual-mesh specification, featuring AC signaling like X10, but also supporting RF.
- Bridging the two AC phases with Insteon is easy, just plug one Access Point (a little white box) into any outlet on one phase and a second on any outlet on the other, and you're done. The Access Points have LEDs that will show you if they are wired correctly (on two different phases as opposed to the same phase), and you can just keep moving the second around until the LED indicates success. And as an added benefit, the Access Points act as signal repeaters and RF receivers. too.
- Most importantly, error detection and correction is built in. Devices can be easily queried, and simply publish their current state, and signals are automatically retransmitted if they were not correctly received.
- And best of all, Insteon is fully backwards compatible with X10. In fact, just about every Insteon device can also have an X10 address allowing them to respond to both signals, and most Insteon controllers can also send X10 commands, too. While not actually required by the Insteon specification, most Insteon device vendors seem to be providing X10 compatibility.
- Insteon is also much faster than X10, and thus the "inst" in Insteon.
Insteon is installed and configured in much the same way as X10 is. To install an Insteon switch you'd simply remove the original switch and replace it with the Insteon equivalent. Same for outlets, and any other devices. Addresses do not need to be defined, as every device has a preconfigured address (that is usually on a label on the device itself). Controllers can query the entire home network and find new devices automatically. And devices also identify themselves so controllers can respond intelligently (so that, for example, a switch used for fluorescent lighting that does not support dimming can identify itself so that controllers know not to try to send it dimming commands).
The biggest limitation with Insteon right now is that there are far fewer devices available for it than there are for X10. But, with X10 backward compatibility, that is less of an issue. For new installations you can buy X10 devices (realizing that you'll not get the same level of functionality obviously). And for those of us with significant investments in X10 already, Insteon provides a vastly superior home automation network while not requiring tossing out any existing devices. (Of course, if you are anything like me, you'll find it hard to resist replacing those existing X10 devices once you get used to the richer functionality of their Insteon counterparts).
In other words, to me, Insteon feels like what X10 should have been in the first place, and is thus the heir apparent to X10.
In future posts I'll highlight some of my favorite devices, including my new all time favorite home automation controller.
2008 Home Automation Via X10
As many of you know, I am a bit of a home automation nut, and for close to a decade I've been wiring and rewiring parts of my home, while tinkering with all sorts of gadgets (some very useful, some admittedly less so). Part of the appeal is the fun factor. But there is a very practical aspect to this as well.
For example, I have a large saltwater marine reef fish tank in my house (it sits in the wall between my office and the family room). A healthy reef tank needs reliable lighting, with different lights (and different intensities) at different times of the day - brightest simulated sunlight at midday, moonlights at night, and more. Water temperature needs to be monitored carefully, a sudden drastic rise in temperature is a surefire way to kill off soft corals (I know, I've had it happen). And more. And flipping all of those switches manually is a pain (especially with my travel schedule). And so the entire setup is automated. Daytime lights start to turn on at sunrise and are off by sunset, and moonlights are obviously the reverse. Temperature changes outside of a set range are immediately reported to me via SMS, and I can check the temperature from anywhere in the world at any time. Even water leaks or overflows (a real concern when you have close to three hundred gallons of water being pumped around your house) trigger immediate alarms and notification (and will soon automatically activate cutoff valves). You get the idea.
So, how does this all work? Over the years I have played with a variety of home automation technologies, but have ended up sticking with X10. If you've not run into X10 before, here's what you need to know. The technology has been around for over three decades, and it is popular because it is easy to use, very flexible, and pretty cheap, too.
X10 works by allowing you to send signals over your house electrical wiring. To turn a switch on or an outlet off, you simply send a message over the AC wiring specifying the switch or outlet address, and the instruction. The appeal of X10 is that it needs no special wiring or data lines or anything like that. X10 commands are sent over the same electrical lines that the devices are already connected to.
Obviously, to make this work, you need switches and outlets and devices that are X10 compatible, and there are lots of these. Using standard wall light switches as an example, you'd buy an X10 replacement light switch, remove the existing one, and replace it with the X10 equivalent. The light switch would still function locally as it did before, but now it could also accept instructions sent over the same AC wiring that the switch is using to power the lights.
Every X10 device on your network must have an address, and X10 addresses are 1 byte long (or technically 2 sets of 4 bits), so a maximum of 255 devices can be connected at any given time. X10 devices do not come with preset addresses, and at setup time you pick the address you want for each device (and multiple devices can actually be given the same address, which can be a blessing and a curse). A command sent over the wire is then sent as address + 4 bit instruction code (3 for on, 11 for off, 15 for dim, and so on). Commands are usually sent by other devices. For example, if you want a light switch in one part of your house to control a light elsewhere, instead of having to run new wiring (and setting up 3-way switching) you could have the new light switch set up to send commands to another light switch, essentially creating a remote control of sorts.
Many home automation setups use large collections of switches and outlets and more all connected to each other. But where things become more interesting is when a controller is added to the mix. A controller lets you execute scheduled events, run through scripts in response to an action, activate entire scenes all at once (press a button on the wall marked "movie night" and the curtains close, lights dim, projector drops from ceiling, fireplace turns on, outside lights turn off to dissuade visitors ... you get the idea).
Which is exactly how my fish tank setup (among other things) is automated. I have a wall mounted controller that is powered by an AC feed and also sends back signals over that same feed. It allows one touch control, execution of timed events, and more.
The key is that home automation technologies like X10 allow you to break out of the simple "click this and that happens" mould. Instead, you get to mix and match triggers and their actions, using an ever growing array of triggers, and actions only limited by your imagination. And the array of X10 devices is truly remarkable. There are the obvious things, like switches and outlets and plug-in pass-through modules and keypads, to less obvious things like thermostats and motion sensors and security system integrators and irrigation system controls, to slightly more obscure devices like gas and water valves and curtain/shade openers/closers, to all sorts of connectivity modules allowing connections to IP networks and RF and phone systems. And there's a whole lot more, too.
It's fun, it's easy, it's inexpensive, and it works. Usually.