Home Automation

Drawings of robots

I started tinkering with DIY home automation stuff somewhere in 2020, during the first months of the pandemic. It was however less related to being confined at home than to the excitement of having moved to a house for the very first time at the beginning of March — which, only a few weeks later, proved to be a great timing to upgrade from an apartment!

The purpose of this section is to share my views on home automation, the details of my setup, and useful information on the devices I am using.

What I mean by "Home Automation"

The term "Home Automation" obviously implies that things should happen automatically around the house when it is convenient, thanks to so-called "smart home" devices. The most basic example of this is having lights turn on and off by themselves depending on external factors, such as the movement of the sun or the opening of a door.

However, the term itself is imperfect to describe everything I have implemented, as some of the ways I have upgraded my house so far using connected devices cannot exactly be described as automations, nor are they necessarily making my house any "smarter".

First example of a dumb non-automation I used "smart" devices to implement: I added battery-powered switches at convenient places to be able to... turn lights on and off. That's it. This is obviously not automating anything, and is certainly not making my home any smarter, as light switches have been around for over a century. The only difference, here, is that the process of installing these extra switches did not require touching anything related to the house's electrical system. In fact, the installation process literally involved nothing more than double-sided tape (which is now my favorite invention after zip ties).

Other things I have done that might not count as automations — but would probably count as "smarting up the house" — include being alerted when a door that should remain closed has been open for too long (although one could argue that I effectively automated the door's monitoring), and being able to voice-control lights (again, one could still argue this is an automation, as it effectively removes the need to get up and flick the switch).

How I Do It

Local Control is Key

I avoid devices that need to be connected to the internet to function and are controlled by remote servers, commonly referred to as "the cloud". The first reason to this is I simply find that idea preposterous: how does it make sense that a lightbulb should communicate with a data center located hundreds or thousands kilometers away, most probably in a different country (I live in Canada, so the servers are probably in the United States somewhere), to know when it should turn on or off? A lot of these devices are also famously insecure, and relying on the cloud for something as simple and essential as controlling the lighting of your house can prove really inconvenient in case of a downtime, whether it be the internet service provider's or the servers'.

The main exceptions to this rule in my house are Google Home / Google Nest smart speakers and some Chromecast devices. My smart speakers are however unable to control the other devices directly as they have to transfer requests to the local controller.

The fact that I own Google smart speakers is kind of a contradiction in my otherwise mostly degoogled life and my general care for privacy cocerns. I would certainly be interested in trying out an open source alternative such as Mycroft someday.

Preference for Plug-In or Battery-Powered Devices

I use smart bulbs and smart plugs, but no wired smart switch or outlet that has to be installed in place of a normal switch or outlet. I just find it more convenient this way, as I do not need the slightest amount of electrical knowledge to make my projects possible, and can move or change anything at will. I would however not be opposed to using something that needs to be wired in-wall if there was no other option — which would probably be the case, for instance, if I was to automate the control of my heating.

I find that smart bulbs offer more possibilities than smart switches, such as the possibility to change their colour at will. Smart switches can however be more budget-friendly when multiple bulbs are hooked to the same switch. In such cases, if the design of the available "normal" switch makes it possible, I like to use a motorized light switch. These are battery-powered smart switches that you stick on top of your actual light switches so they can mechanically toggle them when commanded to.

There are also some scenarios where I use a battery-powered button that can then be used to trigger an event that toggles a smart bulb or a smart plug, putting it on top on an always-on dumb switch if needed (a smart bulb cannot be controlled by a circuit switch as it must receive power even when it is off).

Communication Protocols

Several of my devices (mostly switches and sensors) are battery-powered, and therefore cannot be WiFi-controlled, as that would drain the battery in a day. There are mostly three communication protocols on the market for battery-powered smart home devices: Z-Wave, Zigbee, and Bluetooth Low Energy (also known as BLE). Until now, I have mostly used Z-Wave devices, just because that happened to be what was available the first time I wanted to buy a battery-powered device (specifically a door sensor). I have also used some BLE devices, but have not tried any Zigbee devices so far. BLE devices seem to be becoming easier to find, and I have observed that they tend to be way cheaper than their Z-wave counterparts.

I do not only use Z-wave for battery-powered devices though, as I also own multiple Z-wave smart plugs and light bulbs. This contributes to making my Z-wave network more reliable, as plugged Z-wave devices can act as repeaters for other nodes on the network. Furthermore, it seems difficult to find LAN-controlled WiFi smart devices nowadays, so going with Z-Wave or Zigbee is often the safest option to make sure a device does not need to communicate with the outside world.

I am open to try out Zigbee if the occasion ever arises, especially since Z-Wave smart bulbs are pretty rare compared to Zigbee. Sensors, however, more frequently use Z-Wave than Zigbee.

I obviously still use Wi-Fi for devices such as my home automation controller and my smart speakers.

My Setup

All my devices and automations are coordinated by a Raspberry Pi running Home Assistant. The Raspberry Pi is connected to my home network by an Ethernet cable, and is only accessible to the outside world through HTTPS using the DuckDNS plugin for Home Assistant. I also enabled two-factor authentication for maximum security.

The Raspberry Pi can communicate with BLE devices directly thanks to its built-in Bluetooth support, and uses a Zooz Z-Wave Plus controller for communicating with Z-Wave devices using the Z-Wave JS integration for Home Assistant.

Home Assistant is mostly an event-driven automation system, not unlike IFTTT, except it is free software and has to be locally hosted. It allows me to set automation rules such as "Turn this light on when that door is opened". It supports a whole range of devices and services natively. It also has a backup system that allows me to save all my configurations in order to be able to restore them easily in case something bad happens.

Home Assistant can be accessed through a web interface and through the official mobile application. Both options feature the same customizable dashboard to keep an eye on all your devices and be able to control them at will.

Home Assistant Mobile Dashboard

What I Have Implemented So Far

Monitoring Doors

For cat-related reasons (specifically because of this a**hole), our bedroom doors have to remain closed at all times (except, you know, when someone needs to briefly open one of them to go in or out of a room). To make sure that nobody accidentally leaves their door open, I added sensors to them, and set up a rule in Home Assistant to broadcast a message to the smart speakers when a bedroom door stays open for more than 30 seconds. We also receive text message alerts, just to be safe.

Added an Extra Light Switch by My Bed

Rather than being installed in a light socket, our bedroom light is plugged in a power outlet that is hooked to a wall switch. I simply added a smart plug to that setup, and covered the actual light switch with a battery-powered one to be able to control the smart plug. What this allowed me to do is adding a second switch by our bed, without having to install an actual three-way wall switch.

Added Other Light Switches at Convenient Locations

Using the pattern described above, we now have a wall switch to control the living room's plugged-in lamp, and I have a button directly on my desk to turn on a flood light located behind my wall-mounted webcam for when I need better lighting.

Toggling a Light and Changing its Colour When the Sun Sets or Rises

There is a light at the end of the ground floor's hall. When the sun sets, it turns on and its colour switches to a non-aggressive light green tone. When the sun rises, it becomes a regular light before turning off, and can then be turned back on at will on the press of a button.

Automating Rooms' Lighting

When someone opens the basement door, the light in the stairway and the ones downstairs automatically turn on, and then automatically turn off a certain amount of time after closing the door (we have an unfinished basement that mostly serves as a laundry room and storage space). For safety reasons, if the stairway light turns on after sunset, it won't turn off automatically until very late, and if someones happens to go in the basement in the middle of the night, it won't turn off at all until morning. Better safe than sorry for having accidentally plunged someone into total darkness!

Similarly, opening the door that leads to the second floor stairway causes the stairway light to turn on. The living room light also turns off by itself at midnight.

Same thing with the entryway: the light turns on automatically when opening either the interior or exterior door, and turns off 5 minutes later.

Start and Stop Bathroom Fan Automatically

We usually leave the bathroom door open when nobody is in it (that's a necessity since we have 3 cats and one of the litter boxes is in the bathroom). That makes it pretty easy to detect if someone is in the bathroom, as it is correlated to the door being closed. I use this fact as a way to automate the bathroom fan: it turns on by itself whenever someone stays in the bathroom for more than 2 minutes without having started it, and it turns off by itself after 20 minutes of the door being opened.

Being able to Voice-Control The Room's Lighting

"OK Google, Let There Be Light!" (Yes, that command works.)

Getting a reminder to move the laundry load to the dryer

We have a top load washing machine, and we usually leave its lid open when not in use. It was therefore really easy to add a door sensor to the lid to detect when the washer is started, and then receive a notification 1 hour later to remind us to move the clothes to the dryer. It will remind us again 2 hours later if we still haven't opened the lid.

Monitoring Room Temperature and Humidity

This one is a little boring: I can see the current temperature and humidity level in the living room (and eventually other rooms) on the Home Assistant app on my phone. I coud theoritically use that information to automate my air conditionner, but I am not comfortable with the idea of putting it on a smart plug, as they can draw a lot of current when they start. Another part of the house has a newer AC unit that has a remote so one of my future projects is to automate it using an IR blaster.

Future Projects

Here is a list of other scenarios I would like to implement in the future:

  • Automate more lights
  • Automate an air conditioner using an IR blaster to act as its remote
  • Automate heating control using a smart thermostat
  • Getting a notification when mail is put in the mailbox
  • Have my phone wake me up earlier on winter mornings if there was an important snow accumulation over night

Devices I Use

Some of the devices listed below have a link to a page where I provide a review and more information about the device.

Controller

  • Raspberry Pi 4 Model B (4GB RAM)
  • Zooz Z-Wave Plus S2 USB Stick ZST10

Wall Switches

Door Sensors

Smart Bulbs

Smart Plugs

  • Leviton DZPA1-2BW Indoor 15 Amp Plug-in Outlet
  • Minoston Z-Wave Smart Plug

Smart Speakers / Media Controllers

  • Google Home (2017)
  • Google Home Mini (2018)
  • Google Nest Mini (2020)
  • Chromecast (3rd generation)
  • Chromecast with Google TV

Temperature and Humidity Sensors