home-assistantsomfyrollladensafetycats

Rollladen-Sicherung fürs Catio: Katzen nie aussperren

/Veröffentlicht am

Wir haben zwei Katzen, Alfie und Shaniqua, und seit diesem Jahr ein Catio — ein vergittertes Außengehege auf der Terrasse, in das die beiden durch die Esszimmertür kommen. Damit sie nicht über das Gehege hinweg ins Freie springen, steht der Rollladen vor dieser Tür tagsüber halb geschlossen: unten offen genug für eine Katze, oben zu.

Und dann kam der Abend, an dem der Rollladen ganz zugefahren ist, während die Tür offen und beide Katzen draußen im Catio waren. Niemand hatte etwas gedrückt. Es war die ganz normale 20:00-Uhr-Automation, die alle Wohnzimmer-Rollläden schließt — die lief seit Monaten, und sie wusste nichts von Katzen. Alfie und Shaniqua saßen ausgesperrt im Gehege, bis es jemandem aufgefallen ist.

Nichts passiert, außer zwei beleidigten Katzen. Aber es hätte auch anders ausgehen können: Ein Rollladen, der auf eine Katze im Türrahmen runterfährt, ist kein Spaß. Also: Jetzt ist aber Schluss mit lustig. Es gibt eine Sicherung, die das grundsätzlich verhindert. Nicht in der Zeitschaltung. Darunter.

Esszimmertür mit halb geschlossenem Rollladen, dahinter das vergitterte Catio auf der Terrasse
Die Ausgangslage: Rollladen halb unten, Tür offen, dahinter das Catio. Genau so darf der Rollladen nie ganz zufahren.

Warum nicht einfach die Zeitschaltung anpassen

Mein erster Reflex war, eine Bedingung in die 20:00-Uhr-Automation zu schreiben: „nur schließen, wenn die Catio-Tür zu ist”. Das hätte den einen Fall gelöst — und alle anderen offen gelassen.

Denn dieser Rollladen lässt sich von überall schließen: vom Dashboard, per Sprachbefehl, über HomeKit, über ein Skript, das alle Rollläden zufährt, und über den SOMFY-Handsender direkt. Jeden dieser Wege einzeln abzusichern heißt, jeden neuen Weg wieder zu vergessen.

Eine Sicherung gehört nicht in die Auslöser. Sie gehört hinter alle Auslöser: Egal wer den Rollladen schließt — wenn die Tür offen ist, geht er wieder auf. Das ist die Logik einer Lichtschranke am Garagentor, nur in Software.

Die Beteiligten

Zwei Entitäten, beide gibt es schon lange in meinem Home Assistant:

  • cover.rollo_lr_2 — „Shutter 2 (Catio)“, ein SOMFY-RTS-Rollladen, der über FHEM und einen CUL angesteuert wird.
  • binary_sensor.dining_door_contact_1 — der Türkontakt der Esszimmertür. Das ist kein Zigbee-Sensor, sondern der Magnetkontakt meiner Ring-Alarmanlage (Z-Wave), der ohnehin an der Tür hängt. device_class: door, also bedeutet on offen.

Der zweite Punkt ist mir wichtig: Ich habe keinen einzigen Sensor für diese Sicherung gekauft. Die Tür war schon überwacht, nur aus einem anderen Grund.

Ring-Alarm-Türkontakt am Rahmen der Esszimmertür
Der Türkontakt der Ring-Alarmanlage am Rahmen — in Home Assistant `binary_sensor.dining_door_contact_1`. Er hing schon da, bevor es das Catio gab.

Das Problem mit RTS: Es gibt kein „closing”

Hier kommt die Eigenheit, die die Automation formt. SOMFY RTS ist Einweg-Funk. Der Motor meldet nie zurück, wo er gerade steht. In Home Assistant hat der Cover deshalb assumed_state: true und kennt nur zwei Zustände: open und closed. Es gibt keinen closing-Zustand, den man abfangen könnte, weil HA den Befehl absetzt und den Zustand einfach annimmt.

Das heißt: Ich kann das Schließen nicht verhindern. Ich kann es nur rückgängig machen, und zwar in dem Moment, in dem HA glaubt, der Rollladen sei zu — was praktisch der Moment ist, in dem der Befehl rausgeht, nicht der Moment, in dem der Rollladen unten ankommt.

Das ist am Ende gut genug: Der Rollladen braucht rund 20 Sekunden bis ganz unten. Stop und Auf kommen innerhalb von ein, zwei Sekunden nach dem Schließbefehl. In der Praxis fährt er ein Stück runter, überlegt es sich und fährt wieder hoch.

Die Automation

So läuft sie bei mir, unverändert:

alias: "Catio safety - reverse Shutter 2 close while catio door is open"
description: >-
  Hard safety interlock. Shutter 2 (Catio) must never end up closed while
  the catio door is open - a cat can be caught by the shutter or locked
  outside. Catches closes from ANY source (dashboard, scripts, schedules,
  voice, HomeKit), stops and re-opens the shutter, then notifies.
triggers:
  - trigger: state
    entity_id: cover.rollo_lr_2
    to: "closed"
    # assumed_state: true — kein 'closing', springt direkt open → closed.
conditions:
  - condition: state
    entity_id: binary_sensor.dining_door_contact_1
    state: "on"
    # device_class door: 'on' = offen. Tür offen → Schließen ist unsicher.
actions:
  - action: cover.stop_cover
    target:
      entity_id: cover.rollo_lr_2
    # Erst anhalten, dann Richtung wechseln.
  - action: cover.open_cover
    target:
      entity_id: cover.rollo_lr_2
  - action: notify.send_message
    target:
      entity_id: notify.renes_iphone_2
    data:
      title: "Catio shutter blocked"
      message: >-
        Shutter 2 (Catio) started closing while the catio door was open.
        Stopped it and re-opened the shutter.
mode: restart

Vier Entscheidungen, die nicht zufällig sind:

Trigger auf closed, nicht auf den Befehl. Weil es aus dem Grund oben nichts anderes gibt. Wer einen Rollladen mit Rückkanal hat (io-homecontrol, Shelly, Zigbee-Motor), sollte stattdessen auf closing reagieren — dann stoppt der Rollladen wirklich mitten in der Fahrt.

Erst stop_cover, dann open_cover. Ein SOMFY-Motor, der gerade runterfährt und ohne Stopp ein Auf bekommt, reagiert nicht immer sauber. Stopp, dann Richtungswechsel, ist das, was der Handsender auch tut.

mode: restart. Wenn ein Skript den Rollladen zweimal kurz hintereinander schließt, soll die Sicherung nicht die erste Reaktion zu Ende laufen lassen und die zweite ignorieren. Sie fängt jedes Mal von vorne an.

Die Push-Nachricht. Nicht als Alarm, sondern als Hinweis, dass irgendwo eine Automation oder eine Person versucht hat, den Rollladen zu schließen, während die Katzen draußen waren. Das ist die Information, die ich am Abend des Vorfalls gebraucht hätte.

Was die Sicherung nicht kann

Ehrlich, damit niemand sie überschätzt:

  • Sie verhindert nichts, sie korrigiert. Der Rollladen fährt ein Stück. Wenn genau in dieser Sekunde eine Katze im Türrahmen sitzt, hat sie den Rollladen kurz auf dem Rücken. Mit RTS gibt es das nicht besser.
  • Sie hängt am Türkontakt. Ist der Sensor unavailable (Alarmanlage offline, Batterie leer), wertet HA die Bedingung als nicht offen und die Sicherung greift nicht. Ich würde die Bedingung heute eher umdrehen — „nur schließen lassen, wenn die Tür sicher zu ist” — und bin noch nicht dazu gekommen.
  • Sie weiß nicht, ob eine Katze draußen ist. Nur, ob die Tür offen ist. Tür zu, Katzen draußen: Der Rollladen darf schließen, und die Katzen sitzen trotzdem im Catio. Dafür bräuchte es Präsenz im Gehege, und so weit bin ich nicht.
  • Sie fährt den Rollladen ganz auf, nicht auf die halbe Position. Das ist ein bewusster Kompromiss: RTS kennt keine Positionen, nur die angelernte „my”-Zwischenposition, und die per Automation zu treffen ist unzuverlässig. Ganz auf ist sicher; halb zu stelle ich per Hand wieder ein.
Alfie, eine cremefarbene Katze mit dunkler Maske, auf dem Kratzbaum
Alfie.
Shaniqua, eine schwarze Langhaarkatze, sitzt auf dem Fliesenboden
Shaniqua. Beide haben den Abend im Catio überstanden, aber die Meinung über die Automation war eindeutig.

Wo ich gelandet bin

Die Automation hat seit dem Einrichten genau einmal ausgelöst, am 20. August. Die 20:00-Uhr-Automation läuft unverändert weiter — sie muss nichts von Katzen wissen, weil die Schicht darunter das übernimmt.

Das Muster nehme ich seitdem für alles, was Leben oder Sachen einklemmen kann: Nicht die Auslöser absichern, sondern eine Automation, die auf den Zustand reagiert und ihn zurückdreht, wenn er nicht erlaubt ist. Die Absicherung beim Sprühnebel-Ventil funktioniert nach demselben Prinzip. Es ist nicht elegant. Es ist die Automation, die noch läuft, wenn alle anderen vergessen wurden.

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.