One of the most compelling reasons for using a universal hub is avoiding vendor dependencies. Most smart home products lock you to a single ecosystem, but a universal hub mitigates this problem. In the past, I’ve written about Zigbee2mqtt, an open-source solution leveraging the CC2531 chipset.

I’ve since moved on to a deCONZ / Conbee II setup. 

Don’t get me wrong; the ZigBee2mqtt dev team is highly responsive, the project ambitious, and the product helpful.

That said, as I expanded the size of my network, I experienced numerous stability issues to the point of being unusable. I briefly tried Home Assistant’s native ZigBee Home Automation (ZHA) solution with the Nortek HUSBZB-1 stick, but that solution was a hot mess at the time. I’m sure the experience has matured, but unless decONZ gives me a reason to, I have no reason to go back. 

There are some differences in these types of systems, and it’s not always clear what coordinator works with each platform. This is the post I wish I had from Day 1 to cut through the confusion of ZigBee and Home Assistant.

What is ZigBee?

For starters, with ZigBee, there are three basic terms to keep in mind. You can deep dive into ZigBee here

  1. Coordinator: in every ZigBee network, there is only 1 coordinator. The coordinator is the actual ZigBee radio module that forms the network and sets key network details such as the channel and PAN ID. ZigBee operates in the worldwide 2.4 GHz ISM (Industrial, Scientific, and Medical) radio band.
  2. Router: some devices, most of which are connected to wired mains such as a lightbulb or switch outlet, act as routers. As the name suggests, routers can route messages between end devices and the coordinator. The more routers in a network, the stronger the mesh becomes. This is helpful as many times, an end device may be too far away from the coordinator to work correctly. In this case, the end device can connect to a router which can then route through more routers until eventually, the message is received by the coordinator. 
  3. End device: any other device that’s not a coordinator and doesn’t function as a router is considered an end device. These are commonly battery-powered sensors such as climate and motion-based sensors which often enter sleep mode to conserve energy. 

Most WiFi also operates in the 2.4 and 5 GHz bands.

Because of this, congestion may be an issue depending on variables such as the number of devices, placement, and specific channel your ZigBee network operates on.  

What ZigBee options are compatible with Home Assistant?

One of my favorite aspects of Home Assistant is its interoperability. It doesn’t matter if you favor Google, Amazon, or want to build a totally DIY solution. If Home Assistant doesn’t already cover it, it soon will, or you can contribute the integration directly to the project. 

The value that Home Assistant delivers on this front can’t be overstated. 

Enterprises change direction all the time. For example, there was much angst and anger when Google Home recently pivoted to Nest. Several key APIs were shut down, which severely limited integrated local control of Nest based devices such as its classic thermostat. This is fine for many, but if you’re exploring a platform like Home Assistant, you probably want more control over your IoT components. 

To that end, there are at least three widely available options for ZigBee integration with Home Assistant. 

Yes, there are more that I have listed here, but these three are, at the time of this post, the most comprehensive solutions available. 

Also note I haven’t covered Z-Wave with any of these coordinators although some feature dual support for ZigBee and Z-Wave.

SolutionSupported Coordinator(s)Docker Container
Zigbee2mqttCC2531koenkk/zigbee2mqtt
deCONZConbee IImarthoc/deconz
ZHAMultiplehomeassistant/homeassistant

I tried Zigbee2mqtt with its CC2531 dongle and then ZHA using the Nortek HUSBZB-1 stick and experienced stability issues with both.

With each of these setups, I ran them as separate Docker services, except for ZHA, which is natively supported in Home Assistant.

An overview of what this setup looks like is shown below.

Zigbee Options

Zigbee2mqtt worked fine until the network grew too large. The CC2531 has a notoriously terrible range, and even with 40+ routers in the network, it would frequently act up.

The ZHA experiment lasted less than a day as devices would drop after restarting, and performance was too slow for my use case. I think the ZHA native integration will be fantastic once it matures – but it’s not there yet…

This remainder of this post is focused on deCONZ.

Why deCONZ? 

Previously I ran ZigBee2mqtt via Docker with a CC2531 coordinator. This worked fine in my last apartment, but when I moved into my home, which is significantly larger, I started experiencing numerous stability. 

After briefly trying ZHA, I was running out of options and figured deCONZ couldn’t be any worse. deCONZ is the software powering the ZigBee network and runs alongside the Conbee II coordinator. It’s worth noting that unlike Zigbee2mqtt, deCONZ is not open source and developed by German firm Dresden Elektronik.

Getting started requires the coordinator, which can be purchased off Amazon and runs around $30. Since I prefer running services via Docker containers, I added the community developed deCONZ container to my Docker compose file and spun it up (see below for an example).

deCONZ is the software which powers the network and comes with the Phoscon app, which is the actual user interface for device management and is separate than Home Assistant.

Copy to Clipboard

In deCONZ terminology, 3 types of devices can be set up: lights, switches, and sensors.

After switching from Zigbe2mqtt, I was pleasantly surprised by how intuitive the deCONZ UI is to navigate. The process of pairing ~70 nodes took about 1 hour, which was far more efficient than pairing ~30 nodes with Zigbee2mqtt (that process took 3+ hours of painful trial and error).

Home Assistant Integration

deCONZ can be integrated with Home Assistant manually via configuration.yaml setup or through the UI. I chose the latter route, and integration was painless.

deCONZ integration

The names specified in deCONZ will carry over as the entity ID in Home Assistant. I can’t overstate how much easier this aspect of integration is over Zigbee2mqtt.

With Zigbee2mqtt, the entity ID’s would come to Home Assistant as the device identifier which looked something like binary_sensor.0x00158d0002f0e165. This made it challenging to keep everything straight between Zigbee2mqtt and Home Assistant, especially as the number of devices grew.

Another great feature of deCONZ is grouping.

In the Phoscon UI, you can easily specify groups and then place devices in them. For example, in my office, I have a light fixture with 5 bulbs. I can put all 5 bulbs in the group which is named “office” and when it integrates with Home Assistant, I automatically have an entity called light.office which controls all 5 bulbs.

Nice.

Viewing the Mesh Network

Included with the marthoc/deconz container is the ability to use a VNC client to see the actual mesh network. This is beyond helpful for troubleshooting any faulty or slow connections and just to check on the health of the entire system.

ZigBee Mesh

There’s a robust set of tools you can use to debug and even work to integrate unsupported devices if you’re handy that way. 

Final Thoughts

So far, I don’t have any complaints with deCONZ or the Conbee II coordinator. My home is a little under 3k square feet spanning a basement and 2 floors, and I haven’t any performance issues or dead spots anywhere in the house.

When pairing some Xiaomi climate sensors, it took a few tries which is to be expected as Xiaomi uses a semi-custom ZigBee library that requires a device-specific quirks handler.

From an automation perspective, I’m running Node-RED in a separate container and haven’t experienced any performance issues. Integrating some deCONZ event, such as wireless Xiaomi switch is a little tricky as the actual entity isn’t exposed to Home Assistant. In this case, I’m using the event_type node to listen for deconz_event and then filter  based on the device and action.

Everything else, such as motion sensors and lights, are exposed as regular Home Assistant entities.

If you’re in the market for a new ZigBee solution to integrate with Home Assistant, don’t hesitate to check out deCONZ.

You can find a complete list of supported devices here and learn more about Home Assistant on the official integrations page