Using Matter and Thread in a dockerized HA instance

What would I need here?

A running matter-server container and the Matter integration in HA?

What needs to run on the machine where the SkyConnect USB stick is actually plugged in? (some border router software?)

I do already haver a ZigBee network and do not need the ZigBee functionality of the stick. Can ZigBee be turned off or would that be a stupid idea?

Better to flash with the Thread-only firmware.

https://skyconnect.home-assistant.io/about-firmware-options/

and

1 Like

Thank you. I’ll do that.

Regarding the Setup?

  1. One Container with OpenThreadBoarderRouter that connects to the physical device (SkyConnect USB stick)?
  2. Matter server container
  3. Matter Integration in HA

Is that correct?

Correct … .

And remember that you need an IPv6 network and preferable just one with IPv6 configuration set to Automatic in HA.
Do not expect to get it to work if the HA or Matter containers have multiple NICs configured.
And finally remember to copy the credentials to the Thread network to the commissioning device.

This is the way for Android phones to copy the credentials over (I do not have an iPhone, so no idea there)

On the Android Companion App open Settings → Companion App → Troubleshooting (I think that is what it is called in english, but it list logfiles and other tools to diagnostics as description of the item).
In this next window click the Sync Thread Login Credentials (Again it might not be named exactly that, but close to and there should not be that many options and it should be in the bottom)

It should say either something with “Added …” or “Already using the same credentials”.
The trick here is to run it again and make sure that it does not say “Added …” the second time.

If it does then you need to clear the Google Play Services Cache, which might clear a lot of other stuff, like login to services and credit card informations for Google Play and websites and so on, so make sure you know you informations before hand.

The way to clear the cache is Settings → Apps → See All Apps → Google Play Services → Storage and Cache → Manage Storage → Clear All Cache
Now repeat the syncing of the thread credentials above.

Hi I have flashed my sonoff dongle-e with an openthread firmware (thread only). I believe this is the same situation like you. The dongle will act as a border router. Here are what I have:

Docker containers:

Intergrations:

  • open thread border router integration
    not sure if it’s really necessary, use http://localhost:8081 by default to connect to the otbr container. (don’t know if this port 8081 can be changed)

  • Thread integration
    used to create thread network, border router must be assigned to the homeassistant thread network

  • Matter integration
    connect to the matter container, default websocket address doesn’t need to be changed for setup

When all of these are configured correctly, you can add matter devices with the homeassistant app on your smart phone.

docker-compose:

version: '3'
services:
  otbr:
    container_name: otbr
    image: openthread/otbr
    network_mode: host
    volumes:
     # content of file otbr-web: OTBR_WEB_OPTS="-I wpan0 -d7 -p 8080"
     # used to change webui port from 80 to 8080
      - /home/xxx/home-assistant/openthread/otbr-web:/etc/default/otbr-web:ro
    privileged: true
    # ttyUSB1 is my dongle
    # eth0 is my network interface
    command: >
      --radio-url spinel+hdlc+uart:///dev/ttyUSB1?uart-baudrate=460800
      --backbone-interface eth0
    
  matter-server:
    image: ghcr.io/home-assistant-libs/python-matter-server:stable
    container_name: matter-server
    restart: unless-stopped
    network_mode: host
    privileged: true
    security_opt:
      - apparmor:unconfined
    volumes:
      - /home/xxx/home-assistant/matter-data:/data/
      - /run/dbus:/run/dbus:ro
      - /etc/localtime:/etc/localtime:ro
      - /dev/hci0  # bluetooth device, might not be necessary, just in case
	
    command: >
      --storage-path /data
      --paa-root-cert-dir /data/credentials
      --bluetooth-adapter 0
# "bluetooth-adapter 0" refers to hci0, this is very important when bluetooth is needed for paring

screenshot for thread network: