In diesem umfassenden Tutorial werden die genaue Verkabelung, die Zigbee2MQTT-Konfiguration, die Home Assistant-Integration und Alexa erläutert. Ein einziger Dashboard-Button + echte Statusrückmeldung + Sprachbefehl „Alexa öffnet das Portal“.
Meine drei Ziele Domotisierung Portal
Ich habe drei spezifische Ziele festgelegt, um mein Came-Schwenktor mit einer ZL180-Steuerkarte zu automatisieren.
- Eine einzige Taste auf dem Home Assistant Dashboard betätigt das Portal über eine präzise Impulsfolge: Trockenkontakt ON für 500 ms, Pause mindestens 500 ms, dann AUS.
- Reale Statusrückmeldung, die anzeigt, ob das Portal jederzeit geöffnet oder geschlossen ist, mithilfe eines Positionssensors.
- Einfache Sprachsteuerung mit Alexa: "Alexa, öffne das Portal" oder "Alexa, schließe das Portal".
Dieses Tutorial ersetzt das alte Modul QS-Zigbee-S10-C03, das häufige Unterbrechungen des Zigbee-Netzes verursachte. Überholter Artikel: Domotisierung QS-Zigbee-S10-C03.
Meine Steuerkarte Came ZL180
Mein Schwingtor funktioniert mit der elektronischen Came ZL180-Karte, die alle Bewegungen, Sicherheiten und Endpunkte des Rennens verwaltet.
Vollständiges amtliches technisches Merkblatt: PDF ZL180 herunterladen.

ZL180 Kartensteuerterminals
Alle Hausautomationsanschlüsse werden an die Klemmleisten unten rechts auf der ZL180-Karte angeschlossen. Diese 10 Klemmen ermöglichen die Steuerung des Portals und das Lesen der Zustände.

Steuerung Tor öffnen/schließen
Die ZL180-Karte steuert das Öffnen/Schließen durch einen trockenen (spannungsfreien) Kontakt zwischen den Anschlüssen 2 (COM) und 7 (IMP). Ein trockener Kontakt bedeutet einfach, den Stromkreis zu schließen, ohne Spannung aufzubringen.
- Schließen Sie den Kontakt Klemmen 2-7 für genau 500 Millisekunden (0,5 Sekunden).
- Vor der Neubestellung eine Pause von mindestens 500 ms einlegen.
- Kontakt (OFF) öffnen, um den Impuls zu beenden.
Diese Impulsfolge ist obligatorisch und wird auf Seite 8 der Packungsbeilage ZL180 beschrieben.

Rückkehr in den offenen/geschlossenen Zustand Portal
Die ZL180-Karte bietet keinen direkten trockenen Kontakt für den Zustand des Portals. Es liefert ein 24V-Signal zwischen den Anschlüssen 5 (COM) und 10 (OUV), wenn das Tor vollständig geöffnet ist.

Um dieses 0/24V-Signal in einen trockenen Kontakt umzuwandeln, der mit der Hausautomation kompatibel ist, installiere ich ein 24V-Relais IEC255 im Came-Gehäuse. Das Relais isoliert die Schaltkreise elektrisch und erzeugt einen einfachen offenen/geschlossenen Trockenkontakt.

Hier ist mein Relais IEC255, das auf DIN-Halterung im Came-Gehäuse montiert ist:



Wichtige DIP-Switch-Konfiguration
Häufiges Problem: Einige Impulse werden nicht berücksichtigt. Die Ursache ist oft die Stop-Funktion, die auf dem DIP-Switch 2 der ZL180-Karte aktiviert ist. Diese Funktion stoppt das Portal bei jedem empfangenen Impuls.
Lösung: Stellen Sie das DIP2 unbedingt auf OFF, um Teilbefehle zu ermöglichen (normales Öffnen/Schließen).

Meine Wahl Modul Zigbee MOES
Ich habe mehrere Module getestet, mich aber aufgrund der Zigbee-Stabilität, des erschwinglichen Preises und der umfassenden Portalfunktionen für das MOES ZM-102-M entschieden.
- IOMZB-110 FRIENT : Ausgezeichnet, aber 60 €.
- Smart Switch ZG-005-RF : 4 Ausgänge für 18 €, aber kein Eintritt.
- NODON SIN-4-1-20 : Kein trockener Kontakteingang.
- MOES ZM-102-M Ausgewählt für 17,90€.
- QS-Zigbee-S10-C03 : Häufige Abschaltungen, abgebrochen.
Die MOES ZM-102-M-MS umfasst 230V-Stromversorgung, Impulsausgang, Trockenkontakteingang und Magnetsensor. Version ZM-102-M = Modul allein ohne Sensor.

Wo kann ich diese Ausrüstung kaufen?
Hier ist der Link zu der Seite, die dem ZM-102-M. Ich habe auf die Verkäufer und die Preise verwiesen.
Präzise Spleißen MOES ZM-102-M
- L und N : 230V-Stromversorgung Phase + Neutral.
- S4-S5 : Trockenkontakteingang (an das Relais IEC255 für Portalzustand angeschlossen).
- S1-S2 : Impulsausgang zu Anschlüssen 2-7 Karte ZL180.


Vollständiges Portal-Verkabelungsschema

Ich verbinde das Zigbee2MQTT-Modul
Einschalten = automatischer Kopplungsmodus (blaue LED blinkt 10 min). Kopplungstaste hinter dem Modul. Vorübergehend in der Nähe des Zigbee-Koordinators platzieren, wenn die Entfernung groß ist.

In Zigbee2MQTT im Permit-Join-Modus erscheint das Modul als _TZE200_fabuwqzo_ts0601. Ich nenne es "Came Portal".


Ausgewiesene Funktionen MOES
Das Modul beschreibt diese wesentlichen Eigenschaften:
- Trigger (binary): Sendet Impuls S1-S2. true=öffnen, false=schließen. Intelligenz: sendet nicht, wenn der Zustand bereits korrekt ist.
- Garage_door_contact (binary): Status S4-S5. true=geschlossen, false=offen.
- countdown (0-43200s): Erzwungener Impuls nach Verzögerung.
- run_time (-1 bis 120 s): Timeout Bewegung. Alarm, wenn überholt.
- status : Normal / RunTimeAlarm / OpenTimeAlarm.

Automatische Integration Home Assistant
Entitäten werden nach einem Neustart oder einer Aktualisierung von Zigbee2MQTT automatisch im Home Assistant angezeigt.

- binary_sensor.portal_came_garage_door_contact : Ist-Zustand (off=geschlossen, on=offen).
- switch.portal_came_trigger : Impulsknopf (ON 500ms dann auto-OFF).
- sensor.portal_came_status : Modulstatus.
Mein Cover-Portal-Setup
Ich erstelle eine einheitliche Cover-Entität, die den Ist-Zustand (binary_sensor) und den Befehl (switch) kombiniert. Ein Cover Home Assistant stellt jedes Arbeitselement dar: Tor, Tür, Rollladen.
In configuration.yaml unter template → cover hinzufügen:
- cover: - name: Einheitliches _id-Portal: cover.portal device_class: Gate Icon: > {% if is_state('binary_sensor.portail_came_garage_door_contact', 'off') %} mdi:gate {% else %} mdi:gate-open {% endif %} state: > {% if is_state('binary_sensor.portail_came_garage_door_contact', 'off') %} closed {% else %} open {% endif %} open_cover: - Dienststelle: script.actionne_le_portal_toggle close_cover: - Dienststelle: script.actionne_le_portal_toggle

Meine Dashboard-Schaltflächen Portal

Einfache Button-Card-Version

Typ: custom:button-card show_name: false tap_action: Maßnahme: toggle entity: cover.portal state: - value: closed color: gray - value: Open Color: red
Erweiterte Version picture-elements


- Typ: custom:button-card color_type: Card Entity: cover.portal show_name: false tap_action: Maßnahme: toggle state: - value: Open Color: "#4f010a" Icon: mdi:gate-open Stile: Card: - Animation: blink 2s ease infinite - operator default color: "#49556c" Icon: mdi:gate Stile: Card: - height: 110px - width: 110px Stil: top: 93% left: 5%
Alexa Sprachsteuerung Portal
Setzen Sie die Entität cover.portal zur Sprachsteuerung an Alexa aus.
- Einstellungen → Sprachassistenten → "x auszusetzende Entität(en)".
- Auswählen
cover.portal. - Bestellungen: "Alexa, öffne das Portal", "Alexa, schließ das Portal".



Bonus visuelle Impulse

Sofortige visuelle Bestätigung der Impulssendung durch ein blinkendes Symbol. Erstellen Sie input_boolean.puls_portal über Einstellungen → Geräte & Dienste → Helpers → Schalter.

Typ: custom:button-card entity: input_boolean.puls_portal name: Impuls Portal show_state: false show_name: False Icon: mdi:access-point styles: Icon: - color: | [[ if (entity.state === 'on') return '#39FF14'; return 'transparent'; ]]] - Animation: | [[ if (entity.state === 'on') return 'blink 0.4s linear infinite'; return 'none'; ]]] card: - width: 150px - height: 150px - border-radius: 12px - background-color: transparent - box-shadow: none
Script betreibt_le_portal_toggle (in scripts.yaml zu erstellen):
Sequenz: - Dienststelle: switch.turn_on target: entity_id: switch.portal_came_trigger - service: input_boolean.turn_on target: entity_id: input_boolean.puls_portal - delay: Zweite: 1 - Dienstleistung: input_boolean.turn_off target: entity_id: input_boolean.puls_portal alias: Betreibt das Portal
Bonus Rustine Eröffnung
Ich habe aus einem Grund, der mir noch nicht bekannt ist, festgestellt, dass etwa einmal in zwanzig Fällen der Befehl zum Öffnen des Portals korrekt ausgelöst wird: Der Impuls wird an das Modul gesendet, es erscheint kein Fehler…, aber es passiert nichts.
Alles deutet darauf hin, dass sich das Modul zum Zeitpunkt der Bestellung im Bereitschaftszustand befindet und einfach nicht reagiert.
Wenn ich jedoch innerhalb von Sekunden einen zweiten Impuls zurückgebe, öffnet sich das Portal sofort.
Normalerweise bin ich eher allergisch gegen ‚Rustine‘. Ich liebe es, das Problem an der Quelle zu verstehen und zu beheben. In diesem Fall erschien mir jedoch die pragmatischste Lösung, einen Aufholmechanismus hinzuzufügen.
Die Idee ist einfach:
Wird das Portal nach einem Öffnungsbefehl nach einigen Sekunden immer noch als geschlossen erkannt, gibt das Skript automatisch einen zweiten Impuls zurück.
Im schlimmsten Fall verlieren wir zwei Sekunden.
Bestenfalls wird ein für den Nutzer unsichtbares Risiko korrigiert.
Daher habe ich folgendes Skript erstellt:
Sequenz: - alias: Speichert den Zustand des Portals vor Impulsvariablen: etat_portal_avant: "{{ states('binary_sensor.portail_came_garage_door_contact') }}" - alias: Sendet den Impuls an das Aktionsportal: switch.toggle target: entity_id: switch.portal_came_trigger data: {} - parallel: - alias: Lässt das Senden von Impulsen auf Dashboard sequence blinken: - Aktion: input_boolean.turn_on target: entity_id: input_boolean.puls_portal data: {} - delay: Zweite: 1 - Aktion: input_boolean.turn_off target: entity_id: input_boolean.puls_portal data: {} - alias: Rustine nur, wenn das Portal geschlossen war Sequenz: - if: - Bedingung: template value_template: "{{ etat_portal_avant == 'off' }}" then: - alias: Warte maximal 2s, bis das Portal geöffnet wird wait_template: >- {{ is_state('binary_sensor.portal_came_garage_door_contact', 'on') }} timeout: Zweite: 2 weiter_on_timeout: true - if: - Bedingung: template value_template: "{{ not wait.completed }}" then: - alias: Wiederholen Sie den Impuls, wenn das Portal nicht reagiert Aktion: switch.toggle target: entity_id: switch.portal_came_trigger data: {} alias: Betreibt das Beschreibungsportal: ""
Mit diesem Skript wird ein einfacher Überprüfungsmechanismus eingerichtet, nachdem ein Impuls an das Portal gesendet wurde, mit einer Aufhollogik im Falle eines Problems.
Der erste Schritt besteht darin, sich den Status des Portals vor jeder Aktion zu merken. Es wird aufgezeichnet, ob es zum Zeitpunkt des Absendens der Bestellung geöffnet oder geschlossen ist (binary_sensor.portal_came_garage_door_contact). Diese Information ist wichtig, da sie anschließend Aufschluss darüber gibt, ob die Backup-Logik aktiviert werden soll oder nicht.
Sobald dieser Status gespeichert ist, sendet das Skript den Impuls über das Modul (switch.portal_came_trigger) genau wie im normalen Betrieb an das Portal. Parallel dazu wird eine kleine visuelle Anzeige für eine Sekunde aktiviert (input_boolean.puls_portal), nur um die Impulsübertragung auf das Armaturenbrett zu materialisieren.
Dann kommt „Rustin“ ins Spiel, aber nur in einem ganz bestimmten Fall: wenn das Portal zum Zeitpunkt der Bestellung geschlossen war. Diese Vorsichtsmaßnahme vermeidet unerwünschte Wirkungen, insbesondere wenn das Portal geschlossen wird, da es in diesem Fall mehrere Sekunden dauern kann, bis es reagiert, und es ist vor allem nicht notwendig, einen Impuls zurückzugeben.
Wenn das Portal geschlossen war, wartet das Skript bis zu zwei Sekunden, um zu sehen, ob es in den Status „offen“ wechselt (binary_sensor.portal_came_garage_door_contact). Diese Erwartung ist aktiv: Tritt die Änderung schnell ein, erkennt das Skript sie sofort und hört dort auf.
Geschieht jedoch in diesen zwei Sekunden nichts, wird davon ausgegangen, dass der Anfangsimpuls nicht berücksichtigt wurde, wahrscheinlich aufgrund eines Moduls, das sich noch im Standby-Modus befindet. Das Skript sendet dann automatisch einen zweiten Impuls über das Modul (switch.portal_came_trigger).
Am Ende fungiert dieser Mechanismus als Sicherheitsnetz. In den meisten Fällen ist es nutzlos und bleibt unsichtbar. Aber in den seltenen Situationen, in denen das Portal nicht reagiert, kann es das Problem ohne manuelles Eingreifen mit einer einfachen Verzögerung von zwei Sekunden beheben.
Vollständige technische Dokumentation
Forum Austausch Feedback Erfahrung
Fragen, Rückmeldungen, ergänzende Schemata: Diskussionsforum HACF.
