My Smart Home Design Principles

Making your home smart is complicated. Using a lot of “smart home” products and accidentally making your home much worse is also very easy. I’ve been smart-ifying my house for just over 5 years now, and I’ve learned a lot. My house helps me do a lot of my day to day activities more easily, because I’ve figured out a good balance of how to do that. Here are some of the guiding principles I use when making smart home “features”.

1. An untrained user has to be able to do it

The most important principle is that a user who has never been in my house before, when trying to do some normal everyday action, must be able to achieve what they’re intending with minimal confusion.

“Don’t use this switch”

“Don’t press that button”

“You have to wait a bit after you do that”

These are not instructions that someone can divine without knowing them in advance. So that means they can’t ever be a part of the everyday actions a guest would take. How do you turn on the lights? You press the switch. No matter how fancy all my light logic gets for helping me, if someone presses the light switch, it must turn on (or off) and do so immediately. Always lean into the expectations of a user who has never seen the system before.

It’s also important though, an untrained user doesn’t have to be able to do everything. It makes sense that a smart home will have capabilities beyond what people will expect. That’s a good thing. (“You mean it can do this for me!?”) But everything the untrained user does expect to be able to do, should work as they expect.

2. Automate things that help you

This one seems kind of blazingly obvious, but it’s worth saying: only automate things that help you. Your life is supposed to be better due to the automation, so you can stop thinking about things that you don’t want/need to be thinking about.

It is important though that this is the second principle, not the first. If there’s an automation that helps me but makes my house into a byzantine labyrinth that guests can’t use properly, then I need to find a different way to automate it.

3. False positives are much worse than false negatives

Here, “false positives” are when the house raises some alert about an issue (“this device is out of battery”) or an action that needs to be taken (“the laundry is ready to be put away”), but it actually turns out there is no problem or action to take. “False negatives” are the other way, where something does go wrong or needs doing, but the house doesn’t raise an intended alert about it.

A false negative means that the house has failed to make your day better. I’d like to improve that, but it’s the same state a non-smart-home would’ve been in. False positives though, required me to assess and dismiss the alert/task for something that didn’t need doing. Now my day is worse - I’m wasting my time. A non-smart-home would’ve been better. (Depending on how hard it is to check, that can waste quite a bit of time, but even trivial ones that take less than a minute are unnecessary distractions.)

False positives also teach you to ignore all of the house’s alerts. That makes all other alerts your house can raise worse. Not a good thing to do.

This means that I only set up alerts and automatically surface tasks/chores that I can detect need me to act with absolute reliability. (Yes, there is no true absolute reliability - a car crashing into my front room will certainly make some of my automations malfunction - but you know what I mean.)

4. No “and then press this button when you’re done”

If the smart home needs to detect that an action has taken place (“the dishwasher has been unloaded”, “the garbage has been taken out”, etc) then the doing of that action must be what it detects. The user can’t have to remember to press the “I’ve taken out the garbage” button when they’re done.

I’ll forget to do that sometimes. Then the house is saying I need to take out the garbage. But didn’t I do that already? (Uh oh, this is a false positive!) Did I press the button and the button didn’t work? Is the garbage actually out?

If that’s the conversation you’re having, the smart home automation for that task wasn’t worth it. This is why I haven’t yet set up a “take out the garbage” automation, because I haven’t yet found the right way to detect “the bins have been brought out front”. (There’s probably something with the right Bluetooth sensor.)

This principle isn’t a ban on buttons. I have a lot of buttons. But pressing a button must be to express an intent. “Pressing this button will turn on this light” is fine. “I need to remember to press this button after I close the garage door” is not.

5. Handle outages gracefully

A smart home pulls together a lot of separate pieces of tech. All of it is not going to be working 100% all of the time. Plan for failure modes that make sense, and make it so that something failing has as little impact as possible. Also make it obvious when something has degraded, what has gone wrong and (if possible) how to fix it.

This feeds into principle #1, untrained users can’t generally fix things that they encounter that aren’t working. So reduce the likelihood that they will. If the internet goes down, do the lights still work? They must.

But you can take it farther than that. My lights obviously work when the internet goes down (as do normal lights). Despite being smart controlled though, my lights also work if my local network is down. Router overheated? Lights are still working, because they’re all on Zigbee, connected directly for the purpose of those appliances working and nothing else. Zigbee isn’t infallible, but it goes wrong much less often than a home wifi or home internet connection does.

The easiest way to avoid an outage affecting some part of your smart home’s functionality, is to not depend on it at all. Does this device need to connect to the internet to do its job? (The answer to that question is usually no.)

In terms of surfacing outages and making sure the expert user/administrator finds out, hints from your past self are always a help. If you know your adblocker device going down makes web pages not load, put in a visible alert that’ll fire when the adblocker isn’t available. That will guide you to that problem specifically, instead of trying to work out why your internet is broken (when it isn’t).

6. An experienced user should be able to work around outages

A flipside to the previous principle, some outages can’t be handled by the straightforward expectations. If my Zigbee receiver breaks, my light switches are the obvious default way to use those lights, but you won’t be able to use them while the receiver is broken.

For these fundamental parts, an expert user must be able to take action to work around the problem for right now. They (I) might be in the middle of something important - it must be possible to turn on the lights somehow.

I’ve actually got two backups in this case. If the local wifi is still working, you can control all of the lights from any of the tablet dashboards. Or if stuff is really broken, you can pull the cover off where the smart switch is, and the real, electrical switch will be underneath. Switch that on and the light will gain power, just like any classic light. (This also allows you to recover directly from where you’re standing at the light switch.)

These actions aren’t super obvious, but they’re for much less frequent outages, so I can allow an experienced user to use their knowledge to find a backup, instead of leaving them stranded in spite of their understanding.

7. Do stuff that’s fun

Closely related to principle 2, automating things that are fun is a great motivator. And a great way to brighten your day a little. If you have a satisfying sound effect to play when you finish putting away the laundry, then do it! (as long as you can detect it reliably, remember principle 3!)

The smart home’s purpose is to make your human life better. Fun things tend to be good for that.

8. You can have “a way to do things”

The smart home software will always have an imperfect view of the actual physical reality in the house. Sometimes “doing things this way” means the house can detect it properly. When I have an arbitrary choice to make about how I do an everyday task, if one way makes it work for my smart home, then it’s fine for that to be the reason I choose to do it that way.

Notice this principle is last. That’s because you have to clear a lot of other hurdles before the smart home actually guides your choices. The smart home needs to make your life better to be worthwhile, and so if it’s the determining factor in your choice, then choice needs to not matter for any other reason. It’s even after the “do stuff that’s fun” because if making your smart home detect something reliably makes that thing less fun, that’s also a failure.

For an example of this principle in action, my dishwasher pops open when it’s done. I want my house to display that the dishes are ready to be put away (maybe I had headphones on when it finished and didn’t notice it was done) until I put them away.

This means that if I normally keep the dishwasher door closed while it has dirty dishes in it, I can use a door sensor to detect when it’s been open for more than a couple of minutes. That tells me it’s not just open because someone is putting something in, it’s open because it has finished a cycle and is unattended.

I don’t care whether I normally keep the dishwasher door open or closed. So because it doesn’t matter to me which is the default, I keep it closed because that makes it possible for the house to help me notice when it’s done.

This also comes back to principle 4 (No “and then press this button when you’re done”), because it also means that if I close the dishwasher door, I must’ve taken the clean dishes out (otherwise why would I close the door?). So the house can detect that the task is done and dismiss it.

Those are my smart home principles

I didn’t set out at the beginning to make a set of principles. But over time I did find that I was adhering to them to make my smart home effective at what it’s intended for (making my life better). Maybe they’ll help you too! And maybe I’ll add to or edit them later as I discover more principles that help me out