In order to implement a cohesive way to control and monitor you home, you need some sort of controller to integrate with your devices. This can take the form of a "hub" hardware device (or multiple hubs) that you place in your home, or the use a third-party (or multiple third-parties) over the Internet. Since there has been a historically bad track-record with security flaws with home automation or Internet of Things (IoT) devices and software, I did not want to rely on a third-party to manage control of my home automation. I also wanted to control my data as well as remote access to my home. With that in mind, my main goals for a home automation controller are:
- Not require any sort of connection to the Internet, or use any third-party servers
- Be able to integrate with a variety of common devices and services so I am not constrained to just one product line or ecosystem
- Be accessible away from the home over secure channels on a variety of devices, (namely Android and Windows-based ones)
- Support access using a "panel" interface such as an Android tablet mounted on a wall in the home
- Be a mature and well-supported product
The technologies used to implement this solution are:
- unRAID for hosting virtual machines
- An Ubuntu server instance running in a virtual machine (VM)
- Aeotec Z-Stick for communicating with Z-Wave (a wireless communication technology) devices
- openHAB software running on the VM
The openHAB software is an open source product that according to Wikipedia was first released in 2010. I have been using openHAB since first deciding to implement some home automation in 2016. When comparing it to the various other open source or propriety solutions available at the time, I found openHAB the most intuitive to me while meeting my goals. Plus it was well-supported by an active community and a large number of developers.
Implementing the core server is fairly easy, and can be handled using standard Ubuntu package installation tools. The Aerotec Z-Stick plugs into a USB port that is passed through to the Ubuntu VM. That device is then used to communicate with other Z-Wave-capable devices in your home. If other types of wireless technologies such as Bluetooth or Zigbee are desired then similar USB devices may be purchased. And since the VM is connected physically to the home network it also has access to devices on that including those using the home WiFi.
Once the software is set up the larger effort to configure it is performed. OpenHAB allows you to model your house into groups, (e.g. Garage, First Floor, Living Room, etc), then place equipment into that model. In this case the equipment is mostly various Z-Wave-capable devices such as wall outlets, light switches, thermostats, garage door controllers, and water sensors. That way an interactive map can be created and used aver various interfaces such as a web page or an application on your phone. Rules can also be defined to perform actions such as sending you a text message if water is detected in the basement, or toggle lights on and off when you are away from home using historical data to determine when a given light is usually on or off instead of a static timer. I have not found anything yet that I cannot implement with the equipment I am currently using, so suspect outside of software updates, the controller will remain as-is for a while.