A number of months ago I became obsessed with the idea of controlling my room lighting using knobs in the wall. Crazy, I know 😉
Seriously though, most lighting automation systems do not use rotary controllers (i.e. knobs), but rather you have to keep your finger on a button until the desired light level is reached. Isn’t that so 1990s? Knobs are the way forward. Worse still, many only let you select “scenes” without even controlling individual light level. So I set about making my own digitally controlled lightswitch. The process has been one of research and learning new skills. Soon enough I stumbled upon the ultimate way for things within the home to communicate with other things: MQTT.
Here are my design goals for the ultimate home control panel for each room.
Use physical buttons and lights NOT touchscreen. I find touchscreens great for web browsing but when I want to control lights and volume I need an accuracy and responsiveness that can only come from;
- tactile switches with visual feedback
- rotary controller knobs
- display screen showing levels as percentage (i.e. numbers) for fine adjustment
Look sexy. DIY metal faceplates with push buttons conjure-up images of 1970s style control panels. Disabled toilets. Hobby aeroplane remotes. I’m going with brushed stainless steel faceplates with no visible screws, smaller LED-integrated tactile buttons, matching brushed steel knob.
Use numbers on the display. In the increased sexification of home automation, things have become too touchy-feely. Having controlled lights and music from my iPad, I get annoyed if you press in slightly the wrong place, or need to make that super-fine adjustment. Also I get annoyed by the ubiquitous slider and the lack of information it provides the user.
- The faceplate must run at low voltage, requiring no special electrical certification
- Connected with ethernet (CAT5, 6, or 7)
- Powered over the same ethernet cable
- Fit within a back-box readily available in shops: 47mm depth max
- Use “Scene” buttons to quickly select the lighting mood in a room
- Dim individual lights in a room to create your own scene
- Quickly cycle between different lights in a room
- Control music volume and see what’s playing (track title and artist)
- Similar to light scenes, there should be audio “favourites” (i.e. radio channels, playlists, shuffle mode for a given genre, etc.)
- The unit is designed for a range of functions, but can be expanded later to incorporate more. e.g. lighting and audio modes have their special uses and displays. As it’s based on Arduino, the sketch can be updated by USB later.
- “Thing” settings (i.e. how many lights in a room, the name of a light in the room, the name of a scene for a given room) should be queried from a server and downloaded to volatile memory at startup. These things are not stored in the unit.
- We should be able to press an “update” button to pick-up the latest settings. Home automation installers and users change their minds all the time!
- “WAF” is an offensive phrase used in #homeautomation talk. It stands for “wife adoption factor”. Maybe “GAF” – grandparent adoption factor? No – that’s swapping one prejudice for another. “HAF” will do nicely – human adoption factor. The controller must be the perfect balance between powerful and usable. I don’t mean “powerful for the geek, usable for the granny”. I mean “equally powerful and usable for both”.
- This means: consistency of display and immediate access to primary functions. No menus, no prompts! Placement of buttons should be intuitive.
- All light should cease when it hasn’t been touched for a while. No lights in the middle of the night!
The solution I’ve settled for is a “mode cycle” one. Like old digital watches. The mode button is set apart from other buttons and placed near the icon displaying the current mode. All other physical controls depend on the mode in question, and their function is intuitive given the placement.
Consistency comes from the unit defaulting back to a “primary” mode after x seconds of not being touched. The display dims appropriately.
Here’s a brief demo of the progress so far – January 2015: