Home Assistant: Garagentor mit Zigbee-Sensor und Shelly steuern

Garagentor smart machen mit Home Assistant, Zigbee-Kontaktsensor und Shelly Wave 1PM. Komplette Anleitung mit YAML-Code, Button-Card und Automatisierungen.

Einleitung: Warum dein Garagentor smart werden sollte#

Kennst du das? Du liegst abends im Bett und fragst dich: „Habe ich das Garagentor wirklich zugemacht?" Oder du stehst an der Haustür und merkst, dass du das Tor offen gelassen hast. Mit einem smarten Garagentor gehören diese Sorgen der Vergangenheit an.

In diesem Tutorial zeige ich dir, wie du dein bestehendes Garagentor mit Home Assistant, einem Zigbee-Kontaktsensor und einem Shelly Wave 1PM zu einem vollwertigen Smart-Home-Gerät machst. Du kannst:

  • Status abfragen: Ist das Tor offen oder geschlossen?
  • Fernsteuerung: Tor per Smartphone, Tablet oder Sprachbefehl öffnen/schließen
  • Automatisierungen: Benachrichtigungen wenn das Tor länger als 10 Minuten offen ist
  • Leistungsmessung: Überwache den Stromverbrauch des Motors

Das Beste: Die Lösung kostet unter 50 Euro und ist in wenigen Stunden umgesetzt – auch ohne Elektrotechnik-Studium.


Das brauchst du: Einkaufsliste#

Hardware#

Komponente Beschreibung Preis (ca.) Kauflink


Aqara Tür-/Fenstersensor Zigbee-Kontaktsensor für den Tor-Status ~15 € Amazon Shelly Wave 1PM Z-Wave Schaltaktor mit Leistungsmessung (schaltet den Motor) ~25 € Amazon/Shelly Shop Abzweigdose Größere Dose (mind. 85x85mm tief) für Shelly + WAGO-Klemmen ~5 € Baumarkt WAGO-Klemmen Sortiment 221er Serie (2-, 3-, 5-Leiter) ~10 € Baumarkt NYM-Kabel Falls zusätzliche Leitungen nötig (5x1,5mm²) variabel Baumarkt

Optional:

  • RC-Snubber (0,1µF / 100Ω) zur Relaiskontakt-Schonung bei induktiven Lasten

Software#

  • Home Assistant (Core, OS oder Supervised)
  • Zigbee-Integration: z.B. Zigbee2MQTT oder ZHA mit Coordinator (ConBee II, Sonoff ZBDongle)
  • Z-Wave-Integration: Z-Wave JS mit USB-Stick (Aeotec Z-Stick, Zooz)

Wie funktioniert das Setup?#

Das Prinzip ist simpel:

  1. Kontaktsensor am Tor: Der Aqara-Sensor meldet „offen" oder „geschlossen"
  2. Shelly Wave 1PM am Motor: Schaltet die vorhandene Taster-Eingabe des Garagentorantriebs
  3. Home Assistant koordiniert: Liest Status, löst Schaltvorgänge aus, automatisiert Aktionen

Wichtig: Wir ändern nichts an der Motor-Steuerung! Wir simulieren nur einen Tasterdruck – genau wie dein vorhandener Wandtaster.


Hardware-Einbau: Schritt für Schritt#

Vorbereitung: Sicherheit geht vor!#

⚠️ Bevor du anfängst:

  1. Sicherung raus und gegen Wiedereinschalten sichern
  2. Spannungsfreiheit prüfen (zweipolig mit Duspol/Multimeter)
  3. Fotos der aktuellen Verkabelung machen (vor dem Lösen!)

Schritt 1: Kontaktsensor montieren#

Der Aqara-Sensor besteht aus zwei Teilen:

  • Hauptsensor (mit Batterie): an der feststehenden Zarge
  • Magnet: am beweglichen Torflügel

Montage:

  1. Befestige den Hauptsensor mit doppelseitigem Klebeband oder kleinen Schrauben an der Garagenwand (oben, wo das Tor im geschlossenen Zustand anliegt)
  2. Klebe den Magneten direkt gegenüber ans Tor (Abstand <2cm im geschlossenen Zustand)
  3. Teste die Funktion: Sensor-LED blinkt beim Öffnen/Schließen

Tipp: Aqara-Sensoren lassen sich über Zigbee2MQTT oder ZHA in Home Assistant einbinden. Im Beispiel heißt die Entity: binary_sensor.0x00158d000a988f21_contact

Schritt 2: Shelly Wave 1PM verkabeln#

Hier wird’s elektrisch – daher die Sicherheit nochmals betonen!

2.1 Zentrale Abzweigdose vorbereiten#

Finde die Dose, in der die Zuleitung (230V) und die Motor-Leitung zusammenkommen. Oft ist das eine bestehende Dose in der Nähe des Antriebs oder der Wandtaster.

Empfehlung: Nutze eine größere, tiefere Abzweigdose (mind. 85mm tief), damit Shelly + WAGO-Klemmen sauber Platz haben.

2.2 WAGO-Sammelklemmen setzen#

Baue folgende Busse auf (= Sammelschienen mit WAGO 221):

  1. PE-Bus (grün/gelb): Alle Schutzleiter zusammen
  2. N-Bus (blau): Alle Neutralleiter zusammen + Pigtail zu Shelly N
  3. L-Bus (braun/schwarz): Dauerphase von Zuleitung + Pigtail zu Shelly L
  4. Shelly O (Ausgang): Geschaltete Phase zum Motor (bzw. Motor-Taster-Eingang)
  5. SW-Return: Falls du einen physischen Taster parallel betreiben willst

Schaltplan-Logik (vereinfacht):

Zuleitung (230V)
├─ PE → PE-Bus (grün/gelb)
├─ N  → N-Bus (blau) → Shelly N
└─ L  → L-Bus (braun) → Shelly L

Shelly O → Motor-Taster-Eingang (simuliert Tasterdruck)
Motor N ← N-Bus

Wichtig: Der Shelly schaltet nur die Phase zum Motor-Steuereingang (wie ein Taster). Der Motor selbst hat weiterhin seine eigene Stromversorgung!

2.3 Shelly-Anschlüsse#

Der Shelly Wave 1PM hat folgende Klemmen:

  • L: Dauerphase (230V)
  • N: Neutralleiter
  • O: Schaltausgang (zu Motor)
  • SW: Eingang für physischen Taster (optional)

Anschluss:

  1. L → von L-Bus (WAGO)
  2. N → von N-Bus (WAGO)
  3. O → zur Motor-Steuerung (Taster-Anschluss, oft als „AUF/ZU/IMPULS" beschriftet)
  4. SW → optionaler physischer Taster (falls du weiterhin einen Wandtaster nutzen willst)

Z-Wave Einbindung:

  • Setze den Shelly in Pairing-Modus (3x kurz an L drücken oder per Button am Gerät)
  • In Home Assistant: Z-Wave JS → „Node hinzufügen"

Nach erfolgreicher Anmeldung erscheint der Shelly mit Entities wie:

  • switch.garagentor
  • sensor.garagentor_shelly_resetter_leistung (Power in Watt)

Home Assistant Integration#

Voraussetzungen#

Stelle sicher, dass folgende Integrationen eingerichtet sind:

  • Zigbee2MQTT oder ZHA (für den Kontaktsensor)
  • Z-Wave JS (für den Shelly Wave 1PM)

Entity-Namen#

Nach der Einbindung hast du folgende Entities (Beispiel):

# Kontaktsensor (Zigbee)
binary_sensor.0x00158d000a988f21_contact
  # off = geschlossen
  # on = offen

# Shelly Wave 1PM (Z-Wave)
switch.garagentor               # Schalter (toggle = Puls senden)
sensor.garagentor_shelly_resetter_leistung  # Leistung in Watt

YAML-Konfiguration: Cover-Entität erstellen#

Home Assistant hat einen Device-Type „Cover" für Garagentore. Wir erstellen eine Template-Cover-Entity, die Status und Steuerung kombiniert.

configuration.yaml#

# Cover für Garagentor (Template)
cover:
  - platform: template
    covers:
      garagentor:
        friendly_name: "Garagentor"
        device_class: garage
        
        # Status: offen/geschlossen basierend auf Kontaktsensor
        value_template: >-
          
            closed
          
            open
                    
        
        # Öffnen/Schließen = Puls senden (Shelly toggle)
        open_cover:
          - service: script.garage_button_pulse
        
        close_cover:
          - service: script.garage_button_pulse
        
        stop_cover:
          - service: script.garage_button_pulse
        
        # Icon basierend auf Status
        icon_template: >-
          
            mdi:garage
          
            mdi:garage-open
                    

Script: Puls-Funktion#

Der Motor braucht nur einen kurzen Impuls (wie beim Taster). Wir nutzen ein Script:

# scripts.yaml
garage_button_pulse:
  alias: "Garagentor Taster-Impuls"
  sequence:
    # 1. State prüfen BEVOR wir schalten (Race Condition vermeiden!)
    - condition: template
      value_template: >
        }        
    
    # 2. Shelly EIN (Motor startet)
    - service: switch.turn_on
      target:
        entity_id: switch.garagentor
    
    # 3. Warten (Puls-Dauer)
    - delay:
        milliseconds: 500
    
    # 4. Shelly AUS (Puls beendet)
    - service: switch.turn_off
      target:
        entity_id: switch.garagentor
  mode: single  # Verhindert parallele Ausführungen

Wichtig: Die Condition prüft die Leistung des Motors. Wenn der Motor bereits läuft (>130W), wird kein neuer Puls gesendet. Das verhindert die Race Condition (dazu mehr unter Troubleshooting).


Dashboard: Button-Card für schicke Steuerung#

Die Standard-Cover-Entity funktioniert, sieht aber langweilig aus. Mit der Button-Card (HACS) wird’s hübsch:

Installation Button-Card#

  1. HACS öffnen
  2. Frontend → „Button Card" suchen und installieren
  3. Home Assistant neu starten

Lovelace-Konfiguration#

type: custom:button-card
entity: cover.garagentor
name: Garagentor
show_state: true
show_icon: true
icon: mdi:garage
tap_action:
  action: toggle
hold_action:
  action: more-info
state:
  - value: open
    color: red
    icon: mdi:garage-open
  - value: closed
    color: green
    icon: mdi:garage
styles:
  card:
    - height: 120px
    - font-size: 16px
  icon:
    - width: 60px

Ergebnis: Ein großer Button, der rot wird wenn das Tor offen ist, grün wenn geschlossen. Tippen = Toggle.


Automatisierungen: Smart Home Intelligence#

1. Benachrichtigung bei offenem Tor#

# automations.yaml
- id: garage_door_open_notification
  alias: "Garagentor offen: Benachrichtigung"
  trigger:
    - platform: state
      entity_id: binary_sensor.0x00158d000a988f21_contact
      to: "on"
      for:
        minutes: 10
  action:
    - service: notify.mobile_app  # oder notify.telegram etc.
      data:
        title: "⚠️ Garagentor offen"
        message: "Das Garagentor ist seit 10 Minuten offen!"

2. Automatisches Schließen nachts#

- id: garage_door_auto_close_night
  alias: "Garagentor automatisch schließen (nachts)"
  trigger:
    - platform: time
      at: "22:00:00"
  condition:
    - condition: state
      entity_id: binary_sensor.0x00158d000a988f21_contact
      state: "on"
  action:
    - service: cover.close_cover
      target:
        entity_id: cover.garagentor
    - service: notify.mobile_app
      data:
        message: "Garagentor wurde automatisch geschlossen (22 Uhr)"

3. Auto-Status tracken (Optional)#

Wenn du wissen willst, ob dein Auto in der Garage steht:

# input_boolean.yaml
input_boolean:
  auto_in_garage:
    name: Auto in Garage
    icon: mdi:car

# Automation: Auto fährt rein
- id: car_enters_garage
  alias: "Auto fährt in Garage"
  trigger:
    - platform: state
      entity_id: binary_sensor.0x00158d000a988f21_contact
      from: "on"
      to: "off"
  condition:
    # Nur zählen wenn Tor länger als 30s offen war (vermeidet Fehlauslösung)
    - condition: template
      value_template: >
        }        
  action:
    - service: input_boolean.turn_on
      target:
        entity_id: input_boolean.auto_in_garage

Troubleshooting: Bekannte Probleme und Lösungen#

Problem 1: Race Condition beim Toggle#

Symptom: Manchmal reagiert das Tor nicht auf den Befehl, oder es stoppt mitten in der Bewegung.

Ursache: Wenn der Motor bereits läuft und du erneut einen Puls sendest, interpretiert der Antrieb das als „STOP"-Befehl.

Lösung: Prüfe die Leistung des Motors vor dem Schalten:

# Im Script (siehe oben)
- condition: template
  value_template: >
    }    

Wenn die Leistung >130W ist, läuft der Motor noch – dann wird kein neuer Puls gesendet.

Problem 2: Shelly schaltet nicht#

Checkliste:

  1. Ist der Shelly in Z-Wave JS angemeldet? (Status prüfen)
  2. Ist die Verkabelung korrekt? (L, N, O geprüft?)
  3. Ist die Last am O-Ausgang korrekt angeschlossen?
  4. Teste manuell: Developer Tools → Services → switch.turn_on → entity_id: switch.garagentor

Problem 3: Kontaktsensor meldet falschen Status#

Mögliche Ursachen:

  • Magnet zu weit vom Sensor entfernt (max. 2cm Abstand!)
  • Batterie leer (CR2032 Knopfzelle)
  • Zigbee-Verbindung instabil (Router/Repeater zu weit weg?)

Lösung:

  1. Positionierung prüfen (Magnet näher ran)
  2. Batterie tauschen
  3. Zigbee-Mesh optimieren (mehr Repeater/Router-Devices)

Problem 4: Motor reagiert zu schnell/langsam#

Anpassung der Puls-Dauer:

Im Script garage_button_pulse kannst du die delay-Zeit anpassen:

- delay:
    milliseconds: 500  # Standard
    # Teste: 300, 700, 1000 je nach Motor

Manche Motoren brauchen längere Impulse (>700ms), andere reagieren schon bei 300ms.


Zusatz-Tipps: Level Up dein Setup#

Leistungsmessung nutzen#

Der Shelly Wave 1PM misst den Stromverbrauch. Nutze das:

# Sensor für „Motor läuft"
binary_sensor:
  - platform: template
    sensors:
      garagentor_motor_running:
        friendly_name: "Garagentor Motor läuft"
        value_template: >
          }          

So kannst du z.B. eine Automatisierung bauen, die dich warnt, wenn der Motor länger als 30 Sekunden läuft (= Problem/Blockierung).

Sprachsteuerung#

Mit Home Assistant + Google Home / Alexa:

# Expose in Google Home/Alexa
homeassistant:
  customize:
    cover.garagentor:
      google_assistant: true
      alexa: true

Sprachbefehl: „Hey Google, öffne das Garagentor"

NFC-Tag am Auto#

Klebe einen NFC-Tag ins Auto (z.B. an die Sonnenblende). Mit der Home Assistant Companion App kannst du das Tor per NFC-Scan öffnen:

  1. NFC-Tag schreiben → Home Assistant Action → cover.open_covercover.garagentor
  2. Smartphone ans Tag halten = Tor öffnet sich


🛒 Verwendete Hardware#

Die in diesem Guide verwendeten Komponenten:


🛒 Verwendete Hardware#

Die in diesem Guide verwendeten Komponenten:

Fazit: Dein smarter Einstieg#

Mit weniger als 50 Euro und einem Nachmittag Arbeit hast du dein Garagentor ins Smart Home integriert. Du kannst:

✅ Status jederzeit abfragen
✅ Per App/Dashboard/Sprache steuern
✅ Automatisierungen nutzen (Benachrichtigungen, Auto-Close)
✅ Stromverbrauch überwachen

Nächste Schritte:

  • Weitere Sensoren einbinden (z.B. Temperatursensor für Garagenklima)
  • Integration mit Alarmanlage (Tor offen = Alarm deaktiviert)
  • Präsenz-Erkennung (Auto in Garage = Anwesenheit)

Viel Spaß beim Nachmachen – und wenn du Fragen hast, schreib mir gerne!

Weiterführende Tutorials auf homelab-guide.de:

Weiterführende Links:


Disclaimer: Arbeiten an elektrischen Anlagen dürfen nur von qualifizierten Personen durchgeführt werden. Bei Unsicherheit einen Elektriker konsultieren. Die Umsetzung erfolgt auf eigene Gefahr.


Einige Links auf dieser Seite sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision — für dich ändert sich am Preis nichts. So unterstützt du diesen Blog und ermöglichst weitere kostenlose Tutorials. Danke! 🙏

[« Vorherige]
Docker Container richtig sichern und wiederherstellen — Backup-Guide