Hallo zusammen,
Vielleicht ist die Lösung auch für andere interessant, die eine klassische Taster-/Stromstoßschaltung smart machen möchten.
Ziel
Bei mir wird das Flurlicht über ein Merlin Gerin Multi9 TL Stromstoßrelais und mehrere Wandtaster geschaltet.
Meine Anforderungen waren:
- vorhandene Wandtaster bleiben vollständig funktionsfähig
- das Stromstoßrelais bleibt die eigentliche Schaltinstanz
- Home Assistant kann das Licht ein- und ausschalten
- Home Assistant kennt auch nach Betätigung eines Wandtasters den tatsächlichen Lampenzustand
- bei Ausfall von Home Assistant oder Zigbee bleibt die normale Lichtsteuerung weiterhin erhalten
- in Home Assistant gibt es am Ende nur eine normale
light-Entität
Dafür habe ich ein 2-Kanal-Zigbee-Relais verwendet, das über MQTT in Home Assistant eingebunden ist.
Wichtig: Hier wird mit 230 V gearbeitet. Die folgende Beschreibung dokumentiert meine konkret gemessene und getestete Installation. Die Klemmenbelegung eines vorhandenen Stromstoßrelais sollte nicht einfach übernommen, sondern an der eigenen Installation geprüft werden.
Verwendete Komponenten
Vorhanden ist ein Merlin Gerin Multi9 TL Stromstoßrelais:
Auf der Front ist auch das interne Schaltbild mit den Anschlüssen A1, A2, 1 und 2 zu erkennen.
Als Zigbee-Modul verwende ich ein QS-Zigbee-SEC02 Mini 2 Gang Zigbee Switch Module:
Für diese Anwendung sind insbesondere L, N, L2 und S1 relevant. Am aufgedruckten Schaltbild sieht man außerdem, dass S1 und S2 gegen L geschaltet werden.
1. Vorhandene Schaltung ermitteln
Das Merlin Gerin Multi9 TL besitzt bei mir die Anschlüsse:
Zuerst musste also geklärt werden, wie das vorhandene Relais tatsächlich verdrahtet ist.
A1
Die Leitung von A1 konnte bis zum Neutralleiter verfolgt werden:
A1 = Dauer-N
A1 gegen A2 messen
Ohne gedrückten Wandtaster:
A1 ↔ A2 ≈ 0 V
Während der Wandtaster gedrückt wird:
A1 ↔ A2 ≈ 232 V
Damit:
A2 = L-Impulseingang der Spule
Der vorhandene Taster legt also kurz Phase auf A2.
Die Spule des Merlin wird damit folgendermaßen angesteuert:
N ───────── A1
│
Spule
│
L ─ Taster ─ A2
Jeder kurze L-Impuls auf A2 schaltet das Stromstoßrelais um.
A1 gegen Klemme 2
Hier lagen unabhängig vom Lampenzustand dauerhaft etwa 230 V an:
2 = Dauer-L
A1 gegen Klemme 1
Hier ergab sich:
Licht AUS → ≈ 0 V
Licht EIN → ≈ 230 V
Damit:
1 = geschaltete Phase zur Flurlampe
Die vorhandene Schaltung war damit eindeutig:
A1 = Dauer-N
A2 = L-Impuls vom Taster
2 = Dauer-L
1 = geschaltetes L zur Lampe
2. Zigbee-Relais anschließen
Wie auf dem Schaltbild des Zigbee-Moduls oben zu erkennen, besitzt das Relais:
L / N zur Spannungsversorgung
L1 / L2 als geschaltete Ausgänge
S1 / S2 als externe Schalteingänge
Die Eingänge S1 und S2 werden laut aufgedrucktem Schaltbild gegen L geschaltet.
Deshalb ist wichtig, dass das Zigbee-Relais auf derselben Phase liegt wie das Stromstoßrelais.
Ich habe es folgendermaßen angeschlossen:
| Zigbee |
Merlin |
Funktion |
L |
2 |
Dauer-L |
N |
A1 |
Dauer-N |
L2 |
A2 |
Schaltimpuls |
S1 |
1 |
tatsächlicher Lampenstatus |
Also zusammengefasst:
Zigbee L → Merlin 2
Zigbee N → Merlin A1
Zigbee L2 → Merlin A2
Zigbee S1 → Merlin 1
L1 und S2 werden für die externe Verdrahtung dieser Funktion nicht benötigt.
3. Funktionsprinzip
Das Zigbee-Relais ersetzt das vorhandene Stromstoßrelais nicht.
Stattdessen simuliert L2 einfach einen zusätzlichen Wandtaster:
Home Assistant
↓
Zigbee L2
↓
Merlin A2
↓
Stromstoßrelais schaltet
↓
Lampe
Die Rückmeldung funktioniert in die andere Richtung:
Lampe / Merlin 1
↓
Zigbee S1
↓
Home Assistant
Dadurch kennt Home Assistant auch dann den Lampenzustand, wenn das Licht über einen normalen Wandtaster geschaltet wurde.
Der Vorteil dieser Lösung ist, dass die vorhandene Taster-/Stromstoßschaltung vollständig erhalten bleibt.
4. Entitäten in Home Assistant
Mein Zigbee-Gerät heißt:
Relais_Flur
Relevant sind:
switch.relais_flur_l1
switch.relais_flur_l2
Dabei verwende ich
switch.relais_flur_l1
als Statusabbildung von S1.
Damit gilt im normalen Betrieb:
switch.relais_flur_l1 = on
→ Lampe ist EIN
switch.relais_flur_l1 = off
→ Lampe ist AUS
Der Switch-Type des Zigbee-Eingangs ist auf momentary eingestellt.
switch.relais_flur_l2 ist dagegen der eigentliche Impulsgeber für A2.
5. Script für den Tastimpuls
Zunächst brauchen wir ein Script, das einen kurzen Tastendruck simuliert:
alias: Flur Licht Impuls
sequence:
- action: switch.turn_on
target:
entity_id: switch.relais_flur_l2
- delay:
milliseconds: 300
- action: switch.turn_off
target:
entity_id: switch.relais_flur_l2
mode: single
Das Script heißt bei mir:
script.flur_licht_impuls
Es macht nichts anderes als:
L2 EIN
↓
300 ms
↓
L2 AUS
Das Merlin bekommt damit einen kurzen L-Impuls auf A2 und schaltet um.
Zusätzlich habe ich eine separate Backup-Automation, die switch.relais_flur_l2 wieder ausschaltet, falls er aus irgendeinem Grund eingeschaltet bleiben sollte.
Das ist insbesondere deshalb sinnvoll, weil die Spule des Stromstoßrelais nur einen kurzen Impuls bekommen soll.
6. Warum noch zwei weitere Scripts?
Das Stromstoßrelais kennt grundsätzlich nur:
Zustand wechseln
Home Assistant erwartet bei einem Licht aber:
EIN
AUS
Würde man bei jedem turn_on einfach einen Impuls senden, würde ein bereits eingeschaltetes Licht beim zweiten turn_on wieder ausgehen.
Deshalb wird vor dem Impuls der tatsächliche Zustand geprüft.
Einschalten
alias: Flur Licht einschalten
sequence:
- condition: state
entity_id: switch.relais_flur_l1
state: "off"
- action: script.flur_licht_impuls
mode: single
Das bedeutet:
Licht bereits EIN → nichts tun
Licht AUS → Impuls senden
Das Script heißt bei mir:
script.flur_licht_einschalten
Ausschalten
alias: Flur Licht ausschalten
sequence:
- condition: state
entity_id: switch.relais_flur_l1
state: "on"
- action: script.flur_licht_impuls
mode: single
Also:
Licht bereits AUS → nichts tun
Licht EIN → Impuls senden
Das Script heißt bei mir:
script.flur_licht_ausschalten
7. Daraus eine normale Home-Assistant-Leuchte machen
Jetzt kann aus den einzelnen Bausteinen eine Template-Light-Entität gebaut werden:
template:
- light:
- name: "Licht Flur"
unique_id: licht_flur
state: "{{ is_state('switch.relais_flur_l1', 'on') }}"
turn_on:
action: script.flur_licht_einschalten
turn_off:
action: script.flur_licht_ausschalten
Damit entsteht:
light.licht_flur
Diese Entität verhält sich in Home Assistant wie ein normales Licht.
Entscheidend ist dabei:
state: "{{ is_state('switch.relais_flur_l1', 'on') }}"
Der Zustand der Template-Leuchte wird also nicht einfach nach einem Schaltbefehl angenommen.
Stattdessen folgt light.licht_flur der Rückmeldung von switch.relais_flur_l1 und damit letztlich der geschalteten Lampenleitung.
8. Gesamter Ablauf
Beim Einschalten über Home Assistant:
light.licht_flur EIN
↓
script.flur_licht_einschalten
↓
Ist L1 bereits EIN?
↓
NEIN
↓
script.flur_licht_impuls
↓
Zigbee L2
↓
Merlin A2
↓
Merlin schaltet
↓
Lampe EIN
↓
Merlin 1 / Zigbee S1
↓
switch.relais_flur_l1 = ON
↓
light.licht_flur = ON
Beim Ausschalten läuft das entsprechend umgekehrt.
Wird dagegen der normale Wandtaster verwendet:
Wandtaster
↓
Merlin A2
↓
Merlin schaltet
↓
Lampe
↓
Merlin 1 / Zigbee S1
↓
switch.relais_flur_l1
↓
light.licht_flur
Home Assistant bekommt also auch diesen Schaltvorgang mit.
9. Wichtige Besonderheit bei L1
switch.relais_flur_l1 sollte nicht direkt in Home Assistant bedient werden.
Der Switch wird hier ausschließlich als interne Statusentität verwendet.
Wird L1 manuell in Home Assistant geschaltet, kann dessen Zustand vorübergehend vom tatsächlichen Lampenzustand abweichen.
Beispielsweise:
L1 = ON
Lampe = AUS
oder umgekehrt.
Bei einem anschließenden regulären Schaltvorgang über Wandtaster oder light.licht_flur synchronisiert sich das System wieder.
Deshalb habe ich sowohl
switch.relais_flur_l1
als auch
switch.relais_flur_l2
in der normalen Home-Assistant-Bedienoberfläche versteckt.
Nicht deaktivieren, da Scripts und Template-Light die Entitäten weiterhin benötigen.
Für die normale Bedienung gibt es nur noch:
light.licht_flur
10. Funktionstests
Nach Fertigstellung habe ich folgende Fälle getestet:
Wandtaster einschalten
Wandtaster
→ Lampe EIN
→ L1 ON
→ light.licht_flur ON
Wandtaster ausschalten
Wandtaster
→ Lampe AUS
→ L1 OFF
→ light.licht_flur OFF
Home Assistant einschalten
light.licht_flur EIN
→ Einschalt-Script
→ Impuls
→ Merlin schaltet
→ Lampe EIN
→ Status wird zurückgemeldet
Home Assistant ausschalten
light.licht_flur AUS
→ Ausschalt-Script
→ Impuls
→ Merlin schaltet
→ Lampe AUS
→ Status wird zurückgemeldet
Zusätzlich:
Licht bereits EIN
+ erneuter EIN-Befehl
= kein Impuls
und:
Licht bereits AUS
+ erneuter AUS-Befehl
= kein Impuls
Alle diese Tests funktionieren bei mir wie vorgesehen.
11. Ergebnis
Damit ist das vorhandene Stromstoßrelais vollständig in Home Assistant integriert, ohne die klassische Elektroinstallation zu ersetzen.
Das Merlin Gerin bleibt weiterhin die eigentliche Schaltinstanz:
Wandtaster
↓
Merlin Gerin TL
↓
Flurbeleuchtung
Home Assistant wurde lediglich parallel ergänzt:
Home Assistant
↓
Zigbee-Relais
↓
Merlin Gerin TL
und bekommt gleichzeitig die Rückmeldung:
Merlin 1
↓
Zigbee S1
↓
switch.relais_flur_l1
↓
light.licht_flur
Der für mich wichtigste Vorteil ist dabei:
Home Assistant / Zigbee funktioniert
→ Smart-Home-Steuerung verfügbar
Home Assistant / Zigbee fällt aus
→ Wandtaster und Stromstoßrelais funktionieren weiterhin
Das Zigbee-Relais ergänzt die vorhandene Elektroinstallation also lediglich um einen virtuellen Taster und eine Zustandsrückmeldung.
Vielleicht hilft die Lösung jemandem, der vor einem ähnlichen Problem mit einer vorhandenen Stromstoßschaltung steht.
Dies sollte auch mit einem 2-Kanal-Shelly-Schalt-Aktor funktionieren.
Grüße, sedowan