Trudging the Smart Home road to blissful automation
It all starts with an idea. My idea was , as usual, started by a bunch of tech noise about a new technology that was going to bring in a new era of productivity and strategic joy. I have been inspired before, with mixed results.One time the idea resulted in turning a $60,000 investment into a company with $20,000,000 in annual sales. Another time it led to a series of European offices that generated good times and big losses. However my craziest idea, until now, was to switch from technology to organic farming. A tale for another day.
My idea is to create a turnkey smart home implementation that is easy to instal and manage.I quickly figured out that turning this idea into reality was going to be torturous and frustrating. The torture is due to the race for market share between a multitude of manufacturers, who are all creating and pumping products into the market while only paying lip service to interoperability. For example, I have found over 30 manufacturers of smart light bulbs. Each one has its own special app, compatibility matrix , installation requirements and features. Multiply this by the vast array of manufacturers of hundreds of varieties of smart home devices and hubs and feel your head spin.
After reviewing the situation, I decided that I needed a hub to control this mess of devices .. Of course, I was confronted with an insane choice of hubs. The first choice I had to make was whether to use an open source hub or a hub made by one of the major players such as Google or Samsung. As a tech anarchist, I gravitate toward open source, however, as a tech realist I know the advantages of using manufacturer supported equipment. When I owned Equivoice, I standardized on Cisco. I liked some open source VoIP PBXs better technically, but I could not afford the management and marketing overhead of supporting an open source implementation. I decided to start the project with an open source product. I chose Home Assistant on the recommendation of one of my former engineers. He is a superb engineer, so I should have known better.
The first thing I figured out about Home Assistant is that it needs a local server. It will run on a virtual machine or a dedicated server. I figured I needed a standalone server because I use a Chromebook and I have no interest in figuring that out. I decided on a Raspberry Pi, because it was cheap and my engineer liked it.
My first surprise was that I had to assemble the Raspberry Pi. Not the hardest task in the world, but it could be an issue for a regular human being. I assembled the device and loaded the operating system. After it was loaded I started working on downloading and installing the Home Assistant software. This gave me a startling revelation. Home Assistant has its own operating system that needs to be loaded instead of the standard Raspberry PI OS.
I had to download Hass.Io. Hass.Io is a version of Linux that was customized to meet the needs of the Home Assistant application. The next step is to download a program called Balnenaetcher to create a Hasse.Io mini SD to boot the Pi. Of course, Balnenaetcher does not run on Chrome, so I had to borrow my neighbors Windows PC. After I cut the mini SD , I had to figure out how to bring the Pi up on my wireless lan. There are two ways to do this. One is to stick a USB storage device into your laptop , create a network folder and cut and paste code that you modify by coding in your SSID and password. You then stick the mini SD card and the USB drive in the Pi and boot it up.
The other way is to load the OS from the mini SD and boot up the command line. From the command line you go to root and then use nmcli to add the SSID and password. You also need to know if your router supports mDNS. If it does not, then you need to assign a static IP. You access the Home Assistant software via your browser on port 8123. The following link gives detailed installation instructions. https://www.home-assistant.io/hassio/installation/
I chose to use nmcli to bring the Pi up on the network and I was able to access the program. This was hard to do the first time. The first painful issue is that you really need to know some basic CLI commands and how to navigate through Linux directories to make this work. Of course,I had forgotten everything I knew about Linux command line. After driving myself even more insane trying to figure out cmd, I took an online Linux command line class. This gave me just enough knowledge to cut and paste into the correct directories and files.
The other discovery I made was that even though the Home Assistant runs locally, most of the devices you integrate with Home Assistant still require a seperate app that communicates with the cloud. if you integrate with Alexa or Google home,these behemoths will still see much of your data. You can modify device hardware and software , or find open source devices that will run locally, but this requires even deeper levels of engineering skill.Also, some integrations still require command one level modifications.
After all the fun setting it up, I decided not to integrate it with any devices at this time. The reason I stopped is that there is no way this product can be implemented by a non technical person. It is a great product if you are a geek with Linux and scripting tools. Most of my potential clients do not fit that description. Home Assistant would require too much engineering support for a turn key consumer product.
Here is a quick summary of Home Assistant
Open Source software that will run on a variety of local servers
Has integrations with most major devices
Allows for very granular and flexible automation skills
Has a steep learning curve and is difficult for non technical people to deal with
My next blog will detail my experience with Samsung Smartthings hub and the joys of dealing with a major manufacturer's hub. Let's just say it has its own cross for you to bear.