104 lines
4.2 KiB
Markdown
104 lines
4.2 KiB
Markdown
---
|
|
layout: page
|
|
title: "Rflink"
|
|
description: "Instructions how to integrate Rflink gateway into Home Assistant."
|
|
date: 2016-01-04
|
|
sidebar: true
|
|
comments: false
|
|
sharing: true
|
|
footer: true
|
|
logo: rflink.png
|
|
ha_category: Hub
|
|
ha_release: 0.38
|
|
---
|
|
|
|
The `rflink` component support devices that use [Rflink gateway firmware](http://www.nemcon.nl/blog2/), for example the [Nodo Rflink Gateway](https://www.nodo-shop.nl/nl/21-rflink-gateway). Rflink gateway is an Arduino firmware that allows communication with 433 Mhz devices using cheap hardware (Arduino + 433 Mhz tranceiver).
|
|
|
|
The 433 Mhz spectrum is used by many manufacturers mostly using their own protocol/standard and includes devices like: light switches, blinds, weather stations, alarms and various other sensors.
|
|
|
|
A complete list of devices supported by Rflink can be found [here](http://www.nemcon.nl/blog2/devlist)
|
|
|
|
This component is tested with the following hardware/software:
|
|
|
|
- Nodo Rflink Gateway V1.4/Rflink R44
|
|
|
|
To enable Rflink in your installation, add the following to your `configuration.yaml` file:
|
|
|
|
```yaml
|
|
# Example configuration.yaml entry
|
|
rflink:
|
|
port: /dev/serial/by-id/usb-id01234
|
|
```
|
|
|
|
Configuration variables:
|
|
|
|
- **port** (*Required*): The path to Rflink usb/serial device or TCP port in TCP mode.
|
|
- **host** (*Optional*): Switches to TCP mode, connects to host instead of to USB/serial.
|
|
- **wait_for_ack** (*Optional*): Wait for Rflink to ackowledge commands sent before sending new command (slower but more reliable). Defaults to `True`
|
|
- **ignore_devices** (*Optional*): List of devices id's to ignore. Supports wildcards (*) at the end.
|
|
- **reconnect_interval** (*Optional*): Time in seconds between reconnect attempts.
|
|
|
|
Complete example:
|
|
|
|
```yaml
|
|
# Example configuration.yaml entry
|
|
rflink:
|
|
port: /dev/serial/by-id/usb-id01234
|
|
wait_for_ack: False
|
|
ignore_devices:
|
|
- newkaku_000001_01
|
|
- digitech_*
|
|
```
|
|
|
|
### {% linkable_title TCP mode %}
|
|
|
|
TCP mode allows connect to a Rflink device over TCP/IP network. This is for example useful if placing the Rflink device next to the HA server is not optimal or desired (eg: bad reception).
|
|
|
|
To expose the usb/serial interface over TCP on a different host (Linux) the following command can be used:
|
|
|
|
```bash
|
|
$ socat /dev/ttyACM0,b57600 TCP-LISTEN:1234,reuseaddr
|
|
```
|
|
|
|
Other methods of exposing the serial interface over TCP are possible (eg: ESP8266 or using Arduino Wifi shield). Basically the serial stream should be directly mapped to the TCP stream.
|
|
|
|
```yaml
|
|
# Example configuration.yaml entry
|
|
rflink:
|
|
host: 192.168.0.10
|
|
port: 1234
|
|
```
|
|
|
|
### {% linkable_title Ignoring devices %}
|
|
|
|
Rflink platform can be configured to completely ignore a device on a platform level. This is useful when you have neighbors which also use 433 Mhz technology.
|
|
|
|
For example:
|
|
|
|
```yaml
|
|
# Example configuration.yaml entry
|
|
rflink:
|
|
port: /dev/serial/by-id/usb-id01234
|
|
wait_for_ack: False
|
|
ignore_devices:
|
|
- newkaku_000001_01
|
|
- digitech_*
|
|
- kaku_1_*
|
|
```
|
|
|
|
This configuration will ignore the button `1` of the `newkaku` device with ID `000001`, all devices of the `digitech` protocol and all switches of the `kaku` protocol device with codewheel ID `1`.
|
|
|
|
Wildcards only work at the end of the ID, not in the middle of front!
|
|
|
|
### {% linkable_title Device support %}
|
|
|
|
Even though a lot of devices are supported by Rflink, not all have been tested/implemented. If you have a device supported by Rflink but not by this component please consider testing and adding support yourself or [create an issue](https://github.com/home-assistant/home-assistant/issues/new) and mention `@aequitas` in the description.
|
|
|
|
|
|
### {% linkable_title Technical overview %}
|
|
|
|
- The`rflink` Python module a asyncio transport/protocol is setup that fires an callback for every (valid/supported) packet received by the Rflink gateway.
|
|
- This component uses this callback to distribute 'rflink packet events' over the HASS bus which can be subscribed to by entities/platform implementations.
|
|
- The platform implementions take care of creating new devices (if enabled) for unsees incoming packet id's.
|
|
- Device entities take care of matching to the packet ID, interpreting and performing actions based on the packet contents. Common entitiy logic is maintained in this main component.
|
|
|