No description, website, or topics provided.
Clone or download
Latest commit 39a21da Dec 11, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
rflink Add pair command Dec 11, 2018
rflinkproxy Decrease log level to debug for PING/PONG Nov 16, 2018
tests Fix lint errors, add python 3.5 and 3.6 to tox Nov 1, 2018
.envrc Setup asyncio command line output. Nov 14, 2016
.isort.cfg Initial manager. Nov 18, 2016
LICENCE initialize project Nov 14, 2016
README.rst Shell code blocks are not bash syntax. Nov 1, 2018
setup.cfg First iteration of asyncio protocol and basic echo console. Nov 16, 2016 Add rflinkproxy Oct 29, 2018 Everything is a protocol now, fix kaku address issues. Nov 21, 2016
tox.ini Merge pull request #10 from emontnemery/lint Nov 1, 2018


Python RFlink library

Library and CLI tools for interacting with RFlink 433MHz transceiver.


  • Python 3.4 (or higher)


This package is created mainly as a library for the Home assistant Rflink component implementation. A CLI has been created mainly for debugging purposes but may be extended in the future for more real-world application if needed.

The package also provides a CLI utility which allows a single RFLink hardware to be shared by multiple clients, e.g. Home assistant + Domoticz or multiple Home assistant instances.


  • 01-11-2018 - rflinkproxy CLI command added, thanks to a contribution by emontnemery.


$ pip install rflink

Usage of RFLink debug CLI

$ rflink -h
Command line interface for rflink library.

  rflink [-v | -vv] [options]
  rflink [-v | -vv] [options] [--repeat <repeat>] (on | off | allon | alloff) <id>
  rflink (-h | --help)
  rflink --version

  -p --port=<port>   Serial port to connect to [default: /dev/ttyACM0],
                       or TCP port in TCP mode.
  --baud=<baud>      Serial baud rate [default: 57600].
  --host=<host>      TCP mode, connect to host instead of serial port.
  --repeat=<repeat>  How often to repeat a command [default: 1].
  -m=<handling>      How to handle incoming packets [default: event].
  --ignore=<ignore>  List of device ids to ignore, end with * to match wildcard.
  -h --help          Show this screen.
  -v                 Increase verbosity
  --version          Show version.

Intercept and display Rflink packets:

$ rflink
rflink                           Nodo RadioFrequencyLink RFLink Gateway V1.1 R45
newkaku_00000001_4               off
newkaku_00000001_3               on
alectov1_0334_temp               7.4 °C
alectov1_0334_bat                low
alectov1_0334_hum                26 %

Turn a device on or off:

$ rflink on newkaku_0000_1
$ rflink off newkaku_0000_1

Use of TCP mode instead of serial port (eg: ESP8266 serial bridge):

$ rflink --host --port 1234

Debug logging is shown in verbose mode for debugging:

$ rflink -vv
DEBUG:asyncio:Using selector: EpollSelector
DEBUG:rflink.protocol:received data: 20;00;Nodo RadioFrequen
DEBUG:rflink.protocol:received data: cyLink - RFLink Gateway
DEBUG:rflink.protocol:received data: V1.1 - R45;
DEBUG:rflink.protocol:got packet: 20;00;Nodo RadioFrequencyLink - RFLink Gateway V1.1 - R45;
DEBUG:rflink.protocol:decoded packet: {'revision': '45', 'node': 'gateway', 'version': '1.1', 'protocol': 'unknown', 'firmware': 'RFLink Gateway', 'hardware': 'Nodo RadioFrequencyLink'}
DEBUG:rflink.protocol:got event: {'version': '1.1', 'revision': '45', 'firmware': 'RFLink Gateway', 'hardware': 'Nodo RadioFrequencyLink', 'id': 'rflink'}
rflink                           Nodo RadioFrequencyLink RFLink Gateway V1.1 R45
DEBUG:rflink.protocol:received data: 2
DEBUG:rflink.protocol:received data: 0;01;NewKaku;ID=00000001
DEBUG:rflink.protocol:received data: ;SWITCH=4;CMD=OFF;
DEBUG:rflink.protocol:got packet: 20;01;NewKaku;ID=00000001;SWITCH=4;CMD=OFF;
DEBUG:rflink.protocol:decoded packet: {'id': '00000001', 'protocol': 'newkaku', 'command': 'off', 'switch': '4', 'node': 'gateway'}
DEBUG:rflink.protocol:got event: {'id': 'newkaku_00000001_4', 'command': 'off'}
newkaku_00000001_4               off

Usage of RFLinkProxy CLI

Share RFLink connected to serial port /dev/ttyACM1, the proxy will listen on port 2345:

$ rflink --port /dev/ttyACM0 --listenport 2345

Share TCP mode RFLink instead of serial port (eg: ESP8266 serial bridge), the proxy will listen on port 2345:

$ rflink --host --port 1234 --listenport 2345

Debug logging is shown in verbose mode for debugging:

$ rflink -vv --host --port 1234 --listenport 2345
DEBUG:asyncio:Using selector: EpollSelector
INFO:rflinkproxy.__main__:Serving on ('', 2345)
INFO:rflinkproxy.__main__:Initiating Rflink connection
INFO:rflinkproxy.__main__:Connected to Rflink
INFO:rflinkproxy.__main__:Incoming connection from: ::1:63293
DEBUG:rflinkproxy.__main__:got packet: 20;00;Xiron;ID=4001;TEMP=00f1;HUM=38;BAT=LOW;
DEBUG:rflinkproxy.__main__:decoded packet: {'node': 'gateway', 'protocol': 'xiron', 'id': '4001', 'temperature': 24.1, 'temperature_unit': '°C', 'humidity': 38, 'humidity_unit': '%', 'battery': 'low'}
INFO:rflinkproxy.__main__:forwarding packet 20;00;Xiron;ID=4001;TEMP=00f1;HUM=38;BAT=LOW; to clients
DEBUG:rflinkproxy.__main__:got packet: 20;00;NewKaku;ID=013373f6;SWITCH=10;CMD=ON;
DEBUG:rflinkproxy.__main__:decoded packet: {'node': 'gateway', 'protocol': 'newkaku', 'id': '013373f6', 'switch': '10', 'command': 'on'}
INFO:rflinkproxy.__main__:forwarding packet 20;00;NewKaku;ID=013373f6;SWITCH=10;CMD=ON; to clients
DEBUG:rflinkproxy.__main__:got packet: 20;00;Auriol V2;ID=D101;TEMP=006f;BAT=OK;
DEBUG:rflinkproxy.__main__:decoded packet: {'node': 'gateway', 'protocol': 'auriol v2', 'id': 'd101', 'temperature': 11.1, 'temperature_unit': '°C', 'battery': 'ok'}
INFO:rflinkproxy.__main__:forwarding packet 20;00;Auriol V2;ID=D101;TEMP=006f;BAT=OK; to clients