If you’re like me and love building smart home devices, you’ve probably noticed how quickly your Wi-Fi network can get overwhelmed. Every new sensor, light, or switch you add takes up bandwidth, and before you know it, your Wi-Fi is struggling to keep up. That’s where Zigbee comes in.
Zigbee is a wireless protocol designed specifically for smart home devices. Unlike Wi-Fi, it operates on a separate network, so it doesn’t interfere with your internet connection or slow down your other devices. This makes it perfect for projects where you want to add a lot of sensors or DIY devices without clogging up your Wi-Fi.
In this article, I'll guide you through my setup process to get the Zigbee dongle running in Home Assistant and how I made it available through Proxmox. To test the setup, I then paired a commercial mini switch and I also built a DIY Zigbee device, using the ESP32-C6 DevKitM-1 development board.
This video is sponsored by Altium 365. Get your free workspace today and start transforming your design process today!
Tools and Materials
The links below are affiliate links. When you click on affiliate links in my articles or videos, it means I may earn a small commission if you make a purchase. These links are a way to support my work without costing you anything extra—the price you pay stays the same, whether you use the link or not. The commissions I earn help cover the costs of creating free content, so I can keep sharing knowledge and helping you with your DIY projects. It’s a win-win: you get the tools or products you need, and I get to keep creating helpful resources for everyone. Thank you for your support!
- Sonoff Zigbee Dongle - https://s.click.aliexpress.com/e/_onIkENx
- Zigbee Mini Switch - https://s.click.aliexpress.com/e/_oCbHJep
- Smart Curtain Module - https://s.click.aliexpress.com/e/_oEzkrL3
- Smart Home Panel - https://s.click.aliexpress.com/e/_opmaSEV
- Zigbee Switch Plate - https://s.click.aliexpress.com/e/_ol8tr6Z
- Zigbee Power Plug - https://s.click.aliexpress.com/e/_oBXYsZF
- Human Presence Sensor - https://s.click.aliexpress.com/e/_oD1QFKh
- Zigbee Light Bulb - https://s.click.aliexpress.com/e/_onjsEmz
- Zigbee gateway - https://s.click.aliexpress.com/e/_oD1x7wZ
- Smart Door Lock - https://s.click.aliexpress.com/e/_ol4V9b3
- Mini PC for HA - https://s.click.aliexpress.com/e/_omcRFgZ
- Soldering Station - https://s.click.aliexpress.com/e/_oljQEb7
Setting Up the Zigbee Dongle in Proxmox
Since my HA setup is virtualized through Proxmox, I needed to make the dongle available to the VM running Home Assistant. If you are running HAOS directly on a PC or on a RaspberryPi, you do not need to make this step.
First, I connected the Zigbee dongle to the Mini PC running Proxmox. Then, I opened the Proxmox web interface and selected the VM where Home Assistant is installed. Under the "Hardware" tab, I clicked "Add" and selected "USB Device." From the list, I chose the Sonoff Zigbee 3.0 USB Dongle (or whichever dongle you’re using). This step makes the dongle available to the Home Assistant VM.
After adding the USB device, you need to reboot the VM to ensure the changes took effect. This is important because sometimes the dongle won’t be recognized until the VM restarts. Once the VM was back up, I checked Home Assistant to confirm the dongle was detected. If everything is set up correctly, you should see the Zigbee integration ready to go in the next steps.
Configuring Zigbee in Home Assistant
First, I opened Home Assistant and went to Settings > Devices & Services > Integrations. On my first try, the dongle was not recognized, so, I clicked Add Integration and searched for "Zigbee." After selecting the Zigbee integration, Home Assistant prompted me to enter the path to the Zigbee dongle. This is usually /dev/ttyUSB0, but this might vary depending on your setup. If you’re unsure, you can check the device path in Home Assistant’s hardware list located under Settings > System > Hardware > All Hardware.
Before I restarted the VM, there was nothing showing in there but once I restarted it, on the Integrations page, the dongle was recognized and I was offered to set it up.
Once the dongle was connected, Home Assistant asked me to create a new Zigbee network. This is a one-time setup, and it automatically generates the necessary configuration. After completing this step, the Zigbee integration was ready to use, and I could start pairing devices.
Adding a Zigbee Device to Home Assistant
Now that the Zigbee network is set up, it’s time to add a device. For this example, I used a Zigbee-enabled smart switch to demonstrate how pairing works. The process is simple and can be repeated for any Zigbee device, whether it’s a sensor, light, or something you’ve built yourself.
First, I put the smart switch into pairing mode by holding down its button for about 10 seconds (the exact method may vary depending on the device). Then, in Home Assistant, I went to Settings > Devices & Services > Zigbee Integration and clicked Add Device. Home Assistant started searching for nearby Zigbee devices, and within a few seconds, it detected the smart switch. I gave it a name, like "Test Light," and assigned it to the correct room for better organization.
Once paired, I could control the switch directly from Home Assistant. Turning the light on and off worked seamlessly, and I could also use the physical switch to control it. This confirmed that the Zigbee setup was working perfectly, and I was ready to add more devices to my network.
Building a DIY Zigbee Device with ESP32-C6
One of the most exciting parts of this setup was the possibility of creating my own Zigbee device using the ESP32-C6. For this, I used the ESP32-C6 DevKitM-1 module. It is one of the few ESP32 boards that can work with Zigbee so I decided to give it a try.
I started by connecting the module to my computer via USB and uploading a demo sketch provided by Espressif using the Arduino IDE. The sketch, called "Zigbee_Dimmable_Light," allows the onboard LED to be controlled over Zigbee. Using the Arduino IDE, I selected the ESP32-C6 board, loaded the sketch, and uploaded it to the module.
For this to work properly, you must select the right partition scheme as well as the Zigbee mode before you upload the sketch to the module.
Once the sketch was uploaded, I put the ESP32-C6 into pairing mode by pressing the boot button. In Home Assistant, I followed the same steps as before to add a new Zigbee device. The ESP32-C6 was detected almost instantly, and I could control the onboard LED directly from Home Assistant.
While the basic functionality worked perfectly, I noticed that some features, like adjusting the LED brightness, didn’t work as expected. This is something I plan to explore further in future projects, but for now, it’s a great starting point for building custom Zigbee devices.
Conclusion and Next Steps
Setting up the Zigbee dongle on Home Assistant was a rewarding experience. Not only did it open up the way to free my Wi-Fi network, but it also opened the possibility to work on more intricate Zigbee based DIY devices. Being able to control both commercial Zigbee devices and my own DIY creations, like the ESP32-C6 DevKit, has given me a lot of flexibility and inspiration for future projects.
Moving forward, I plan to expand my Zigbee network by adding more sensors, lights, and devices. I also want to dive deeper into programming the ESP32-C6 to unlock its full potential.
If you have any ideas for projects or specific features you’d like to see, feel free to share them in the comments—I’d love to hear your thoughts!
Thanks for following along, and if you found this tutorial helpful, consider subscribing for more DIY smart home projects.
Until next time, happy tinkering!