--- title: Zigbee Home Automation description: Instructions on how to integrate your Zigbee Home Automation (ZHA) devices within Home Assistant. ha_category: - Hub - Binary Sensor - Climate - Fan - Light - Lock - Sensor - Switch - Cover ha_release: 0.44 ha_iot_class: Local Polling featured: true ha_config_flow: true ha_codeowners: - '@dmulcahey' - '@adminiuga' ha_domain: zha --- The ZHA (Zigbee Home Automation) integration allows you to connect many off-the-shelf [Zigbee based devices](https://zigbeealliance.org) directly to Home Assistant, using one of the many available Zigbee coordinators. ZHA uses an open-source Python library implementing a hardware-independent Zigbee stack called [zigpy](https://github.com/zigpy/zigpy). All coordinators compatible with zigpy can be used with ZHA. There is currently support for the following device types within Home Assistant: - Binary Sensor - Climate (beta) - Cover - Fan - Light - Lock - Sensor - Switch There is also support for grouping of lights, switches, and fans (i.e. support for commanding device groups as entities). At least two entities must be added to a group before the group entity is created. ## Compatible hardware ZHA integration uses a hardware independent Zigbee stack implementation with modular design which means that it can support any one of the many Zigbee coordinator radio modules/adapters available from different manufacturers, as long as that module/adapter is compatible with [zigpy](https://github.com/zigpy/zigpy). Note! Zigbee 3.0 support or not in zigpy, depends primarily on your Zigbee coordinator hardware and its firmware. Some Zigbee coordinator hardware supports Zigbee 3.0 but might be shipped with an older firmware which does not. In such a case you may want to upgrade the firmware manually yourself. Some other Zigbee coordinator hardware may not support a firmware that is capable of Zigbee 3.0 at all but can still be fully functional and feature-complete for your needs. This is very common as many, if not most, Zigbee devices do not yet Zigbee 3.0. As a general rule, newer Zigbee coordinator hardware generally supports Zigbee 3.0 firmware and it is up to its manufacturer to make such firmware available for them. ### Known working Zigbee radio modules - dresden elektronik deCONZ based Zigbee radios (via the [zigpy-deconz](https://github.com/zigpy/zigpy-deconz) library for zigpy) - [ConBee II (a.k.a. ConBee 2) USB adapter from dresden elektronik](https://phoscon.de/conbee2) - [ConBee USB adapter from dresden elektronik](https://phoscon.de/conbee) - [RaspBee II (a.k.a. RaspBee 2) Raspberry Pi Shield from dresden elektronik](https://www.dresden-elektronik.com/product/raspbee-II.html) - [RaspBee Raspberry Pi Shield from dresden elektronik](https://phoscon.de/raspbee) - Silicon Labs EmberZNet based radios using the EZSP protocol (via the [bellows](https://github.com/zigpy/bellows) library for zigpy) - [ITEAD Sonoff ZBBridge](https://www.itead.cc/smart-home/sonoff-zbbridge.html) (Note! This first have to be flashed with [Tasmota firmware and Silabs EmberZNet NCP EZSP UART Host firmware](https://www.digiblur.com/2020/07/how-to-use-sonoff-zigbee-bridge-with.html)) - [Nortek GoControl QuickStick Combo Model HUSBZB-1 (Z-Wave & Zigbee Ember 3581 USB Adapter)](https://www.nortekcontrol.com/products/2gig/husbzb-1-gocontrol-quickstick-combo/) (Note! Not a must but recommend [upgrade the EmberZNet NCP application firmware](https://github.com/walthowd/husbzb-firmware)) - [Elelabs Zigbee USB Adapter](https://elelabs.com/products/elelabs_usb_adapter.html) (Note! Not a must but recommend [upgrade the EmberZNet NCP application firmware](https://github.com/Elelabs/elelabs-zigbee-ezsp-utility)) - [Elelabs Zigbee Raspberry Pi Shield](https://elelabs.com/products/elelabs_zigbee_shield.html) (Note! Not a must but recommend [upgrade the EmberZNet NCP application firmware](https://github.com/Elelabs/elelabs-zigbee-ezsp-utility)) - Bitron Video/Smabit BV AV2010/10 USB-Stick with Silicon Labs Ember 3587 - Telegesis ETRX357USB (Note! This first have to be flashed with other EmberZNet firmware) - Telegesis ETRX357USB-LRS (Note! This first have to be flashed with other EmberZNet firmware) - Telegesis ETRX357USB-LRS+8M (Note! This first have to be flashed with other EmberZNet firmware) - Texas Instruments based radios with Z-Stack 3.x.x (via the [zigpy-znp](https://github.com/zha-ng/zigpy-znp) library for zigpy) - [CC2652P/CC2652R/CC2652RB USB stick or dev board hardware flashed with Z-Stack 3.x.x coordinator firmware](https://www.zigbee2mqtt.io/information/supported_adapters) - [CC1352P/CC1352R USB stick or dev board hardware flashed with Z-Stack 3.x.x coordinator firmware](https://www.zigbee2mqtt.io/information/supported_adapters) - Digi XBee Zigbee based radios (via the [zigpy-xbee](https://github.com/zigpy/zigpy-xbee) library for zigpy) - Digi XBee Series 3 (xbee3-24) modules - Digi XBee Series 2C (S2C) modules - Digi XBee Series 2 (S2) modules (Note! This first have to be flashed with Zigbee Coordinator API firmware) - ZiGate based radios (via the [zigpy-zigate](https://github.com/zigpy/zigpy-zigate) library for zigpy and require firmware 3.1d or later) - [ZiGate USB-TTL](https://zigate.fr/produit/zigate-ttl/) - [ZiGate USB-DIN](https://zigate.fr/produit/zigate-usb-din/) - [PiZiGate](https://zigate.fr/produit/pizigate-v1-0/) - [Wifi ZiGate](https://zigate.fr/produit/zigate-pack-wifi-v1-3/) ### Experimental support for additional Zigbee radio modules - Texas Instruments based radios with Z-Stack Home 1.2.x (via the [zigpy-cc](https://github.com/zigpy/zigpy-cc) library for zigpy) - [CC2531 USB stick hardware flashed with Z-Stack Home 1.2.x coordinator firmware](https://www.zigbee2mqtt.io/information/supported_adapters) - [CC2530 + CC2591/CC2592 USB stick hardware flashed with Z-Stack Home 1.2.x coordinator firmware](https://www.zigbee2mqtt.io/information/supported_adapters) - [CC2538 + CC2592 dev board hardware flashed with Z-Stack Home 1.2.x coordinator firmware](https://www.zigbee2mqtt.io/information/supported_adapters) ## Configuration - GUI From the Home Assistant front page go to **Configuration** and then select **Integrations** from the list. Use the plus button in the bottom right to add a new integration called **ZHA**. In the popup: - Serial Device Path - List of detected serial ports on the system. You need to pick one to which your radio is connected - Submit Press `Submit` and the integration will try to detect radio type automatically. If unsuccessful, you will get a new pop-up asking for a radio type. In the pop-up: - Radio Type | Radio Type | Zigbee Radio Hardware | | ------------- | ------------- | | `ezsp` | Silicon Labs EmberZNet protocol (e.g., Elelabs, HUSBZB-1, Telegesis) | | `deconz` | dresden elektronik deCONZ protocol (e.g., ConBee I/II, RaspBee I/II) | | `znp` | Texas Instruments new (active): Z-Stack 3.x.x ZNP protocol (e.g., CC26x2, CC13x2) | | `ti_cc` | Texas Instruments legacy & HA12: Z-Stack Home 1.2.x ZNP protocol (e.g., CC253x) | | `zigate` | ZiGate Serial protocol (e.g., ZiGate USB-TTL, PiZiGate, ZiGate WiFi) | | `xbee` | Digi XBee ZB Coordinator Firmware protocol (e.g., Digi XBee Series 2, 2C, 3) | - Submit Press `Submit` to save radio type and you will get a new form asking for port settings specific for this radio type. In the pop-up: - Serial device path - port speed (not applicable for all radios) - data flow control (not applicable for all radios) Most devices need at the very least the serial device path, like `/dev/ttyUSB0`, but it is recommended to use device path from `/dev/serial/by-id` folder, e.g., `/dev/serial/by-id/usb-Silicon_Labs_HubZ_Smart_Home_Controller_C0F003D3-if01-port0` Press `Submit`. The success dialog will appear or an error will be displayed in the popup. An error is likely if Home Assistant can't access the USB device or your device is not up to date. Refer to [Troubleshooting](#troubleshooting) below for more information. If you are use ZiGate or Sonoff ZBBridge you have to use some special usb_path configuration: - ZiGate USB TTL or DIN: `/dev/ttyUSB0` or `auto` to auto discover the zigate - PiZigate : `pizigate:/dev/serial0` - Wifi Zigate : `socket://[IP]:[PORT]` for example `socket://192.168.1.10:9999` - Sonoff ZBBridge : `socket://[IP]:[PORT]` for example `socket://192.168.1.11:8888` {% configuration %} database_path: description: _Full_ path to the database which will keep persistent network data. required: true type: string enable_quirks: description: Enable quirks mode for devices where manufacturers didn't follow specs. required: false type: boolean default: true {% endconfiguration %} To add new devices to the network, call the `permit` service on the `zha` domain. Do this by clicking the Service icon in Developer tools and typing `zha.permit` in the **Service** dropdown box. Next, follow the device instructions for adding, scanning or factory reset. ## Services ### Service `zha.permit` This service opens network for joining new devices. | Data | Optional | Description | | ---- | ---- | ----------- | | `duration` | yes | For how long to allow new devices to join, default 60s | `ieee` | yes | allow new devices to join via an existing device To join a new device using an install code (ZB3 devices) use the following data attributes (must use parameters only from the same group: | Data | Parameter Group | Description | | ---- | ---- | ----------- | | `src_ieee` | install_code | The IEEE address of the joining ZB3 device. Use with `install_code` | `install_code` | install_code | Install Code of the joining device. Use with `src_ieee` | `qr_code` | qr_code | QR code containing IEEE and Install Code of the joining ZB3 device