Help with ZHA error while adding Sonoff Zigbee dongle to HS ZNET

I am running Home Assistant with a ZNET sucessfully managing all my Z-wave devices. In wanting to add Zigbee, I purchased a Sonoff Zigbee 3.0 USB Plus dongle and followed the instructions here to add it to HA: Z-NET Integration with Home Assistant

All goes well with the above instructions until I click Submit after entering the serial port details on the ZHA integration. I get an error that shows “Failed to connect”, and the HA log file error shows the ZNET refused the connection. I have tried several different times, and restarted both HA and the ZNET several times as well. I also SSH into the ZNET and it can see the Sonoff dongle and port 2003 is shown to be listening. Any help would be greatly appreciated.
Thanks



ZNET netstat zwave connected

HA Log

How old is your Z-Net? There was a ser2net configuration issue at one point that would close connections is there was no traffic for a certain number of seconds. This is widely discussed on the Homeseer Forum.

I think I bought it in 2018 so pretty old. I have pretty much given up on this and just connected the Sonoff controller directly to the HA system. Doing this, I was able to set it up successfully and join a few Zigbee devices to it with no issues.

Ok. If you’re interested in revisiting it, I have 2 Zigbee controller connected in my Z-Nets and using ser2net without issue, so it is achievable.

Thanks @mterry63 yes I would be interested in trying to get this to work with the ZNET so if you could let me know how you got yours working I would appreciate it.

Post your ser2net config.

An interesting thing I see is that ttyUSB0 is bound to port 2002 and not 2003 like the HS documentation states. I am guessing this is because I have a Sonoff -P model controller vs. the Sonoff -E model that the HS docs are based on.

root@ZNET:~# cat /etc/ser2net.conf 
#     state  Either raw or rawlp or telnet or off.  off disables
#            the  port  from  accepting  connections.  It can be
#            turned on later from the control port.  raw enables
#            the port and  transfers  all data as-is between the
#            port  and  the long.  rawlp  enables  the port  and
#            transfers  all input data to device, device is open
#            without  any  termios  setting.  It  allow  to  use
#            /dev/lpX  devices  and  printers connected to them.
#            telnet enables the port and runs the telnet  proto-
#            col  on the port to set up telnet parameters.  This
#            is most useful for using telnet.
#
#     timeout
#            The time (in seconds) before the port will be  dis-
#            connected  if  there  is no activity on it.  A zero
#            value disables this funciton.
#
#     device The  name  of  the  device   to  connect  to.  This
#            must be in the form of /dev/<device>.
#
#     options
#            Sets  operational  parameters  for the serial port.
#            Options 300, 1200, 2400, 4800, 9600, 19200, 38400,
#            57600, 115200 set the various baud rates.  EVEN,
#            ODD, NONE set the parity.  1STOPBIT, 2STOPBITS set
#            the number of stop bits.  7DATABITS, 8DATABITS set
#            the number of data bits.  [-]XONXOFF turns on (-
#            off) XON/XOFF support.  [-]RTSCTS turns on (- off)
#            hardware flow control, [-]LOCAL turns off (- on)
#            monitoring of the modem lines, and
#            [-]HANGUP_WHEN_DONE turns on (- off) lowering the
#            modem control lines when the connextion is done.
#            NOBREAK disables automatic setting of the break
#            setting of the serial port.
#            The "remctl" option allow remote control (ala RFC
#            2217) of serial-port configuration.  A banner name
#            may also be specified, that banner will be printed
#            for the line.  If no banner is given, then no
#            banner is printed.
#
# or...
#     device The  name  of  the  device   to  connect  to.  This
#            must be in the form of /dev/<device>.
#
#     options
#            Sets  operational  parameters  for the serial port.
#            Options 300, 1200, 2400, 4800, 9600, 19200, 38400,
#            57600, 115200 set the various baud rates.  EVEN,
#            ODD, NONE set the parity.  1STOPBIT, 2STOPBITS set
#            the number of stop bits.  7DATABITS, 8DATABITS set
#            the number of data bits.  [-]XONXOFF turns on (-
#            off) XON/XOFF support.  [-]RTSCTS turns on (- off)
#            hardware flow control, [-]LOCAL turns off (- on)
#            monitoring of the modem lines, and
#            [-]HANGUP_WHEN_DONE turns on (- off) lowering the
#            modem control lines when the connextion is done.
#            NOBREAK disables automatic setting of the break
#            setting of the serial port.
#            The "remctl" option allow remote control (ala RFC
#            2217) of serial-port configuration.  A banner name
#            may also be specified, that banner will be printed
#            for the line.  If no banner is given, then no
#            banner is printed.
#
# or...
#  BANNER:<banner name>:banner
#    This will create a banner, if the banner name is given in the
#    options of a line, that banner will be printed.  This takes the
#    standard "C" \x characters (\r is carraige return, \n is newline,
#    etc.).  It also accepts \d, which prints the device name, \p,
#    which prints the TCP port number, and \s which prints the serial
#    parameters (eg 9600N81).  Banners can span lines if the last
#    character on a line is '\'.  Note that you *must* use \r\n to
#    start a new line.
#
# Note that the same device can be listed multiple times under different
# ports, this allows the same serial port to have both telnet and raw
# protocols.

# The original config file shipped with the upstream sources can be
# found in /usr/share/doc/ser2net/examples

BANNER:banner:\r\nser2net port \p device \d [\s] (Debian GNU/Linux)\r\n\r\n

#2000:telnet:600:/dev/ttyS0:9600 8DATABITS NONE 1STOPBIT banner
2001:raw:0:/dev/ttyAMA0:115200 8DATABITS NONE 1STOPBIT -XONXOFF -RTSCTS
2002:raw:0:/dev/ttyUSB0:19200 8DATABITS NONE 1STOPBIT -XONXOFF -RTSCTS
2003:raw:0:/dev/ttyACM0:115200 8DATABITS NONE 1STOPBIT
#3000:telnet:600:/dev/ttyS0:19200 8DATABITS NONE 1STOPBIT banner
#3001:raw:0:/dev/ttyS2:115200 8DATABITS NONE 1STOPBIT -XONXOFF -RTSCTS

SSH to the Z-Net and execute the command

ls -ls /dev/serial/by-id/*

This will list your attached serial devices (the Z-wave controller isn’t serial and won’t appear)
You should see the path to your Zigbee controller. Here’s mine as an example. I have a Conbee II Zigbee coordinator and my RFXtrx433 connected to this Pi.

0 lrwxrwxrwx 1 root root 13 May 7 18:14 /dev/serial/by-id/usb-dresden_elektronik_ingenieurtechnik_GmbH_ConBee_II_DE2448702-if00 → …/…/ttyACM0
0 lrwxrwxrwx 1 root root 13 Apr 23 20:20 /dev/serial/by-id/usb-RFXCOM_RFXtrx433XL_DO5OOZSL-if00-port0 → …/…/ttyUSB0

You want to copy the path for your Zigbee coordinator:
/dev/serial/by-id/usb-dresden_elektronik_ingenieurtechnik_GmbH_ConBee_II_DE2448702-if00

Add it between the colons for the port you want (doesn’t matter as long as it isn’t in use) where you currrently have /dev/tty/whatever

Save the config file. You don’t need to restart the Z-Net, to force reload of conf file, send sighup to process

ps -ef | grep ser2net

The process id is the second column of the ps output.

sudo kill -1

To check the update took effect run

netstat -ntl

Ensure it’s listening on the port you configured.

At this point you need to reconfigure ZHA to point to the new path like you showed earlier.

Good luck!

WooHoo! That worked! Thanks so much @mterry63 !

1 Like