---
obj: application
repo: https://github.com/Koenkk/zigbee2mqtt
website: https://www.zigbee2mqtt.io
---

# zigbee2mqtt
Zigbee to [MQTT](../../internet/MQTT.md) bridge, get rid of your proprietary Zigbee bridges.
See [this](https://www.zigbee2mqtt.io/supported-devices/) for a list of supported devices.

![Screenshot](./zigbee2mqtt.avif)

## Setup
In order to run zigbee2mqtt you need a [MQTT](../../internet/MQTT.md) server and a zigbee adapter for talking to the zigbee devices.

## Configuration
zigbee2mqtt is configured with `configuration.yml`

Adapter configuration:
```yml
# Required: serial settings
serial:
  # Required: location of the adapter (e.g. CC2531).
  # USB adapters - use format "port: /dev/ttyACM0"
  # To autodetect the USB port, set 'port: null'.
  # Ethernet adapters - use format "port: tcp://192.168.1.12:6638"
  port: /dev/ttyACM0 
  # Optional: disable LED of the adapter if supported (default: false)
  disable_led: false
  # Optional: adapter type, not needed unless you are experiencing problems (default: shown below, options: zstack, deconz, ezsp)
  adapter: null
  # Optional: Baud rate speed for serial port, this can be anything firmware support but default is 115200 for Z-Stack and EZSP, 38400 for Deconz, however note that some EZSP firmware need 57600.
  baudrate: 115200
  # Optional: RTS / CTS Hardware Flow Control for serial port (default: false)
  rtscts: false
```

MQTT:
```yml
# Required: MQTT settings
mqtt:
  # Required: MQTT server URL (use mqtts:// for SSL/TLS connection)
  server: 'mqtt://localhost:1883'
  # Optional: MQTT base topic for Zigbee2MQTT MQTT messages (default: zigbee2mqtt)
  base_topic: zigbee2mqtt
  # Optional: absolute path to SSL/TLS certificate of CA used to sign server and client certificates (default: nothing)
  ca: '/etc/ssl/mqtt-ca.crt'
  # Optional: absolute paths to SSL/TLS key and certificate for client-authentication (default: nothing)
  key: '/etc/ssl/mqtt-client.key'
  cert: '/etc/ssl/mqtt-client.crt'
  # Optional: MQTT server authentication user (default: nothing)
  user: my_user
  # Optional: MQTT server authentication password (default: nothing)
  password: my_password
  # Optional: MQTT client ID (default: nothing)
  client_id: 'MY_CLIENT_ID'
  # Optional: disable self-signed SSL certificates (default: true)
  reject_unauthorized: true
  # Optional: Include device information to mqtt messages (default: false)
  include_device_information: true
  # Optional: MQTT keepalive in seconds (default: 60)
  keepalive: 60
  # Optional: MQTT protocol version (default: 4), set this to 5 if you
  # use the 'retention' device specific configuration
  version: 4
  # Optional: Disable retain for all send messages. ONLY enable if you MQTT broker doesn't
  # support retained message (e.g. AWS IoT core, Azure IoT Hub, Google Cloud IoT core, IBM Watson IoT Platform).
  # Enabling will break the Home Assistant integration. (default: false)
  force_disable_retain: false
```

Frontend:
```yml
frontend:
  # Optional, default 8080
  port: 8080
  # Optional, empty by default to listen on both IPv4 and IPv6. Opens a unix socket when given a path instead of an address (e.g. '/run/zigbee2mqtt/zigbee2mqtt.sock')
  host: 0.0.0.0
  # Optional, enables authentication, disabled by default
  auth_token: your-secret-token
  # Optional, url on which the frontend can be reached, currently only used for the Home Assistant device configuration page
  url: 'https://zigbee2mqtt.myhouse.org'
  # Optional, certificate file path for exposing HTTPS. The sibling property 'ssl_key' must be set for HTTPS to be activated
  ssl_cert: /config/etc/letsencrypt/live/mydomain.com/fullchain.pem
  # Optional, private key file path for exposing HTTPS. The sibling property 'ssl_cert' must be set for HTTPS to be activated
  ssl_key: /config/etc/letsencrypt/live/mydomain.com/privkey.pem
```

To enable integration with [Home Assistant](Home%20Assistant.md), add this to config:
```yml
homeassistant: true
```

## Docker Compose
```yml
version: '3'
services:
  zigbee2mqtt:
    restart: unless-stopped
    image: koenkk/zigbee2mqtt
    volumes:
      - ./zigbee2mqtt-data:/app/data
      - /run/udev:/run/udev:ro
    ports:
      - 8080:8080
    environment:
      - TZ=Europe/Berlin
    devices:
      - /dev/ttyUSB0:/dev/ttyUSB0
```
