The primary reason I made the jump to Home Assistant was to break free from the unnecessary cloud services and spyware that sat between me and my smart devices.
My first experience with smart devices was the first gen Wink Hub way back in 2014. My GE Link bulbs worked okay most of the time, but often enough they did not work at all. Most of the time it was because the hub couldn't talk to the cloud service. There is nothing more frustrating than a light bulb not working because an amateur tech company can't keep their servers online.
Wink claims that they have a local connection mode, but if the Wink app detects an internet connection on your phone it will still try to route all of your commands through the cloud. Unfortunately, this is standard practice for all of the big smart hub makers. They entice you with cool features at a good price point, and then they force an app onto your phone to spy on you and collect analytics. Also, once you pick a hub you are locked in to that manufacturer with few exceptions.
For your average consumer this is an acceptable trade-off, but I count myself among the enthusiast/developer types who cannot stand this level of inefficiency and intrusiveness. It's even more frustrating when you know that all of these hubs are just crappy wrappers around some really amazing open protocols, like ZigBee and Z-wave, which are designed to be open, secure, reliable and LOCAL!
Today I'm happy to write that I have now completely eliminated my Wink hub and my wife's Hue hub and unlocked the full potential of ZigBee in our home. Gone are the days of checking twitter every time the lights won't turn on. And it was so easy thanks to the awesome community of home automation enthusiasts who have done the hard work already.
My ideal smart home has the following characteristics:
- Open source software
- No cloud service
- Accessible from anywhere
- Encrypted connection
- At least as reliable and functional as Hue/Wink hub
- Not overly technical (I'm a professional developer but I don't like to spend my free time doing stuff that feels like work)
Initially I experimented with openHAB, but it became a part-time job trying to get it to work. Home Assistant was more attractive because of how easy it is to get it up and running on a Raspberry Pi. Overall HASS feels like a really mature piece of software with a long trajectory, and the community is active and supportive. And it's 100% free and open source.
The first time you boot up HASS, it discovers smart hubs in your home and you can start controlling your devices. This is all you need to do to start building your own interface and automations, but a little more work is required to really unlock your smart devices.
ZigBee Protocol and the Conbee II
ZigBee is a protocol similar to WiFi designed specifically for smart devices. What makes ZigBee really special is it's ability to create a mesh network in your house. All of the devices connected to your hub act as wireless repeaters. The more devices you connect, the stronger your network becomes. (note: some cheaper bulbs do not repeat so be careful what you buy)
Most smart home companies offer Zigbee compliant devices. If you ever pick up Phillips Hue or Samsung Smart Things devices, you will always find the ZigBee certification emblazed on the packaging.
There is important one catch with ZigBee devices. All devices have to be connected to the same hub for the mesh to work. If you are someone like me with two different hubs, then you will have two different mesh networks which are invisible to each other. The mesh will not be nearly as robust, and the two networks might even interfere with each other. This is where the ConBee stick comes in.
The Phoscon ConBee II is a smart-hub within a USB stick. It uses ZigBee to communicate with a wide range of smart devices. It hosts its own database and webserver using the deCONZ software, allowing you to access and configure it from any platform without ever connecting to a cloud service. The ConBee is also backed by its own team of developers and enthusiasts who are adding compability for more devices every day.
Currently my ConBee is working with Phillips Hue bulbs and switches, GE Link bulbs, Ikea smart outlets, and various other sensors. Because they are all connected to the ConBee, they all form one integrated mesh network.
Hass.io deCONZ Setup Guide
ALWAYS BACK UP BEFORE MAKING BIG CHANGES. USE THIS GUIDE AT YOUR OWN RISK.
- Raspberry Pi running Hass.io
- ConBee II usb stick
- One or more compatible ZigBee devices
Start by connecting the ConBee to one of the open USB ports on the Pi. Check the Hardware panel in Hass.io to find path for the serial device (Hass.io -> System -> Hardware). Make a note of the serial paths, the one you need is something like "/dev/ttyACM0". You may need to try a few to see which one works. You may need to restart Hass.io if you don't see the serial device listed.
Now go to the Hass.io Add-on Store, search for and install the official deCONZ addon. Scroll to the bottom of the add-on page and update the Config section with your device path, save it, then start the service. Check the logs for any errors. If the setup is correct, you can click the Open Web UI button to open Phoscon.
Note: Phoscon is hosted on port 40850 by default. If you are using a DDNS you may need to type in the IP, e.g. 192.168.1.123:40850. Otherwise you could open this port on your router to access Phoscon from the outside.
Once you are in Phoscon you'll be asked to set up a password, and after that you can start setting up devices. After you add a device you just have to restart Hass.io and it will become available as an entity in Home Assistant.
Setting up devices in Phoscon can be tricky until you get the hang of it. Phoscon puts devices into three different classes - Lights, Switches, and Sensors. You will use the setup tool for one of these three types to set up each device and it might require some guesswork to figure out which class to use. For example, the IKEA Tradfri smart outlet is set up as a Light, not a switch.
Generally you need to reset the device first. Resetting a bulb or a switch will put it into a pairing mode which will make it discoverable by Phoscon. Different devices have different reset steps so be prepared to do some Googling. Phillips is the most difficult because you have to have a dimmer switch to send the reset signal to each light bulb.
Once you reset the device, start scanning in Phoscon by clicking the Add button. Make sure you don't wait long between resetting the device and starting the discovery, because the device might only be discoverable for a short period of time. If you did everything right, the device(s) will show up in the list. At that point you should click into each one and name it.
Now all you have to do is reset Hass.io and the connected devices should show up as entities. The names you added in Phoscon will be carried over to Home Assistant where you can give them friendly names.
You can also create room groups in Phoscon and those groups will show up as an additional entity in Home Assistant. My preference is to set up all of my groups in Home Assistant so that all of my configuration is in one place. I'm not aware of any advantages to using deCONZ groups, but there are some interesting features in Phoscon to play around with if you like to tinker.
You also have the option to set up behavior for your switches and sensors in Phoscon, but again it makes a lot more sense to set up the automations in Home Assistant. That way you have all of your other entities and scripts at your disposal. For example, I have a switch I can flip when I leave the house to turn off the lights, the TV, and the air conditioner. You can only do that with a Home Assistant automation.
Now that your devices are set up you can automate them just like any other device in Home Assistant. Smart bulbs, smart plugs, and sensors are all fairly straight-forward. Switches are trickier as they won't show up as an entity, but rather they will put messages on the event bus. You can use the Events tool to listen for "deconz_event" to see what events are generated when you activate a switch or a button. Then you can build automations around those events.
I plan to write another set of posts on some of the more interesting automations I have set up using deCONZ devices. None of my automations are very novel, but the highlight here is that everything is talking to a single, locally hosted hub.
So far my setup has been flawless. I only had one issue one time where suddenly everything stopped working and I had to reset each device (fortunately this was early one when I only had a few devices). Other than that, everything has been exceptionally robust and fast. I have yet to have any of the device availability issues that were so prevalent with the Wink hub.
The range of the ConBee is impressive, even with just a few devices connected to the mesh. I'm now sitting at around 25 devices, with my Pi sitting on a bookshelf in a quiet corner of the house. The mesh network is reliable everywhere, even on the exterior of the opposite side of the house!
My goal was to replace my Wink and Hue hubs with a single, locally hosted hub that I have full control over. I got what I wanted, and the performance has exceeded my expectations. I highly recommend this setup if you also want to throw out your smart hub. All it took was about $80 and a day or two of work!
Update 9/1/19 – I had one issue with deCONZ where a certain class of light bulb suddenly stopped reporting its brightness. Deleting and re-adding the light would fix it for a few days but the issue would come back eventually. Issue was fixed in release 2.05.67 which hit HomeAssistant a few days later. See: https://github.com/dresden-elektronik/deconz-rest-plugin/issues/1756
Update 9/5/19 – Moved the Pi into the utility closet with the HVAC system when I discovered a free power outlet in the closet. Now the Pi is totally hidden and still has perfect connection to all of our devices.