somfyhome-assistantrollladenrolling-coderts

SOMFY-Rollladen in Home Assistant: Rolling Code erklärt

/Veröffentlicht am/Aktualisiert am

Ich habe sechs Rollläden im Haus, alle von SOMFY, alle per Funk-Handsender. Und ich habe deutlich zu viele Abende damit verbracht, sie in Home Assistant zu bekommen. Die Kurzfassung vorweg, damit du nicht denselben Weg gehen musst: Rolling Code lässt sich nicht klonen. Alles, was du an “Funk-Code-Kopierern” für 15 Euro findest, scheitert daran systematisch. „Universal” ist ein mutiges Wort für ein Kästchen, das genau eine Sorte Code kopieren kann.

Was danach übrig bleibt, sind im Wesentlichen zwei Wege: einer teuer und langweilig, einer bastelig und funktionierend. Der Reihe nach.

Das eigentliche Problem: Rolling Code

Ein alter Garagentoröffner sendet bei jedem Tastendruck exakt dasselbe Bitmuster. Aufnehmen, abspielen, fertig — das ist Fixed Code.

SOMFY RTS macht etwas anderes. Jeder Handsender hat eine Adresse und einen Rolling Code: einen Zähler, der bei jedem Tastendruck hochläuft und zusammen mit einem Prüfwert verschlüsselt mitgesendet wird. Der Motor merkt sich den zuletzt gesehenen Zählerstand und akzeptiert nur, was danach kommt.

Die Konsequenz:

  • Ein aufgezeichnetes Telegramm ist nach einmaliger Nutzung wertlos.
  • Ein Replay mit demselben Zähler wird ignoriert.
  • Du kannst nicht “mithören und nachmachen”. Du musst selbst ein gültiger Sender werden — also einen eigenen Zähler führen und dich am Motor anlernen.

Genau das ist der Punkt, an dem 90 % der Anleitungen im Netz aufhören und du alleine dastehst.

Kurz zur Einordnung: RTS ist nicht io-homecontrol

Zwei SOMFY-Funkwelten, die ständig verwechselt werden:

  • SOMFY RTS — die ältere, weit verbreitete Familie. Funkt auf 433,42 MHz (nicht 433,92 wie fast alles andere — das ist eine häufige Fehlerquelle), einseitige Kommunikation, kein Rückkanal. Der Motor sagt dir nie, wo er steht.
  • SOMFY io-homecontrol — die neuere SOMFY-Familie, bidirektional, verschlüsselt und praktisch geschlossen. Sie liegt im 868-MHz-Band. Einen realistischen Bastelweg gibt es hier nicht: entweder offizielle Bridge oder gar nicht.

Wichtig: Diese 868-MHz-Erwähnung betrifft ausschließlich io-homecontrol. Sie hat nichts mit irgendeinem Garagentor-Handsender oder sonstiger 868er-Hardware zu tun — die ist für RTS-Rollläden komplett irrelevant.

Prüf das zuerst. Steht auf deinem Handsender “RTS”, hast du Optionen. Steht dort io-homecontrol, kannst du dir den Rest dieses Artikels sparen und gleich zur offiziellen Bridge greifen.

Die realistischen Wege im Vergleich

Weg Kosten Aufwand Zuverlässigkeit Für wen
Offizielle Bridge (TaHoma / Connectivity Kit) ca. 100–250 € 1 Abend Sehr hoch, Cloud-abhängig Fast alle
FHEM-Bridge mit CUL (SOMFY-Modul) ca. 60–90 € 1–2 Wochenenden Hoch, lokal Bastler mit Geduld

Weg 1: Die offizielle Bridge — die ehrliche Empfehlung

Ich verdiene an dieser Empfehlung am wenigsten, und sie ist trotzdem für die meisten Leute richtig: Kauf die offizielle Bridge.

Ein TaHoma Switch oder ein Connectivity Kit lernt sich wie ein zusätzlicher Somfy RTS Handsender* an den Motoren an, und Home Assistant hat eine offizielle Overkiz-Integration dafür. Einrichtung: Integration hinzufügen, Somfy-Konto eintragen, Entitäten sind da. Danach hast du cover.*-Entitäten, die einfach funktionieren, auch in einem halben Jahr noch.

Der Preis ist ärgerlich. Der Cloud-Zwang ist ärgerlicher — warum ein Rollladen für „auf” und „zu” ein Konto braucht, kann mir bis heute niemand erklären. Aber wenn deine Rollläden morgens um 7 hochfahren sollen und deine Familie nicht wissen will, was ein Rolling Code ist, ist das die Lösung mit dem besten Ergebnis-pro-Lebenszeit-Verhältnis.

Weg 2: FHEM als Bridge — das mache ich tatsächlich

Bei mir läuft es anders, historisch gewachsen: FHEM steuert die Rollläden über ein CUL-Funkmodul, Home Assistant steuert FHEM. Klingt nach einem Umweg, ist aber der stabilste Eigenbau, den ich hinbekommen habe — und er ist komplett lokal, ohne Cloud.

FHEM hat ein ausgereiftes SOMFY-Modul, das den Rolling Code selbst verwaltet. Genau das ist der springende Punkt: FHEM klont keinen Handsender, es wird einer. Jedes Gerät bekommt eine eigene Adresse und einen eigenen Zähler.

define rollo_office SOMFY D10002
attr rollo_office IODev CUL433_DIRECT
attr rollo_office room Shutters
attr rollo_office model somfyshutter

Das Anlernen läuft am Motor, nicht am Rechner:

  1. Vorhandenen Handsender in den Programmiermodus bringen (Prog-Taste hinten, bis der Rollladen kurz zuckt).
  2. In FHEM einmal set rollo_office prog senden.
  3. Der Motor quittiert mit einem kurzen Ruck. Fertig angelernt.
  4. Danach set rollo_office on / off mehrfach testen.

Zwei Stolperfallen, die mich Stunden gekostet haben:

  • Die Kommandonamen sind nicht open/close. Das SOMFY-Modul kennt on, off, stop, prog, pos und position. In meinem Setup gilt off = auf, on = zu — das fühlt sich verkehrt an, ist aber Konvention.
  • pos funktioniert nicht ohne Fahrzeiten. Zwischenpositionen setzen voraus, dass du dem Modul die Laufzeiten des Motors als Attribute hinterlegst. Ohne das gibt es nur ganz auf oder ganz zu.

Wenn ein Rollladen streikt, ist bei mir fast immer die Anlernung verloren gegangen (leerer Batteriesatz im Handsender, Motor stromlos gewesen). Die Reparatur ist immer dieselbe Schleife: neues Gerät mit frischer Adresse anlegen, prog senden, testen, altes Gerät löschen. Nie versuchen, den kaputten Eintrag zu retten — neue Adresse ist schneller.

Angebunden wird das Ganze an Home Assistant über die FHEM-Weboberfläche als REST-Endpunkt:

# configuration.yaml
rest_command:
  fhem_cmd:
    url: "http://192.168.1.50:8086/fhem?cmd={{ cmd | urlencode }}&XHR=1"
    method: GET

cover:
  - platform: template
    covers:
      rollo_office:
        friendly_name: "Rollladen Büro"
        open_cover:
          service: rest_command.fhem_cmd
          data:
            cmd: "set rollo_office off"
        close_cover:
          service: rest_command.fhem_cmd
          data:
            cmd: "set rollo_office on"
        stop_cover:
          service: rest_command.fhem_cmd
          data:
            cmd: "set rollo_office stop"

Damit hast du eine ganz normale cover-Entität, die sich in Automationen, Dashboards und Sprachsteuerung genauso verhält wie jede andere:

curl -X POST \
  -H "Authorization: Bearer $HA_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"entity_id": "cover.rollo_office"}' \
  http://192.168.1.50:8123/api/services/cover/close_cover

Ein ehrlicher Nachteil: Da RTS keinen Rückkanal hat, ist der Zustand in Home Assistant immer nur geraten. Wenn jemand den Handsender an der Wand benutzt, weiß HA davon nichts.

Variante: eigener 433,42-MHz-Transceiver

Wenn du kein FHEM aufsetzen willst, bleibt als dritte Möglichkeit ein eigenes Funkmodul, das du selbst auf 433,42 MHz stimmst — typischerweise ein CC1101 an einem ESP32 oder Raspberry Pi. Entscheidend ist auch hier nicht das Mitlesen, sondern dass die Firmware einen eigenen Rolling-Code-Zähler führt und sich regulär am Motor anlernt. Alles andere ist Zeitverschwendung. Der Aufwand liegt grob auf FHEM-Niveau, die Ergebnisse sind erfahrungsgemäß etwas wackliger — vor allem, weil die Frequenz exakt stimmen muss.

Was definitiv nicht funktioniert

  • Universal-Klon-Handsender vom Marktplatz. Die kopieren Fixed Code. Bei RTS lernen sie scheinbar an, blinken zufrieden und tun dann nichts. Das Geld ist weg.
  • Code-Grabber und Replay. Der Zähler ist nach dem ersten Senden verbrannt. Ein zweiter Versuch mit demselben Telegramm wird vom Motor verworfen.
  • 433,92-MHz-Hardware für SOMFY RTS. Die 0,5 MHz Differenz zu 433,42 kosten dich so viel Empfangsqualität, dass du glaubst, das Protokoll sei falsch. Achte beim Kauf explizit auf 433,42 MHz — oder nimm ein CC1101, bei dem du die Frequenz in Software setzt.
  • Der pragmatische Ausweg, den ich nicht verachte: ein SwitchBot Bot Tastendrücker* auf dem vorhandenen Handsender. Hässlich, aber in zehn Minuten fertig und zu 100 % rolling-code-kompatibel — weil der echte Sender sendet.

Wenn dich der Gedanke reizt, statt eines Tastendrückers gleich den vorhandenen Handsender selbst anzuzapfen: Das ist tatsächlich der sauberste Weg, aber eher bei Garagentoren als bei Rollläden. Wie man einen originalen Handsender per Transistor oder Optokoppler an GPIO-Kontakte legt und damit ein Tor schaltet, behandle ich in einem eigenen Artikel — hier würde es den Rahmen sprengen.

Mein Fazit

Wenn du einfach nur willst, dass deine Rollläden mit dem Sonnenstand fahren: offizielle Bridge. Ja, sie kostet Geld, ja, sie will ein Konto. Sie funktioniert.

Wenn dir lokale Kontrolle wichtiger ist als ein Wochenende: FHEM mit CUL und REST-Anbindung an Home Assistant. Das läuft bei mir seit Monaten stabil, und das SOMFY-Modul erspart dir die gesamte Rolling-Code-Mathematik.

Und wenn du unbedingt dein eigenes 433,42-MHz-Modul bauen willst: mach das — aber bau es neben deinem funktionierenden Setup auf, nicht anstelle davon.

Ich bin René, CTO aus Pasching bei Linz. Wenn dein Problem größer ist als ein Rollladen — Streaming, Cloud, lokale LLMs, Technikführung — dann steht hier, was ich beruflich mache.