deCONZ
Connects to a deCONZ/ConBee/RaspBee gateway's own local REST API, with live updates pushed over its own WebSocket. Split out into its own integration, separate from Zigbee - a deCONZ gateway and a bare EZSP coordinator are both "Zigbee coordinators" conceptually, but talk completely different local protocols, so each now has its own gateways, devices, and settings.
Running deCONZ
Not bundled with Athena's own compose files - run it as its own container, on whatever machine
the ConBee/RaspBee stick is physically plugged into. Athena's own repo already ships this as a
ready-made docker-compose-deconz.yml (with a matching
.env.deconz.example) - copy both, fill in the .env, and run
docker compose -f docker-compose-deconz.yml up -d directly. Or save the snippet
here as your own docker-compose.yml in a new folder:
# docker-compose.yml - deCONZ, standalone services: deconz: container_name: deconz image: deconzcommunity/deconz:latest restart: unless-stopped devices: # Use /dev/serial/by-id/... (see `ls /dev/serial/by-id/`), not /dev/ttyACM0/ttyUSB0 - that # mapping can shift across reboots if more than one USB-serial adapter is plugged in. - '/dev/serial/by-id/<your-stick-here>:/dev/ttyACM0' volumes: - deconz-data:/opt/deCONZ ports: - '8080:8080' # deCONZ's own web UI (Phoscon) + REST API - matches Athena's own default Port below - '8443:8443' # the WebSocket API Athena's own live-update connection uses environment: - DECONZ_DEVICE=/dev/ttyACM0 - DECONZ_WEB_PORT=8080 - DECONZ_WS_PORT=8443 # - DECONZ_BAUDRATE=115200 # ConBee III; use 38400 for RaspBee II instead volumes: deconz-data:
Run docker compose up -d, then open http://<that-host>:8080 once
to run Phoscon's own setup wizard and generate an API key (Settings > Gateway > Advanced >
Authenticate app, or the "unlock gateway" step in the deCONZ desktop app) - Athena's own "Add
gateway" form needs that key, plus this host's address and the 8080 port above.
The devices: mapping above pins one specific stick to one fixed container-side
device node - Docker resolves it once at container start, so unplugging the stick (or swapping
it for a different one) isn't guaranteed to keep working without running
docker compose up -d again. For real hot-plug support instead, bind-mount the whole
host /dev and grant the relevant device class, the same tradeoff documented on
Athena's own docker-compose.yml for its Zigbee EZSP mount:
devices: - /dev:/dev device_cgroup_rules: - 'c 166:* rmw' # ttyACM* - USB CDC-ACM, e.g. ConBee II/III environment: # Point this at the stable by-id path directly rather than /dev/ttyACM0 - with the whole # host /dev visible above, that symlink (and whatever real device it points at after a # replug) is visible inside the container too, so deCONZ keeps finding the same stick even # if it re-enumerates under a different ttyACMn. - DECONZ_DEVICE=/dev/serial/by-id/<your-stick-here>
Adding a gateway
Devices & Services > deCONZ > "Add gateway" takes the stick's address, port, and an API key created via deCONZ's own "unlock gateway" pairing step (done once, from the deCONZ app itself). End devices are added by hand underneath a connected gateway - IEEE address, endpoint, and device type - rather than auto-discovered.
What's supported
- Switches - on/off, controllable.
- Dimmable lights - on/off plus brightness, kept in Zigbee's own native 0-254 range.
- Color lights - hue/saturation color and color temperature on top of dimming.
- Temperature & occupancy sensors - read-only.
Every device type works with Dashboard cards and Automations exactly like any other integration. deCONZ entities aren't wired into the History page's own multi-entity graph picker yet.