8 Rules For Building Successful Home Automation
Building a smart home is really exciting, and when you start, you are eager to automate everything. If you've ever felt the need to automate the toilet or create complex systems to manage your lights, you might know that there is some sort of golden formula for successful automations. Some like to measure this using a "significant-other satisfaction index" which tends to be low when things go wrong or are a tad expensive. Let's take a look at 8 awesome rules for building great automations that everyone will like!
Table of Contents
Being perhaps the most important factor, maintaining expectations is critical for successful automations. This doesn't mean ensuring your family members and friends know exactly what your system does; rather, it means making the system work with what they are expecting. No matter what you are doing, don't reinvent the light switch - instead, build on top of it using a smart switch. Smart bulbs that require an app and prevent the switch from working are clunky to use, and most will constantly turn it off using the switch regardless. Why is it so hard for them to understand how to do it right?
In reality, the problem is not with them but with the system design. People expect switches to be used to turn the lights on and off manually, and when you force people to act differently, they will become confused. Imagine if car manufacturers suddenly combined the accelerator and the break into one pedal. People would likely hate it, and it may even result in accidents and loss of life. A smart home is no different as any significant change from what a normal home would have is sure to cause confusion. As a result, you should always offer a "normal" method in addition to your automations to maintain people's expectations.
Have a backup
Imagine that the front door uses a smart lock. Now imagine that the batteries have died and the door remains locked no matter how many commands you send it. Most commercial locks will then have a key that can be used to unlock the door manually in such a situation, as otherwise there won't be any way to open the door (without breaking it). This is an important lesson in home automation design, as it's get wrapped up in how great automations are and forget about situations where everything stops working correctly. That's why there should always be a backup for everything. In the case of the door, you should always carry around the backup key. Smart lighting that makes use of smart switches can also still be operated manually in the case of a fault.
It would be easy to forget to include these backup mechanisms despite how immensely important they are, which is why it is crucial to design a manual override. There is nothing worse than when automations end up making your life more difficult than it was before because of failures. I once had a lamp that sat on my nightstand and provided useful information based on the current colour. It would occasionally turn on to full brightness in the middle of the night, blinding me and waking me up fairly frustrated. My solution was to unplug it when it behaved this way, but if it had been hardwired, this could have caused me a lot of pain at 3 am. The lesson is to always have a plan for what will happen if some automation suddenly stops working or behaves in a strange way.
Involve your users
Any good design should always carefully consider the person it is ultimately made for. In software design, we call these people users who represent an essential part of the development process. The story is always the same: you may think you know what the users want, but you usually don't. As such, there are multiple points in modern development processes that verify the direction of the project with the users. At any one of these points, a user could bring up a concern with an idea or a current implementation detail that they don't feel is right. A good team will carefully consider the feedback and either make changes to the system or go out and learn more about the given issue to come up with a complete solution.
That is how things normally work for professional development teams, but a good smart home should operate on many of the same principles. If you think about who will be using your automations the most, they are probably your family members or roommates, and in most cases, they have little to no input on how they will be created. An awesome smart home is built on the opinions of everyone that will use it on a regular basis. They may bring something up you've never thought of or come up with a better idea than anyone else. Get their input when you have a new idea or when you are testing a prototype.
You should never be hearing user feedback for the first time once everything is finished. Be sure to listen carefully to what they have to say and never to put an idea in their head. Let them speak freely as that is when the best feedback comes out!
Keep It Simple Stupid (KISS)
The KISS principle is a real design principle noted by the U.S Navy in 1960. It revolves around finding the simplest way to accomplish a given task within the specified parameters. The acronym is helpful to designers who may need to remind themselves of "KISS" every now and then. If there is one thing you should take away from this list, this is it. Anytime you are thinking of an idea for a new automation or a new device install, always remember the KISS principle. The idea is easy: don't make things more complicated than they need to be. You will find yourself thinking up awesome systems with all sorts of inputs and outputs, but in the end, the simplest one always wins.
The goal should be to achieve your mission in the easiest way possible, without adding unnecessary details that don't further the primary function of the system. A classic story goes something along the lines of a factory that has problems with occasional empty boxes making their way to the end of the assembly line. To resolve this, they come up with a complex system that carefully weighs each item and compares it with a known index to decide whether it is an empty box or not. It costs loads of money and took ages to implement. On the first day it was set to run, the designers noticed it was turned off. When they went to investigate, they found an employee had placed a fan near the line that was blowing off the empty boxes, being unable to blow the full ones.
Whether this story is real or not doesn't really matter. The lesson is clear: don't over-engineer things! Especially when they are to be used by people other than yourself, such as in a smart home.
This goes hand in hand with user expectations as the action of making people use your existing automations is creating new expectations for them. An example could be that every switch in the house can be pressed once to turn it on, and again to turn it off. If that system is already in place, you shouldn't add a new switch that requires a short press to turn on and a long press to turn off! This may seem obvious, but even professional design companies mess this one up on a regular basis. It's easy to get tied up in the specifics of a given project so much that you forget to look at the bigger picture of how this will fit in with the rest. Always consider how a new automation will work with the existing system and ensure you remain consistent across the board; your users will thank you!
Make room for user error
One thing that is as certain as the passage of time is that users will make mistakes while using any system. I bet you've even done it many times while using some app or website where you might accidentally delete everything instead of just one line or believe you had saved when you actually had not. All of these could be the user's fault, but often it is a sign that the design does not adequately consider human nature. Most programs will deal with this problem by having an "undo" button, or by taking advantage of auto-save, or even by opening a confirmation dialogue when users are about to do something big. All of these features make the experience better by understanding that people make mistakes and providing ways to limit the damage that can be done.
For smart homes, the idea is that you shouldn't assume your users are going to be perfect every time. That means leaving room for mistakes along the way whether that's leaving 10 seconds to enter a code instead of 5, or having the automation verify the state of multiple sensors before launching. That way, the system could detect an error such as starting the coffee machine without a cup underneath and act to prevent mistakes actively instead of relying on users always to make the right call. You may have used systems that don't do this before, such as a digital clock that needs to be set within a specific time else it resets. Most will agree this is an awful experience - consider mistakes in your automations!
Function over everything
Everything is a bit of an exaggeration, as you should obviously never forget the safety of what you are doing. The point is that by now, you've probably seen how easy it is to get wrapped up in details or aesthetics that don't push towards the actual goal. That's why it's important always to consider the function of what you're building before wandering towards exciting things. The solution for this would be to start by achieving the end goal first, then considering adding any extra features. Another reason projects often deviate far from the original idea is that the project drags on for too long, allowing it to gather many extra non-essentials along the way.
The most important part of any smart home is the functionality it delivers to make your day better and to reduce the amount of time you spend doing repetitive tasks. Unfortunately, every year tons of projects fall victim to the forgotten function, typically dooming it to a slow and painful death consisting of angry family members and an original objective that's impossible to identify. This is another place where asking users for regular input can help reduce the amount of extra unneeded stuff that ends up in the project. The more features a project includes, the longer it will take to complete. The longer it takes to complete, the lower the motivation becomes to ever complete it. Keep your projects short and to the point!
Building automations is design
When you come up with an automation to solve a problem, you are really taking the role of a system designer. That's why most of the mistakes are related to forgetting important design principles, as they are often not well known outside of professional designers. Simply realizing you are performing a designer's job can help avoid common mistakes that can anger family members or even yourself. At the end of the day, it's perfectly fine to play around with automations, but it's important to keep that away from "production use", which is when you install it in its permanent location. Any system you effectively force the people around you to use better be pretty reliable or else you will have an endless stream of complaints to deal with.