Connect to a remote adapter

This how-to explains how to run Zigbee2MQTT with an adapter on a remote location. We will use ser2net for this which allows to connect to a serial port over TCP. In this way you can e.g. setup a Raspberry Pi Zero with the adapter connected while running Zigbee2MQTT on a different system. The instructions below have to be executed on the system where the adapter is connected to.

WARNING

WiFi-based Serial-to-IP bridges are not recommended as the serial protocol does not have enough fault-tolerance to handle packet loss or latency delays that can normally occur over WiFi connections.

1. Install ser2net

sudo apt-get install ser2net

2(a). Configure ser2net (<4.0)

sudo nano /etc/ser2net.conf

Add the following entry, replace /dev/ttyACM0 with the correct path to your adapter.

20108:raw:0:/dev/ttyACM0:115200 8DATABITS NONE 1STOPBIT

After this reboot the system.

reboot

2(b). Configure ser2net (>=4.0)

sudo nano /etc/ser2net.yaml

Add the following entry, replace /dev/ttyACM0 with the correct path to your adapter.

connection: &con01
  accepter: tcp,20108
  connector: serialdev,/dev/ttyACM0,115200n81,local
  options:
    kickolduser: true

With a Slaesh coordinator, you need to set the DTR and RTS pins of the RS232 interfece in a specific way. The current (2023-02-04) version of Raspberry Pi OS does not have recent enough of ser2net to do that correctly, see https://github.com/cminyard/ser2net/issues/46. You might need to build the "gensi" and the "ser2net" packages on your rpi yourself. Other distributions might already have a more recent version. Once you have a version of ser2net that supports the "dtr=off" setting, use the following configuration:

connection: &con01
  accepter: tcp,20108
  connector: serialdev,/dev/ttyACM0,115200n81,local,dtr=off,rts=off
  options:
    kickolduser: true

For ConBee II / RaspBee II, use the following configuration:

connection: &con01
  accepter: tcp,20108
  connector: serialdev,/dev/ttyACM0,115200n81,nobreak,local
  options:
    kickolduser: true

After this reboot the system.

reboot

3. Configure

Now edit the Zigbee2MQTT configuration.yaml accordingly, replace 192.168.2.13 with the IP or hostname of your system where the adapter is connected to.

serial:
    port: 'tcp://192.168.2.13:20108'

Done! Now you can start Zigbee2MQTT.