Quick Answer

Zigbee2MQTT supports more devices, exposes more attributes, and gives you MQTT flexibility. ZHA is easier to set up and lives entirely within Home Assistant with no extra services. For most users with a diverse device mix, Zigbee2MQTT is the better choice. ZHA is great for getting started quickly with common devices.

Table of Contents

  1. Architecture Differences
  2. Device Support
  3. Setup Complexity
  4. Zigbee2MQTT Config Example
  5. ZHA Config Example
  6. When to Choose Each
  7. Troubleshooting
  8. FAQ

What You Need

Architecture Differences

Understanding how each system is built helps you pick the right one for your needs.

Zigbee2MQTT Architecture

Zigbee2MQTT is a separate Node.js application that sits between your Zigbee coordinator and the rest of your system. It communicates with devices via the coordinator, then publishes device state to an MQTT broker (usually Mosquitto). Home Assistant reads those MQTT messages and creates entities via autodiscovery.

The flow looks like: Zigbee Device → USB Coordinator → Zigbee2MQTT → MQTT Broker → Home Assistant

This layered approach means more moving parts, but also more power — you can subscribe to MQTT topics from any other system, Node-RED, scripts, or even other HA instances.

ZHA Architecture

ZHA (Zigbee Home Automation) is a native Home Assistant integration. It talks directly to the coordinator from within HA, with no MQTT broker or external services required. Device state goes straight into HA entities.

The flow: Zigbee Device → USB Coordinator → ZHA (inside HA) → HA Entities

Simpler, fewer services, but less flexible if you want to expose data to other systems.

Device Support

MetricZigbee2MQTTZHA
Supported devices3,800+2,500+
Aqara coverageExcellentGood
IKEA TRÅDFRIExcellentGood
Tuya devicesGoodMixed
Custom attributesExtensive (per device)Standard only
OTA firmware updates✅ Yes✅ Yes

Zigbee2MQTT generally exposes more device-specific attributes. For example, an Aqara motion sensor via Zigbee2MQTT gives you motion, illuminance, temperature, battery, link quality, and voltage. ZHA may only expose motion and battery for the same device.

Setup Complexity

Zigbee2MQTT Setup

  1. Install Mosquitto MQTT broker add-on in HA
  2. Install Zigbee2MQTT add-on in HA
  3. Configure Zigbee2MQTT with your coordinator serial port and MQTT settings
  4. Enable HA autodiscovery in Zigbee2MQTT config
  5. Pair devices — they auto-appear in HA

ZHA Setup

  1. Go to HA Settings → Integrations → Add → ZHA
  2. Select your coordinator's serial port
  3. Pair devices directly in the ZHA interface

ZHA wins on simplicity — it's genuinely just a few clicks. Zigbee2MQTT requires installing Mosquitto first and editing a configuration file, but once set up it's extremely stable.

Zigbee2MQTT Configuration Example

Zigbee2MQTT configuration.yaml (in add-on config)
mqtt:
  base_topic: zigbee2mqtt
  server: mqtt://localhost:1883
  user: homeassistant
  password: your_mqtt_password

serial:
  port: /dev/ttyUSB0
  adapter: zstack

homeassistant: true

permit_join: false

advanced:
  log_level: info
  channel: 25
Tip: Set permit_join: true temporarily when pairing new devices, then set it back to false for security.

ZHA Configuration Example

ZHA configuration is mostly done through the UI, but you can tune radio settings in your HA configuration.yaml:

configuration.yaml (optional ZHA tuning)
zha:
  zigpy_config:
    network:
      channel: 25
    ota:
      ikea_provider: true
      salus_provider: true

To pair a ZHA device: go to Settings → Devices & Services → ZHA → Add Device and put your device in pairing mode.

When to Choose Each

Choose Zigbee2MQTT if:

You have many different device brands, want maximum attribute exposure, plan to use Node-RED or other MQTT-based tools, want OTA firmware updates for Ikea/Aqara devices, or want to run automations based on MQTT topics directly.

Choose ZHA if:

You're new to HA and want the simplest setup, you have mostly common devices (IKEA, Philips Hue, Aqara basic sensors), and you don't need MQTT access from outside HA.

Note: You cannot run ZHA and Zigbee2MQTT on the same coordinator at the same time. Pick one. Migrating between them requires re-pairing all devices.

Troubleshooting

FAQ

Can I switch from ZHA to Zigbee2MQTT without re-pairing?

No — each Zigbee stack uses its own network key and device database. Switching requires removing and re-pairing all devices. Plan for this before you start and choose wisely upfront.

Which coordinator USB stick works with both?

The Sonoff ZBDongle-P (CC2652P based) works with both Zigbee2MQTT and ZHA. It's the most widely recommended coordinator in 2026. The ConBee II/III also works with both.

Does Zigbee2MQTT work without Home Assistant?

Yes — Zigbee2MQTT is a standalone app. You can run it on any Linux machine and use it with any MQTT-capable system, not just HA.

Which one has better mesh networking?

Both use the same underlying Zigbee radio stack — mesh quality depends on your coordinator firmware and device placement, not which software stack you use.

SmartWired uses affiliate links. If you buy through our links, we may earn a commission at no extra cost to you. See our Affiliate Disclosure.