---
title: RaspyRFM
description: Instructions on how to integrate RaspyRFM switches into Home Assistant.
logo: seegelsysteme.png
ha_category:
  - Switch
ha_release: 0.85
ha_iot_class: Assumed State
ha_domain: raspyrfm
---

The `raspyrfm` integration adds support for cheap RC 433 MHz outlets via one of the supported gateways.

Initially, this integration was created to support the Simple Solutions `ConnAir` gateway which has been discontinued. There are custom alternatives that reimplemented the protocol used by the ConnAir though like this [ConnAir emulator](https://github.com/Phunkafizer/RaspyRFM/blob/master/connair.py) which can be used in conjunction with the [RaspyRFM-II](https://www.seegel-systeme.de/produkt/raspyrfm-ii) RC module for a Raspberry Pi.

Other vendors of 433 MHz RC outlets have also created gateways that use a very similar protocol and can also be used with this integration like the Intertechno [ITGW-433 LAN Gateway](https://www.intertechno24.de/LAN-Gateway/Gateway-ITGW-433.html).

## Configuration

```yaml
# Example configuration.yaml entry
switch:
  platform: raspyrfm
  switches:
    - controlunit_manufacturer: Intertechno
      controlunit_model: CMR 1000
      channel_config:  # Note that keys used here vary between control units
        master: A
        slave: 1
```

{% configuration %}
gateway_manufacturer:
  description: Manufacturer of the gateway.
  required: false
  default: Seegel Systeme
  type: string
gateway_model:
  description: Model of the gateway.
  required: false
  default: RaspyRFM
  type: string
host:
  description: Host of the gateway.
  required: false
  default: 127.0.0.1
  type: string
port:
  description: Port of the gateway.
  required: false
  default: Depends on the gateway model.
  type: integer
switches:
  description: List of switches that can be controlled with this gateway.
  required: true
  type: list
  keys:
    name:
      description: Name for the device.
      required: false
      default: Unnamed Device
      type: string
    controlunit_manufacturer:
      description: Manufacturer of the control unit.
      required: true
      type: string
    controlunit_model:
      description: Model of the control unit.
      required: true
      type: string
    channel_config:
      description: Channel configuration of the control unit. The exact keys needed depend on the control unit manufacturer and model.
      required: true
      type: map
{% endconfiguration %}

## Device support

Have a look at the underlying library [raspyrfm-client](https://github.com/markusressel/raspyrfm-client) to check what gateways and control units (outlets) are supported.

## Channel configuration

Depending on the control unit the channel configuration can have varying formats. Have a look at the underlying library [raspyrfm-client](https://github.com/markusressel/raspyrfm-client) to find out about a specific model.

## Switch state

Initially, the state of a switch is unknown. When the switch is turned on or off (via frontend) the state is known and will be shown in the frontend.

<div class='note warning'>

Note that due to the way those cheap RC units work it is **not possible to query their current state**. Therefore the only way to preserve a consistent state within Home Assistant is to only use Home Assistant as the controller.

</div>

## Full example

```yaml
switch:
  platform: raspyrfm
  gateway_manufacturer: Seegel Systeme
  gateway_model: RaspyRFM
  host: 127.0.0.1              # Optional
  port: 49880                  # Optional
  switches:
    - name: My Switch
      controlunit_manufacturer: Intertechno
      controlunit_model: CMR 1000
      channel_config:
        master: A
        slave: 1
    - name: My other Switch
      controlunit_manufacturer: Brennenstuhl
      controlunit_model: RCS 1000 N Comfort
      channel_config:
        1: 1
        2: 1
        3: 1
        4: 1
        5: 1
        CH: A
```
