You know how it goes. You start with one or two home control devices. You find it amazing that you can control them from your phone. You want more. And more…
Here’s a quick diagram of my current setup at home.
There are at least 77 items for the home control system to control. Each one has a unique set of capabilities, and inter dependencies with other devices. Certain groups of these items require different communication protocols, some radio, some infrared, some HTTP and some via a webserver.
As my system has been created from several protocols and brands, I find it engaging and a full-on hobby to ensure they perform perfectly in concert. Basic scripting has become more in-depth as I attempt to squeeze out the most from every device. Although adding additional functionality is stimulating for me and ultimately rewarding for me and my flatmate, each iteration adds a new layer of complexity – and like every complex system, the bigger it is, the harder it can fall.
I’ve recently been faced with a problem. A few times in a row, the Raspberry Pi 2 has frozen overnight. The controls and automatic lighting obviously do not respond, and then something as simple and as taken for granted as getting light and audio into the shower requires scrabbling through phone apps: not good if the water is already running! Worse, the switches that are supposed to be triggered in the early morning, such as the “it is dawn” variable do not fire. So with such a complex system how do you diagnose the problem?
The first answer is logs. Loads of logs. Ensure each of your subsystems are writing down what they are doing and just as importantly when they are doing it. You can then rifle through the logs and find anything that is not behaving as you’d planned.
Okay, so this may be the most geeky thing I have said on this blog so far, but I like to keep diagrams and spreadsheets showing which systems and activities are inter-related. And in the event of a catastrophic failure, they pay dividends. You can literally trace your finger through the lines and see which scripts you need to check if something is not working right. You can also keep track of things like ID codes and group codes for all your connected devices.
To do this you need to empty the house of unexpected variables (i.e. the rest of the family and pets large enough to trigger any sensors) and then physically run through each process that you think may be causing the problem. If you are anything like me this usually involves an embarrassing and potentially uncomfortable period where you are remaining totally motionless right in front of a motion sensor to see what happens when the “no movement here” signal is sent.
You may be surprised by the other users’ perception and understanding of your home control system. Ask other occupants what they think is happening. At best they could hit the nail on the head, and if not they just may throw something so left-of-centre out there that is provides you with the fresh outlook you need to trace the problem.
I feel this entry will become outdated very soon. As consumers we are on the cusp of having our cake and eating it: a fully integrated one-stop solution for home automation that will work seamlessly and without requiring manual programming. It may even have the ability to provide reasons for failure and suggest ways to work around it, especially if open-source and app-based: a fellow user in the Netherlands could be granted temporary access to help sort out the problem you’re having with your garage door in California.
This new way will remove the complexity involved in getting disparate systems to work together, but will it provide the level of control we ‘first gen’ full home control aficionados will require? Either way, I’m glad I’ll be able to say “In my day, we had to fumble around to find the solutions to these issues, and sometimes create our own!”