Moving from Deconz to Zigbee2MQTT

I’ve had Deconz (using Conbee II) as Zigbee coordinator for years now, but now it’s time to see if the grass is more green on the otherside and have a shot with Zigbee2MQTT using Sonoff Zigbee Dongle Plus USB 3.0.

Reasons to switch

Why I’m doing this if I’m happy with deconz some may ask? Well, I’m not 100% happy with it actually and here are couple of things I don’t like with it:

  • Deconz has complicated software. There are deconz and phoscon softwares within the same usb stick with different functionality
  • Deconz firmware updates fail when flashed through web interface. When connected to Windows PC I can do it fine.
  • Deconz brings support to new devices very late (or never)
  • Renaming devices from Deconz does not rename the device on Home Assistant

Sonoff 3.0 USB

I’ve read that the Sonoff 3.0 USB Dongle is quite reliable and works well with Zigbee2MQTT. I did not compare other manufacturers before actually ordering one, so can’t and won’t make a statement if the Sonoff is ‘the best’ out there.

Once the mailman delivered me the USB Stick I quickly discovered that there are actually two different version of this same product selling with the same name: ZBDongle-P and ZBDongle-E, both working with different chips (CC2652P vs. EFR32MG21). ZBDongle-E is more recent, but Zigbee2MQTT still states it as an experimental. I received the latter one.

What’s better with ZBDongle-E though is that it supports Matter over Thread with custom firmware and, in theory, you could get Thread support on your Home Assistant at the same time. However, I did try this custom firmware [guide] and it was miles from success: I did manage to install the FW and setup the add-on to Home Assistant, but it ended up being very very unstable. I eventually switched back to the Sonoff original firmware and went with the plain Zigbee2MQTT without thread support. The add-on actually even crashed every time I tried to see the active port using unix nmap port scan utility! Most probably this will get more stable in the future, but at the time of writing this post, it’s a no go.

How does the Zigbee2MQTT compare to Deconz?

Zigbee2MQTT can be a bit confusing for beginners, but definitely has more features compared to Deconz. It’s clearly designed by an engineer rather than usability in mind 🙂 I’m not going through all the features in here, but highlight the most important I found out while trying it out:

  • Zigbee2MQTT can do OTA updates to certain manufacturer devices. I was able to update my old Osram (Ledvance) plugs, IKEA lights and Aqara plugs just with one button press
  • Zigbee2MQTT has modern graphical ZigBee mesh map for debugging and connection analysis
  • You can enable pairing mode ‘permanently’ instead of Deconz 30s pairing time. Makes pairing a lot more easier.
  • Whe renameing Zigbee devices on Zigbee2MQTT, it also affects Home Assistant device name
  • Supports larger set of devices compared to Deconz. One example are AduroSmart Eria plugs. Deconz supports only basic relay functionality, but Zigbee2MQTT has also energy measurement support on it.

That’s the positive side, how about negatives then? I’ve only noticed one negative side and that’s a minor one: all the Zigbee devices are listed under MQTT integration on Home Assistant. I really liked Deconz way that the devices are listed under own integration I see the obvious reason for this though, since all the data is collected through MQTT and Home Assistant has nothing to do with the actual Zigbee coordinator in here.

The process of coordinator change

Changing the coordinator requires re-pairing every single device with the new coordinator. It can be done one by one or all in a big bang., but the problem when switching devices one by one, is that the Zigbee mesh will be broken down and all devices might not have proper route to the coordinator anymore. I decided to go with the Big Bang that took me few hours from begin to the end with a bit more than 20 devices.

The process itself is a work that even a monkey could do: enable pairing, unpair, pair again, rename. And repeat that with all the devices. Just remember to use the same Home Assistant device names as with the old coordinator so no automations will be broken.

While doing the change I bumped into couple of issues I wish I knew before I started the procedure:

  • Pair ZigBee router devices (e.g. plugs) before anything else to get mesh up and running
  • Pair devices in their end position if possible
  • Aqara end devices (battery powered devices) are not capable of re-routing so try to get them paired through corresponding router device
  • Most of router enabled devices go into automatic pairing mode once disconnected from old router. So disconnect them from old, enable pairing from new coordinator and wait few minutes to see if they automatically join the network.

..and the most important thing: find the best Zigbee channel that does not conflict other networks, like Wifi. The Zigbee channel can’t be changed later without re-pairing everything again so now it’s a good time to do so. Previously I had my HUE Zigbee channel same as my Deconz Zigbee channel, but from now on they work on separate channels 🙂

Conclusion

Not a quick task to pair everything again and there are some pitfalls depending on used Zigbee devices, but I’m really happy I did this. Now I have more control over the devices and can debug failing devices much easier.

I’ve now run this setup for two whole weeks and I’ve had no issues what so ever. However, somehow I thought the range of actual coordinator would be better due external antenna, but experience shows that the range is not any better. The good thing is that it does not matter, if you have large enough mesh.

One Reply to “Moving from Deconz to Zigbee2MQTT”

  1. I did same operation. After that i did run problems with Osram light bulbs.
    When turning on lamp on switch it start to blimp light on and of like 30s very annoying. But when removed them from zigbee no problem after that.

Leave a Reply

Your email address will not be published. Required fields are marked *