Tutorial: Steuern Sie Ihre Legrand In One (CPL) Beleuchtung mit Gladys
Dieses Tutorial erklärt, wie Sie die Integration Legrand In One CPL von A bis Z umsetzen: Anschließen der Schnittstelle, serielle Schnittstelle, Installation, Geräteerkennung, Protokollierung, Statusregeln und Dashboard.
Voraussetzungen: Eine Legrand In One Installation (Schalter, Interszenarien), eine Legrand CPL/USB Ref. 882 13 Schnittstelle und Gladys 4.86 oder neuer. Die Integration ist nicht mit Legrand verbunden.
1. Anschließen der Schnittstelle 882 13
Die Schnittstelle 882 13 wird an einen USB-Port des Geräts angeschlossen, das Gladys ausführt. Linux erkennt sie als seriellen Port (/dev/ttyACM0), mit einem stabilen Namen in /dev/serial/by-id/:
ls -l /dev/serial/by-id/
Bei mir: usb-Btcino_Terraneo_Mod._SFERA_Tele_Loop-if00 (der Name BTicino ist normal, das ist der Hersteller des Moduls).
Wo anschließen?
| Gerät | Machbar? | Anmerkungen |
|---|---|---|
| Raspberry Pi 4/5, Home Assistant Yellow | Ja | Das ist mein Fall (Yellow). Anschließen Sie direkt, nicht über einen nicht mit Strom versorgten USB-Hub. |
| Mini-PC mit Linux (Debian, Ubuntu…) | Ja | Identisch wie beim Pi. |
| NAS (Synology, QNAP) mit Docker | Oft | Docker muss das Gerät mounten können (devices:). Nicht getestet. |
| Gladys in einer VM | Schwierig | Der USB-Port muss an die VM weitergeleitet werden. Vermeiden Sie dies, wenn möglich. |
| Gladys unter Windows / macOS | Nein | Die serielle Schnittstelle (unten) benötigt ein Linux. |
Wichtige Einschränkung: Die Schnittstelle muss an eine Steckdose des gleichen Stromnetzes wie Ihre In One Module (gleicher Verteiler, idealerweise gleiche Phase) angeschlossen werden. Der Trägerstrom durchquert weder die Filter (882 12 / 882 21 / 882 23) noch in der Regel die Zähler. Wenn bestimmte Module nie gehört werden, ist dies der erste Punkt, den Sie überprüfen sollten.
2. Erstellen Sie die serielle Gateway (erforderlich)
Die Gladys-Integrationen laufen in einem Sandbox ohne USB-Zugang. Ein kleiner socat Container stellt daher den seriellen Port auf einem TCP-Port bereit, an den sich die Integration anschließt.
Erstellen Sie einen Ordner (z. B. ~/legrand) mit dieser docker-compose.yml, indem Sie den Gerätenamen durch Ihren eigenen ersetzen:
services:
legrand-serial:
image: alpine/socat
container_name: legrand-serial
restart: always
labels:
- com.centurylinklabs.watchtower.enable=false
devices:
- /dev/serial/by-id/usb-Btcino_Terraneo_Mod._SFERA_Tele_Loop-if00:/dev/legrand
ports:
- "172.17.0.1:2000:2000"
command: tcp-listen:2000,fork,reuseaddr,max-children=1 /dev/legrand,raw,echo=0,b115200,hupcl=0
Dann:
cd ~/legrand
docker compose up -d
docker ps | grep legrand-serial
Zwei Punkte zu beachten:
172.17.0.1ist die Host-Adresse, die vom Gladys-Docker-Netzwerk aus gesehen wird. Sie funktioniert bei einer Standard-Docker-Installation. Wenn Ihr Docker-Netzwerk anders ist, überprüfen Sie es mitdocker network inspect bridge.max-children=1: nur eine Verbindung zur gleichen Zeit. Wenn Sienc 172.17.0.1 2000zum Testen öffnen, verliert die Integration die Gateway, bis Sie den Test schließen.
Schneller Test, bevor Sie die Integration installieren:
nc 172.17.0.1 2000
Drücken Sie einen Wandschalter: Ein Frame wie *1*1*0#15112945## sollte angezeigt werden. Beenden Sie mit Strg-C. Wenn nc fehlt: sudo apt install netcat-openbsd.
Wenn Sie das Raspberry Pi-Bild von Gladys verwenden (« Gladys OS »)
Das offizielle Bild ist ein Raspberry Pi OS mit bereits installiertem Docker. Die Gateway wird daher genau wie oben erstellt; Sie müssen nur ein Terminal auf dem Pi über SSH öffnen.
1. SSH-Verbindung herstellen. Von einem Computer im gleichen Netzwerk:
ssh pi@gladys.local
(oder ssh pi@PI_IP_ADRESSE). Die Anmeldedaten sind die des Foundation-Images: Benutzername pi, Passwort raspberry. Unter Windows verwenden Sie PowerShell oder PuTTY. Beim ersten Zugriff ändern Sie das Passwort mit passwd.
2. Die Schnittstelle 882 13 identifizieren. Schließen Sie sie an und führen Sie dann aus:
ls -l /dev/serial/by-id/
Notieren Sie den Namen, der mit usb-Btcino_... beginnt.
3. Das Gateway erstellen. Immer noch im SSH-Terminal:
mkdir -p ~/legrand && cd ~/legrand
nano docker-compose.yml
Fügen Sie das obige docker-compose.yml ein (Rechtsklick fügt in den meisten Terminals ein), ersetzen Sie den Gerätenamen durch Ihren eigenen, speichern Sie mit Strg-O und dann Enter, verlassen Sie mit Strg-X. Führen Sie dann aus:
docker compose up -d
docker ps | grep legrand-serial
- « Berechtigung verweigert »: Fügen Sie
sudovoran hinzu oder fügen Sie Ihren Benutzer der Docker-Gruppe hinzu (sudo usermod -aG docker pi, dann abmelden und wieder anmelden). docker composeunbekannt (alte Version): Versuchen Siedocker-compose up -d, mit einem Bindestrich.
4. Überprüfen mit dem Test nc oben. Der Container startet automatisch mit dem Pi (restart: always).
Das gleiche Verfahren gilt für einen Mini-PC mit Debian oder Ubuntu und Docker: Nur die SSH-Kennung ändert sich. Das Gladys-Image deckt den Raspberry Pi 5 nicht ab; für diesen wird Gladys manuell über Docker installiert, und das Gateway wird auf die gleiche Weise erstellt.
3. Integration installieren
In Gladys: Integrationen → Katalog, suchen Sie nach « Legrand In One CPL », Installieren. Die Updates erfolgen anschließend über den Katalog.
4. Konfiguration
Drei Einstellungen:
- Adresse des seriellen Gateways:
172.17.0.1(Standard). - TCP-Port:
2000(Standard). - Verknüpfte Geräte (Regel 1 bis Regel 12): Lassen Sie dies zunächst leer, wir kommen im Kapitel 8 darauf zurück.
Klicken Sie auf Konfiguration speichern. Das Verbunden-Badge oben bezieht sich auf die Verbindung mit Gladys; die Verbindung mit dem Gateway wird im Tab Protokolle überprüft, der Connected to 172.17.0.1:2000 anzeigen sollte.
5. Erkennung: Die Installation zum Sprechen bringen
Der In One-Bus kann seine Geräte nicht auflisten. Die Integration lernt jeden Stromkreis durch Zuhören: Sie müssen also die Tasten drücken.
- Öffnen Sie den Tab Protokolle in einem Fenster, um die Frames eintreffen zu sehen.
- Gehen Sie durch das Haus und drücken Sie einmal auf jede Taste jedes Schalters und jedes Szenario-Schalters, einschließlich der Szenario-Tasten, auch diejenigen, die nichts programmiert haben. Ein Szenario-Schalter, dessen einzige Taste ein- und ausschaltet, wird als einfacher « Schalter » erkannt; sobald eine seiner Szenen-Tasten spricht, wird er zu einem « Szenario-Schalter ».
- Kehren Sie zu Erkennung zurück und klicken Sie auf Scannen.
Jede Taste erscheint als Gerät:
Legrand 944559-1 (Schalter): eine Schalter-Taste mit einer Beleuchtungsfunktion Ein/Aus;Legrand 648966-1 (Szenario-Schalter): die Ein/Aus-Taste eines Szenario-Schalters;Legrand Szenario 648966-3: eine Szenario-Taste, die als « Klick »-Taste dargestellt wird.
Die Nummer 944559-1 ist die Stromkreisnummer: Identifikator des Moduls (944559) und Tastennummer (1). Sie erscheint überall: Protokolle, Regeln, technische Parameter. Notieren Sie sie für jedes Gerät.
Wenn eine Taste fehlt, drücken Sie sie erneut und starten Sie den Scan neu. Die Liste der bekannten Stromkreise wird beim Neustart gespeichert.
6. Geräte zu Gladys hinzufügen
Klicken Sie auf Zu Gladys hinzufügen für jedes nützliche Gerät und wählen Sie dann seinen Raum im Tab Geräte aus.
Ein Tipp: Benennen Sie die Geräte nicht um. Behalten Sie Legrand 944559-1 (Schalter) als Namen bei, ggf. ergänzt (Legrand 944559-1 (Schalter) Küchenspot), um die Stromkreisnummer sichtbar zu halten. Sie ist der Link zu den Protokollen und Regeln; ohne sie verliert man den Überblick. Der « schöne » Name wird im Dashboard vergeben, wo jede Kachel ihren eigenen Beschriftungstext haben kann (Kapitel 9).
Tipp: Sie können die nicht programmierten Szenario-Tasten und die Schalter, die nichts steuern, weglassen.
7. Protokolle verstehen
Jede Zeile erzählt, was auf dem Bus passiert. Die Frames sind im Open Web Net-Format *WER*WAS*WO##:
| Zeile | Richtung |
|---|---|
Frame received: *1*1*0#15112945## (944559-1) |
eine Beleuchtungstaste hat ein (*1*1) gesendet. Die Adresse 15112945 entspricht dem Schaltkreis 944559-1. |
Frame received: *1*0*0#15112945## (944559-1) |
dieselbe Taste hat aus (*1*0) gesendet. |
Light 944559-1 … is now on |
der in Gladys angezeigte Zustand hat sich geändert. Diese Zeile erscheint nur, wenn sich der Zustand ändert: zweimaliges Drücken von „ein“ erzeugt sie nur einmal. |
Frame received: *25*11*0#10383459## (648966-3) |
eine Szenario-Taste wurde gedrückt (*25*11). |
Scenario 648966-3 … clicked |
die entsprechende Gladys-Taste hat einen Klick erhalten. |
Frame received: *25*16*… |
Szenario-Druckende, ignoriert. |
Linked light 944559-1 is now off (from 648966-3) |
eine Regel für verbundene Geräte hat den Zustand aktualisiert (Kapitel 8). Nichts wird auf den Bus gesendet. |
Sent *1*0*#15112945## (944559-1 off) |
Gladys hat einen Befehl an den Bus gesendet. Die Antwort *#*1## ist die Bestätigung. |
Der Link zwischen einem Frame und einem Gerät ist die Adresse: Adresse = Kennung × 16 + Tastennummer. 944559 × 16 + 1 = 15112945. Die Integration führt die Berechnung durch und zeigt die Schaltkreisnummer in Klammern an, Sie müssen dies nicht tun.
8. Die Regeln „Verbundene Geräte“
Warum sie existieren
Im In-One-System sprechen nur die Tasten auf dem Bus. Ein Empfänger (das Relais, das die Lampe steuert) hört die Tasten, die er gelernt hat, und reagiert, ohne jemals etwas zu sagen. Gladys kann daher nicht wissen, ob eine Lampe eingeschaltet ist: Es gibt keinen Frame dafür, und es ist keine Statusabfrage möglich.
Folge: Ein Gerät Legrand 648966-1 in Gladys ist eine Taste, keine Lampe. Wenn diese Taste die Küche einschaltet, bleiben die Geräte „Spot Küche“ und „Deckenleuchte Küche“ in Gladys als ausgeschaltet angezeigt, da ihre eigenen Tasten nicht gesprochen haben. Die Regeln korrigieren dies: Sie sagen der Integration, welche Lampen welcher Taste folgen, nur in Gladys. Nichts wird auf den Bus gesendet.
Die beiden Formen der Regel
Eine Beleuchtungstaste links: Die Lampen rechts kopieren ihren Zustand.
648966-1 -> 944559-1, 944559-2
Wenn die Taste 648966-1 eingeschaltet wird (von der Wand oder von Gladys aus), werden 944559-1 und 944559-2 in Gladys eingeschaltet; ausgeschaltet, genauso. Das ist die Regel für einen Schalter, der mehrere Empfänger steuert, oder für zwei Schalter, die dieselbe Lampe steuern (Wechselschalter):
929520-1 -> 944561-1
929521-1 -> 944561-1
Eine Szenario-Taste links: Jede Lampe nimmt den nach = geschriebenen Zustand an.
648966-3 -> 944559-1=off, 944559-2=off, 648966-1=off
Ein Szenario hat keinen Ein/Aus-Zustand, nur einen Druck: Sie geben also an, was es bei jeder Lampe tut (=on oder =off). Denken Sie daran, die Tasten einzuschließen, die diese Lampen steuern (hier 648966-1=off), sonst würde die Tastentaste weiterhin als eingeschaltet angezeigt werden.
Für ein „Alles ausschalten“-Szenario listen Sie alle Ihre Lampen auf:
950680-3 -> 944556-1=aus, 944556-2=aus, 944559-1=aus, 944559-2=aus, 944560-1=aus, 944560-2=aus, 944561-1=aus, 944561-2=aus, 648966-1=aus, 929521-1=aus, 929520-1=aus, 929523-1=aus, 929528-1=aus
Für ein Szenario „Alles ausschalten außer Wohnzimmer“: dieselbe Liste, mit 944560-1=on.
Praktische Regeln
- Eine Regel pro Feld (Regel 1 bis Regel 12). Mehr als 12 Regeln? Fügen Sie mehrere in ein Feld ein, getrennt durch
;. - Die Regeln werden sofort nach der Registrierung angewendet, ohne Neustart.
- Eine ungültige Regel wird ohne Fehler ignoriert: Wenn nichts passiert, überprüfen Sie die Nummern.
- Eine Verknüpfung gilt nur auf einer Ebene:
A -> Bund dannB -> Cpropagiert nicht von A zu C. Das verhindert Schleifen. - Um eine Regel zu überprüfen: Drücken Sie die Taste und schauen Sie sich die Zeilen
Linked light … (from …)in den Logs an.
Wie man herausfindet, was jede Taste macht
Machen Sie ein Inventar Raum für Raum: Für jeden Schalter und jede Szene notieren Sie, welche Lampen tatsächlich ein- oder ausgeschaltet werden. Das ist die Information, die die Integration nicht erraten kann. Eine Tabelle wie diese hilft:
| Taste | Effekt | Regel |
|---|---|---|
| 648966-1 (Eingang, Ein/Aus) | schaltet Spot und Küchendeckenleuchte ein/aus | 648966-1 -> 944559-1, 944559-2 |
| 950680-3 (Szene 3) | schaltet das ganze Haus aus | 950680-3 -> … alles =off |
| 950680-4 (Szene 4) | schaltet Wohnzimmer- und Wohnzimmertischleuchten ein | 950680-4 -> 944560-1=on, 944560-2=on |
9. Das Dashboard
Im Dashboard erstellen Sie „Geräte“-Blöcke pro Raum und geben jeder Kachel einen lesbaren Namen (Spot, Deckenleuchte, Wandlampe…). Hier kommen die aussagekräftigen Namen zum Einsatz, während das Gerät seine Schaltkreisnummer behält.
Die Szenario-Tasten können auch als Gladys-Szenenauslöser dienen: „Wenn Legrand-Szenario 950680-3 geklickt wird, dann…“ (Steckdose ausschalten, benachrichtigen, usw.).
10. Wenn es nicht funktioniert
- Kein Frame in den Logs: Überprüfen Sie
docker ps | grep legrand-serial, dann, dass nichts anderes mit Port 2000 verbunden ist (nur eine Verbindung möglich).docker restart legrand-serialbefreit das Gateway; die Integration verbindet sich automatisch neu. ECONNREFUSED 172.17.0.1:2000: Das Gateway hört nicht, oder nicht auf dieser Adresse.- Eine Lampe erscheint nicht: Ihr Schalter hat noch nicht gesprochen, oder er ist auf einem anderen Stromkreis (Filter, andere Phase).
- Der Zustand einer Lampe ist falsch: Es fehlt eine Regel, oder die Regel zitiert nicht die richtige Taste. Die Logs zeigen die Taste, die gesprochen hat.
- Der Befehl von Gladys tut nichts: Schauen Sie sich die Zeile
Sent …und die Antwort an.*#*1##= akzeptiert von der Schnittstelle;*#*0##= abgelehnt. Wenn es akzeptiert wird, aber nichts passiert, hat der Empfänger diese Taste nicht gelernt.
Getestete Hardware und Grenzen
Getestet auf meiner Installation (22 Geräte): Doppel-Schalter 672 02, Einfach-Schalter 672 01, Beleuchtungsszenario-Schalter 672 08, Beleuchtungsszenario-Sender 672 80, Gladys 5.3 auf Home Assistant Yellow. Die anderen Ein/Aus-Schalter der Reihe sollten funktionieren; Dimmerschalter nur als Ein/Aus; Rollläden werden in dieser Version nicht unterstützt. Feedback zu anderen Modulen ist auf dem Repository willkommen: GitHub - XDECO/gladys-integration-legrand-inone: Unofficial Gladys Assistant integration to control Legrand In One (PLC) lights through the Legrand 882 13 USB interface. · GitHub
Code unter Apache-2.0-Lizenz, entwickelt mit Hilfe von Claude (Anthropic) und validiert auf meiner Installation. Ich bin kein Entwickler: Überprüfungen durch erfahrene Entwickler sind willkommen.




