Rfxcom unable to re-send undecoded data

Hello,
I didn’t manage to send hex data directly to RFXCom using the RFXCom binding (configured with serialPort). After reading this post Share Z-wave dongle over IP (USB over IP using ser2net / socat ) guide and this page RFXCOM - Bindings | openHAB I decided to share my usb device over the network with a TCP connexion.

What I have done

  • For connecting RFXCom with openhab :

RFXCom (/dev/ttyUSB0) ↔ ser2net (TCP server) ↔ socat (TCP client) ↔ /dev/VirtualRfxCom (virtual serial port) ↔ OpenHab2

  • For sending hex data to RFXCom (for example replay undecoded data)

RFXCom (/dev/ttyUSB0) ↔ ser2net (TCP server) ↔ Script which send TCP data using netcat

  • For managing RFXCom, test purposes…

RFXCom (/dev/ttyUSB0) ↔ ser2net (TCP server) ↔ RFXManager on Windows

The problems I encountered

>> Openhabian and ser2net

The apt repository in openhabian do not get the latest version of ser2net which allow multiple connexions (the parameter max-connexions). I had to install Raspbian and Openhab with the package repository procedure openHAB on Linux | openHAB. Another solution (simpler) would be to update the repo definition in openhabian.

ser2net configuration

# /etc/ser2net.conf
10001:raw:0:/dev/USBrfxcom:38400 8DATABITS NONE 1STOPBIT max-connections=3

This link is useful for the configuring the serial port : Serial Port Configuration | openHAB

>> RFXCom and TCP/IP binding

The TCP connexion is not stable (systematically released after some time), the serial connexion works better, that’s why I use of socat which map a virtual serial port with a TCP client.

socat configuration

 # /etc/default/socat.conf
OPTIONS="pty,link=/dev/VirtualRfxCom,raw,user=openhab,group=dialout,mode=777 tcp:192.168.1.12:10001,forever,interval=1"

forever and interval parameters are important because on reboot if ser2net is not ready ( = the port is not opened), socat will fail to establish the connexion

Openhab thing configuration

Bridge rfxcom:bridge:rfxcom433 [ serialPort="/dev/VirtualRfxCom", ignoreConfig=false, enableUndecoded=false, enableARC=true, enableAC=true]

>> The format of the data to send

I start with the undecoded messages I can observe with RFXManager, I re-send it with netcat and printf using the \x commutator. I also have to use sleep between commands because they are sent to quickly.

The shell commands I use (in a script) :

printf "\x54\x7F [ … some hex data separated with \x … ] \x00\x00" | nc -N 127.0.0.1 10001
sleep 0.3

And the code in the rules

executeCommandLine("bash /etc/openhab2/scripts/HoodManager.sh")

Overall I must admit it is not a simple solution but It works like a charm.

I hope it can help, I am listening to all the good ideas / advices on this configuration.

1 Like