Wednesday, July 28, 2010

Designing a Z-Wave controller

One of the downsides of being an early adopter of a technology is having to live with the lumps of the first versions. Actually, that's really the only one. We bought all-new Z-Wave home automation hardware when we were building our house so we could have it all pre-installed, and that includes the central remote controller which is in a way the heart of the system -- even if you rarely use it. (In fact, they recommend you put it in a drawer and never touch it. How's that for an odd design.)

The problem we keep having with it is, once any module dies, there's no way to fully remove it from your system, and I mean fully, other than wiping the whole thing out and rebuilding. If you are just using the remote, that means maybe an hour of walking around the house, pressing buttons, and rekeying names into the remote. If you also use a computer with HomeSeer or the like, it's a lot hairier, since you'd also have to rebuild your devices and those events that linked to them. As long as you don't do that, there's a chance of having some groups fail to turn on and off for a pause of 30 seconds or so, which may not seem like much, but it's sure annoying. Not annoying enough yet to actually do the full reset.

What would tip me over the edge is if we could get a nice controller in the process, since the one we have now, pictured above, is really badly designed. Other than six devices, you can't get to any device other than by scrolling through the whole list, and once you get there, you can't turn it on or off; you can only toggle it, but the toggle depends on whether the remote knows the current state, and (and this is amazingly dumb) the remote makes no attempt to keep track of the state being changed by anything but itself. Despite the fact that it could hear other Z-Wave commands, and despite the fact that Z-Wave can poll devices, and despite that Z-Wave has "on" and "off" commands, not just "toggle" commands. So the upshot is you usually have to do several dozen clicks to turn the device on or off, and then do the same several dozen clicks a second time.

Another mind-bogglingly dumb design decision: the tiny LCD screen isn't backlit. Why would you want the screen to be backlit on a device you are using to turn lights on and off, where you need to be able to read the screen to operate it?

So I found myself imagining the perfect design for such a device, and I don't mean the "genie out of the bottle" design where cost isn't a factor, but a design that would be pretty much as cheap to manufacture as the one we have, or only a little bit more. And you could make a really rocking controller at that price point just by applying some principles of design to it. This is what I came up with.

The remote is about the size of a TV remote, or a bit wider. The top two thirds of it is taken up by an LCD screen that has six rows, with a button on each side. This doesn't have to be pretty color high-res LCD screens you're seeing even on cheap MP3 players these days; it can be the clunky old LCD screens from calculators. It just has to have six rows with 10 or more characters per row. Below all of this is five more buttons arranged in the familiar "directional cluster" formation, up down left right select.

The controller is normally off: nothing shows on the screen at all, to save battery power. Press any button, and it turns on, including a backlight. It turns off after 30 seconds of not having any buttons pushed, or when you press and hold the Select button for 3 seconds.

Normally, it'll show the first six devices in the current location, one per row. The button to the left turns each device off; the button to the right turns it on. Press-and-hold the left to dim, if dimmable; press-and-hold the right to brighten. The remote will also make some attempt to get the status of those devices (on, off, dimmed) and indicate this with an icon on the right edge; but nothing needs to wait for those statuses to be updated.

Use the directional up and down keys to scroll down to the next six items, if there are any. (The screen should have a "more above" and "more below" indicator at top and bottom to indicate whether there are any.) Use left and right to move to other locations (location in this context would normally mean a room, but you can use it however you like). The remote would remember what location (and where down the list in that location) you were when it turned off and return you there.

The select button would switch to a menu system navigated by the arrow keys, which is where you'd go to do everything else. That includes setting up devices and their locations; setting up and playing out scenes; setting up timers; and system stuff like exporting settings. (It would probably be set up so the first thing on the first menu was where you'd go to execute scenes, since everything else is mostly setup stuff, but that's execution stuff.)

In terms of hardware this is less ambitious than many Z-Wave remotes, and yet it would be far more functional for the everyday activities of turning things on and off, instantly, without having anything in the way. It's neither too dumb (like my current remote) nor too smart (like those which are trying so hard to have pretty graphics that they don't put the things you need to do right now at your fingertips right now). Why doesn't anyone consult me for the design on these things? I'd happily offer my services for cheap. All I'd want is one of these controllers.


Mr. David Michael Merchant said...

Wow, their design is almost unbelievably not thought out. Cool design you have for a replacement. I'm functioning on less caffeine than normal, so excuse me if I misunderstood one part: if pushing a button once turns on/off, how would holding it down dim (since pushing it down once would turn the item off)? Or would the controller not automatically send the on/off signal but wait to see if the button isn't quickly released - if quickly released then send the on/off signal, otherwise shift to dim control?

Hawthorn Thistleberry said...

Just as you speculated, and the same as how your mouse knows the difference between a click and a drag, the action usually happens on the release. Even the $5 X-10 controllers could do that part.

Anonymous said...

Note that the remote you pictured is over 5 years old and the first design. Take a look at the Cooper remotes at, they are back lit and work MUCH better. Also, with the HomeSeer software, you can easily remove a dead node from your network.


Hawthorn Thistleberry said...

How do you remove a dead node? I've asked on the forum a number of times, but that's pretty pointless if one wants answers but isn't prepared to dedicate three hours a day every day becoming part of the club.

I did comment on how the remote I have is one of the first that they made. But while I've looked at some of the newer ones and they have some notable improvements, none of them comes anywhere near to what I described in terms of usability. I'll wait a little longer for them to get truly good, not just less bad.