Getting Your SkyConnect ZBT-2 Working With Docker Home Assistant, Mosquitto & Zigbee2MQTT 🛰️✨

Getting Your SkyConnect ZBT-2 Working With Docker Home Assistant, Mosquitto & Zigbee2MQTT 🛰️✨

23.11.2025 Uncategorized 0

So… you finally got your shiny new SkyConnect ZBT-2 — and then reality hit:
It doesn’t work out of the box. At all. 😅

Don’t panic. I’ve been there.

After some digging (and let’s be honest, a few cups of coffee), I figured out exactly what needs to be done:
✔️ Update the firmware
✔️ Use a temporary Home Assistant instance
✔️ Reconfigure Zigbee2MQTT
✔️ Re-pair devices (but keep all their friendly names!)

Here’s the clean step-by-step guide to make your ZBT-2 work perfectly with Docker Home Assistant + Mosquitto + Zigbee2MQTT.


🔧 The Short Version

  • The SkyConnect ZBT-2 requires a firmware upgrade
  • You must temporarily run a second Home Assistant container
  • ZHA will update the firmware for you
  • You then switch Zigbee2MQTT to /dev/ttyACM0
  • Re-pair your Zigbee devices — but thanks to Zigbee2MQTT’s config,
    your old friendly names will be restored automatically

🛠️ Step 1 — Plug in Your New ZBT-2

Connect the ZBT-2 to your server.
Check the device path with:

ls /dev/tty*

Most likely it will be:
👉 /dev/ttyACM0


🛠️ Step 2 — Create a Temporary Home Assistant Instance (Firmware Upgrade)

We’re only spinning up this container to let ZHA apply the firmware update.

Here’s the minimal docker-compose.yaml:

version: '3'
services:
  homeassistant:
    container_name: ha-firmware-upgrade
    image: homeassistant/home-assistant
    volumes:
      - ./conf:/config
      - /etc/localtime:/etc/localtime:ro
    devices:
      - /dev/ttyACM0:/dev/ttyACM0
    restart: always
    network_mode: host

Bring it online:

docker compose up -d

Inside Home Assistant:

  1. Log in to the temporary instance
  2. It will automatically detect the SkyConnect ZBT-2
  3. Install the detected integration → It will ask to update firmware
  4. Let the update run
  5. Then add ZHA, select the ZBT-2, choose Zigbee
  6. ZHA tries to configure it — it will fail, and that’s okay

We’re done here.
Stop and remove this HA container — we don’t need it anymore.


🛠️ Step 3 — Prepare Zigbee2MQTT for the New Adapter

  1. Stop your existing Zigbee2MQTT container
  2. Create a backup folder
  3. Copy your current Z2M data folder into it (important!)
  4. Edit your docker-compose.yaml and update the serial device path:

Old: /dev/ttyUSB0 and New: /dev/ttyACM0
Here’s the Z2M compose file:

services:
  zigbee2mqtt:
    container_name: zigbee2mqtt
    image: ghcr.io/koenkk/zigbee2mqtt
    restart: unless-stopped
    volumes:
      - ./data:/app/data
      - /run/udev:/run/udev:ro
    ports:
      - 8080:8080
    environment:
      - TZ=Europe/Amsterdam
    devices:
      - /dev/ttyACM0:/dev/ttyACM0

Start it with:

docker compose up -d

Then go to:

http://<server-ip>:8080

Initial Z2M Setup

Select:

  • Adapter: ember
  • Baudrate: 460800
  • RTS/CTS: true

Stop the container again — now we configure Z2M manually.


🛠️ Step 4 — Fix Your Zigbee2MQTT Configuration

Inside your new configuration.yaml, make sure the top looks somthing like this:

version: 4
mqtt:
  base_topic: zigbee2mqtt
  server: mqtt://192.168.178.2:1883
  user: xxxx
  password: xxxx

serial:
  port: /dev/ttyACM0
  adapter: ember
  baudrate: 460800
  rtscts: true

Now open the backup version of your config. You should see a section like this:

devices:
  '0x001788010c584aee':
    friendly_name: One
  '0x000b57fffeef394d':
    friendly_name: Two
  '0x000b57fffec2b35f':
    friendly_name: Three

Copy this entire devices: block into the end of your NEW configuration.

Save it.
Start your Z2M container.

Now simply re-pair each Zigbee device.

🎉 Zigbee2MQTT recognizes your device IDs
🎉 Restores friendly names automatically
🎉 Home Assistant treats them as if nothing happened


🎉 Final Result

  • Your ZBT-2 runs the newest firmware
  • Zigbee2MQTT recognizes it as an Ember adapter
  • Everything works faster and more reliably
  • Your devices keep their names
  • Home Assistant doesn’t freak out

All that’s left is to enjoy your upgraded Zigbee network 😄
Have fun with your new SkyConnect ZBT-2!


🧩 Bonus: Complete Home Assistant + Mosquitto + Zigbee2MQTT Setup (Docker)

For a fresh install:

services:

  home-assistant:
    container_name: home-assistant
    image: homeassistant/home-assistant
    restart: always
    networks:
      - localnet
    volumes:
      - ./home-assistant/config:/config
      - ./home-assistant/media:/media
    depends_on:
      - mosquitto
    ports:
      - 8123:8123
    environment:
      TZ: "Europe/Amsterdam"

  mosquitto:
    container_name: mosquitto
    image: eclipse-mosquitto
    restart: always
    networks:
      - localnet
    ports:
      - 1883:1883
      - 1884:1884
    volumes:
      - ./mosquitto/config:/mosquitto/config
      - ./mosquitto/data:/mosquitto/data
      - ./mosquitto/log:/mosquitto/log
    environment:
      TZ: "Europe/Amsterdam"

  zigbee2mqtt:
    container_name: zigbee2mqtt
    image: ghcr.io/koenkk/zigbee2mqtt
    restart: unless-stopped
    volumes:
      - ./zigbee2mqtt/data:/app/data
      - /run/udev:/run/udev:ro
    ports:
      - 8080:8080
    environment:
      - TZ=Europe/Amsterdam
    devices:
      - /dev/ttyACM0:/dev/ttyACM0

networks:
  localnet:
    driver: bridge