---
title: "Yeelight"
description: "Yeelight-Lampen, Streifen und Deckenleuchten per JSON-RPC auf TCP-Port 55443 im LAN: dimmen und schalten ohne Cloud, sobald LAN Control aktiv ist."
url: "https://taphome.com/de/compatibility/yeelight/"
language: de
lastmod: 2026-04-15
generator: hugo
ai:
  topics: ["data-pp","lighting","wifi","json-rpc","lan-control","dimmer"]
  questions: ["Wie integriere ich eine Yeelight-Lampe mit TapHome?","Was steuert die Yeelight-TapHome-Vorlage?","Wie aktiviere ich LAN Control / Developer Mode an einer Yeelight-Lampe?","Kann TapHome die Farbe oder Farbtemperatur einer Yeelight-Lampe ändern?","Warum reagiert meine Yeelight-Lampe nicht auf TapHome-Befehle?","Warum schlagen manche Yeelight-Befehle mit \"client quota exceeded\" fehl?"]
---

# Yeelight

Kommunikation: Packet Parser → TCP

- [Yeelight Developer Portal](https://www.yeelight.com/en_US/developer)
- [Yeelight LAN Control FAQ](https://www.yeelight.com/faqs/lan_control)

> Netzwerkadresse
> 
> TapHome erreicht dieses Gerät unter der beim Import eingegebenen Adresse. Geben Sie dem Gerät eine feste Adresse — eine IP-Reservierung im Router oder seinen mDNS-Namen, falls es einen unterstützt —, sonst funktioniert die Integration nicht mehr, sobald der Router die Adresse ändert.
> 
> [Netzwerkvorbereitung](https://taphome.com/de/docs/setup/network-preparation/)

## Integrationsanleitung

Yeelight ist eine Marke für Wi-Fi Smart-LED-Beleuchtung — einfarbige Lampen, Tunable-White- und RGB-Lampen, LED-Streifen sowie Deckenleuchten — herausgegeben von Qingdao Yeelink (Teil des Xiaomi-Ökosystems). Jedes LAN-fähige Yeelight-Produkt spricht dasselbe JSON-RPC **Inter-Operation Protocol** auf TCP-Port **55443**, daher deckt eine einzige TapHome-Vorlage die gesamte Produktfamilie ab.

Die Vorlage stellt ein Dimmer-Gerät bereit: Helligkeit (0–100 %) und Ein-/Aus-Steuerung mit weichen Übergängen. Der aktuelle Farbmodus und die Farbtemperatur werden als schreibgeschützte Service-Attribute gemeldet. TapHome kommuniziert direkt über das lokale Netzwerk mit der Lampe — sobald LAN Control aktiviert ist, wird kein Yeelight-Cloud-Konto benötigt.

## Hardware-Anschluss

Yeelight-Lampen werden aus dem normalen Stromnetz versorgt (typischerweise E27, E14, GU10 oder 24-V-Netzteil für Streifen — je nach Produkt). Zwischen TapHome und Lampe ist keine Verkabelung erforderlich — die gesamte Kommunikation läuft über Wi-Fi. Die Lampe muss im **selben LAN / VLAN** wie die TapHome-CCU sein, da das JSON-RPC-Protokoll weder Authentifizierung noch Verschlüsselung verwendet und der Datenverkehr nie über die Yeelight-Cloud geroutet wird.

> [!WARNING]
> Das Yeelight-LAN-Protokoll ist unverschlüsselt. TCP-Port 55443 niemals ins öffentliche Internet exponieren und die Lampen in einem vertrauenswürdigen Netzsegment betreiben — jeder mit LAN-Zugang kann Befehle an die Lampe senden.

## Konfiguration

### LAN Control aktivieren

LAN Control (in manchen Regionen **Developer Mode** genannt) ist an der Lampe standardmäßig deaktiviert. Ohne diese Einstellung lehnt die Lampe alle TCP-Verbindungen auf Port 55443 ab.

1. Öffne die **Yeelight**-App und koppele die Lampe per SmartConfig / QuickConnect mit dem lokalen Wi-Fi, falls dies noch nicht geschehen ist.
2. Wähle in der App die Ziel-Lampe aus.
3. Tippe auf das Einstellungssymbol (oben rechts) und öffne **LAN Control** (in einigen Firmware-Versionen **Developer Mode**).
4. Schalte **LAN Control** auf EIN.
5. Notiere die IP-Adresse der Lampe — sie wird in den Geräteinformationen der Yeelight-App angezeigt oder kann aus der DHCP-Lease-Tabelle des Routers abgelesen werden.

Sobald LAN Control aktiviert ist, lauscht die Lampe auf TCP-Port `55443` und kündigt sich periodisch per UDP-Multicast `239.255.255.250:1982` an.

### Netzwerk-Konfiguration

- **IP-Adresse** — die TapHome-Vorlage findet Lampen nicht automatisch. Weise der Lampe im Router eine **statische IP** oder eine **DHCP-Reservierung** zu, damit sich die Adresse nach einer Lease-Erneuerung nicht ändert.
- **Gleiches LAN-Segment** — TapHome-CCU und Lampe müssen in derselben Broadcast-Domäne sein. Liegen Wi-Fi- und kabelgebundene Clients in verschiedenen VLANs, füge eine Firewall-Regel hinzu, die TCP 55443 zwischen ihnen erlaubt.

### Import-Parameter

Beim Importieren der Vorlage in TapHome werden drei Werte abgefragt:

| Parameter | Beschreibung | Standard |
|-----------|--------------|----------|
| `ipAddress` | IP-Adresse der Yeelight-Lampe im LAN | `192.168.0.1` (Platzhalter — durch echte IP ersetzen) |
| `Port` | TCP-Steuerport der Lampe | `55443` |
| `Internal poll interval` | Wie oft die Vorlage `get_prop` sendet (in Millisekunden) | `10000` (10 s) |

Der Standardport `55443` ist der übliche Yeelight-LAN-Control-Port und sollte nicht geändert werden, außer die Lampe wurde auf einen abweichenden Port konfiguriert.

> [!TIP]
> Zwischen den Polls reagiert die Vorlage auch auf `props`-Notifications, die die Lampe bei jeder Zustandsänderung selbständig aussendet. Praktisch bedeutet das: Änderungen an Helligkeit oder Ein/Aus über die Yeelight-App, einen Wandschalter oder eine andere Home-Assistant-Instanz erscheinen in TapHome nahezu sofort, ohne den nächsten Poll abzuwarten.

## Gerätefunktionen

### Dimmer (Helligkeit und Ein/Aus)

Die Vorlage stellt ein einzelnes Dimmer-Gerät bereit. Bei jedem Poll sendet sie:

```json
{"id":951,"method":"get_prop","params":["bright","power"]}
```

und wertet `result[0]` (Helligkeit 1–100, geteilt durch 100 in den TapHome-Bereich 0.0–1.0) sowie `result[1]` (`"on"` / `"off"`) aus.

Schreibvorgänge werden in zwei JSON-RPC-Befehle übersetzt:

- Ist der Zielwert größer als null, sendet die Vorlage `set_power ["on","smooth",300]` gefolgt von `set_bright [round(level*100),"smooth",500]`. Der 300-ms-Einschaltübergang und der 500-ms-Helligkeitsübergang erzeugen einen weichen Fade statt eines harten Sprungs.
- Ist der Zielwert null, sendet die Vorlage `set_power ["off","smooth",300]`.

Der Dimmer verarbeitet außerdem die von der Lampe gesendeten `props`-Notifications (Power / Brightness), so dass externe Zustandsänderungen ohne Warten auf den nächsten Poll in TapHome erscheinen.

### Farbmodus und Farbtemperatur (nur Lesen)

Zwei Service-Attribute auf Modulebene werden über einen separaten `get_prop`-Request (`id=981`) gelesen:

- **Color mode** — `RGB`, `Temperature` oder `HSV`, dekodiert aus der numerischen Eigenschaft `color_mode` (1 / 2 / 3) per `SWITCH`-Ausdruck im Listener-Skript.
- **Color temperature** — Kelvin-Wert im Format `"{ct}K"` (zum Beispiel `"4000K"`). Nur aussagekräftig, wenn die Lampe im Temperature-Modus arbeitet. Typischer modellabhängiger Bereich: **1700–6500 K** für Farblampen und -streifen, **2700–6500 K** für Deckenleuchten (ceiling3 ist auf 6000 K begrenzt).

Beide Attribute sind rein diagnostisch — die Vorlage schaltet den Farbmodus nicht um und schreibt keine neue Farbtemperatur.

### Weitere Funktionen

Das Yeelight-LAN-Protokoll bietet außerdem RGB- und HSV-Farbsteuerung (`set_rgb`, `set_hsv`), Farbtemperatur-Steuerung (`set_ct_abx`), Color-Flow-Programme (`start_cf` / `stop_cf`), vordefinierte Szenen (`set_scene`), geräteinterne Sleep-Timer (`cron_add`), Hintergrundlicht-Steuerung bei Doppelleuchten (`bg_*`-Methoden) sowie Music Mode (`set_music`, ein Reverse-TCP-Kanal, der das Rate-Limit umgeht). Keine dieser Funktionen ist in der aktuellen TapHome-Dimmer-Vorlage implementiert — wer volle Farbe oder Effekte benötigt, muss die Vorlage erweitern oder parallel die native Yeelight-App nutzen.

> [!TIP]
> Farbe, Farbtemperatur und Szenen lassen sich in einer künftigen Vorlagen-Aktualisierung über denselben TCP-Kanal ergänzen. Die PacketParser Read-/Write-Skripte lassen sich um `set_ct_abx`, `set_rgb` oder `set_scene` erweitern, ohne die Import-Parameter zu verändern.

## Fehlerbehebung

### Lampe reagiert nicht auf Befehle

1. Prüfe, ob **LAN Control** an der Lampe aktiviert ist (Yeelight-App → Lampeneinstellungen → LAN Control). Ohne diese Einstellung lehnt die Lampe alle TCP-Verbindungen auf Port 55443 ab.
2. Kontrolliere die IP-Adresse der Lampe in der Yeelight-App oder in der DHCP-Lease-Tabelle des Routers und stelle sicher, dass sie mit dem Import-Parameter `ipAddress` übereinstimmt. Yeelight-Lampen haben standardmäßig keine feste IP — der Lease kann abgelaufen und die Adresse gewechselt sein.
3. Vergib der Lampe eine statische IP oder eine DHCP-Reservierung, damit die Adresse stabil bleibt.
4. Prüfe, dass TapHome-CCU und Lampe im selben LAN / VLAN sind und TCP `55443` dazwischen nicht durch eine Firewall blockiert wird.
5. Teste die Verbindung manuell: `telnet {bulb-ip} 55443` und sende einen rohen Request mit `\r\n` als Abschluss:

   ```json
   {"id":1,"method":"get_prop","params":["bright","power"]}
   ```

   Eine funktionsfähige Lampe antwortet mit `{"id":1,"result":["<bright>","<power>"]}`.

### Read error: client quota exceeded

Jede TCP-Verbindung zu einer Yeelight-Lampe ist auf **60 Befehle pro Minute** begrenzt, und die Lampe akzeptiert insgesamt maximal **4 gleichzeitige Verbindungen** (144 Befehle/Minute im gesamten LAN). Wenn ein weiteres System die Lampe zeitgleich pollt — Home Assistant, eine Yeelight-Cloud-Session, ein eigenes Skript — kann der kombinierte Verkehr Rate-Limit-Fehler auslösen, die in TapHome als `Read error: client quota exceeded` gemeldet werden.

1. Deaktiviere oder verlangsame andere Integrationen, die dieselbe Lampe verwenden.
2. Belasse das Poll-Intervall in TapHome auf dem Standardwert von `10000` ms oder höher. Ein `get_prop` plus zwei `set_*`-Schreibvorgänge pro Änderung bleiben zuverlässig unter dem 60-Befehle/Minute-Kontingent.
3. Schließe ungenutzte `telnet`-Debug-Sessions — sie zählen zum Limit von 4 Verbindungen.

### Service-Attribut Color temperature zeigt "error"

Die Service-Attribute Color mode und Color temperature lesen `color_mode` und `ct` aus der Lampe. Handelt es sich um ein **Mono**-Modell (nur Weiß) ohne Tunable-White, oder arbeitet die Lampe im RGB- oder HSV-Modus, ist der `ct`-Wert nicht aussagekräftig und das Listener-Skript meldet Color temperature als `"error"`. Das ist erwartetes Verhalten und kein Fehler.

### Änderungen in der Yeelight-App werden nicht reflektiert

Die Vorlage reagiert auf von der Lampe gesendete `props`-Notifications, externe Änderungen erscheinen daher normalerweise innerhalb einer Sekunde. Falls nicht:

1. Die Notification kann eingetroffen sein, während der TCP-Socket neu aufgebaut wurde — der nächste Poll (Standard 10 s) synchronisiert wieder.
2. Einige ältere Firmware-Versionen senden Notifications nur, wenn aktiv ein Befehl abgesetzt wurde. Aktualisiere die Lampen-Firmware über die Yeelight-App.
3. Die Lampe kann das 4-Verbindungen-Limit erreicht haben — reduziere die Anzahl gleichzeitiger Clients im LAN.

## Verfügbare Geräte 1

Diese Geräte erscheinen nach dem Import in TapHome.

Yeelight-Modul Modul

Serviceattribute

|                |                                                                                                                                                                                                                             |
|----------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Farbmodus      | Aktiver Farbmodus, den die Lampe meldet — RGB, Temperature (Tunable White) oder HSV. Nur lesend — die Vorlage wechselt den Farbmodus nicht.                                                                                 |
| Farbtemperatur | Aktueller Weißpunkt in Kelvin (nur im Temperature-Modus gültig). Nur lesend — die Vorlage schreibt keine Farbtemperatur. Modellabhängiger Bereich: 1700–6500 K für Farblampen und Streifen, 2700–6500 K für Deckenleuchten. |

Benutzerdefinierte Variablen

Listener

```taphome
VAR jsonResponse := TOSTRING(RECEIVEDBYTES);
VAR id := PARSEJSON(jsonResponse, "id", 1);

IF(id = 981)
   VAR error := PARSEJSON(jsonResponse, "error.message", 1);
   
   IF(!ISNULL(error))
      COMPLETESERVICEATTRIBUTE("Color mode", "", "error");
      COMPLETESERVICEATTRIBUTE("Color temperature", "", "error");
   ELSE
      VAR colorMode := PARSEJSON(jsonResponse, "result[0]", 1);
      VAR colorTemp := PARSEJSON(jsonResponse, "result[1]", 1);
      
      IF(!ISNULL(colorMode))
      VAR colorModeValue := SWITCH(TODOUBLE(colorMode), 1, "RGB", 2, "Temperature", 3, "HSV", "Unknown");
         COMPLETESERVICEATTRIBUTE("Color mode", colorModeValue, "");
      ELSE
         COMPLETESERVICEATTRIBUTE("Color mode", "", "error");
      END
      
      IF(!ISNULL(colorTemp))
         COMPLETESERVICEATTRIBUTE("Color temperature", colorTemp + "K", "");
      ELSE
         COMPLETESERVICEATTRIBUTE("Color temperature", "", "error");
      END
   END
END
```

Serviceattribute

Color mode

```taphome
VAR json := "{\"id\":981, \"method\":\"get_prop\", \"params\":[\"color_mode\", \"ct\"]}";
SENDDATA(json);
```

Color temperature

```

```

Yeelight-Dimmer Dimmer Lesen und Schreiben

Helligkeit (0–100 %) und Ein/Aus mit weichen Übergängen von 300–500 ms. Farbe, Farbtemperatur und Effekte werden von dieser Vorlage nicht bereitgestellt.

numeric Einheit: brightness 0–100 %

Variable: `receiveError`, Variable: `notificationError`, Variable: `sendError`

Level lesen

```taphome
VAR json := "{\"id\":951, \"method\":\"get_prop\", \"params\":[\"bright\", \"power\"]}";
SENDDATA(json);
```

Level schreiben

```taphome
IF(Le > 0)
    VAR jsonPowerOn := "{\"id\":952,\"method\":\"set_power\",\"params\":[\"on\", \"smooth\", 300]}";
    SENDDATA(jsonPowerOn);

    VAR jsonBrightness := "{\"id\":953,\"method\":\"set_bright\",\"params\":[" + ROUND(Le*100) + ",\"smooth\", 500]}";
    SENDDATA(jsonBrightness);
ELSE
    VAR jsonPowerOff := "{\"id\":954,\"method\":\"set_power\",\"params\":[\"off\", \"smooth\", 300]}";
    SENDDATA(jsonPowerOff);
END
```

Listener

```taphome
VAR jsonResponse := TOSTRING(RECEIVEDBYTES);
VAR method := PARSEJSON(jsonResponse, "method", 1);
VAR id := PARSEJSON(jsonResponse, "id", 1);
STRING onOff;

IF(id = 951)
   receiveError := PARSEJSON(jsonResponse, "error.message", 1);
   
   IF(LENGTH(receiveError) = 0)
      VAR brightnessStr := PARSEJSON(jsonResponse, "result[0]", 1);
      onOff := PARSEJSON(jsonResponse, "result[1]", 1);
   
      IF(!ISNULL(brightnessStr))
         Le := TODOUBLE(brightnessStr) / 100.0;
      END
   
      IF(onOff = "on")
         St := 1;
      ELSEIF(onOff = "off")
         Le := 0;
         St := 0;
      END
   END
END

IF(id > 951 AND id < 955)
   sendError := PARSEJSON(jsonResponse, "error.message", 1);
END

IF(method = "props")
   notificationError := PARSEJSON(jsonResponse, "error.message", 1);
   
   IF(LENGTH(notificationError) = 0)
      VAR brightness := PARSEJSON(jsonResponse, "params.bright", 1);
      onOff := PARSEJSON(jsonResponse, "params.power", 1);
   
      IF(!ISNULL(brightness))
         Le := brightness / 100.0;
      END
   
      IF(onOff = "on")
         St := 1;
         IF(ISNULL(brightness))
            SENDDATA("{\"id\":951, \"method\":\"get_prop\", \"params\":[\"bright\", \"power\"]}");
         END
      ELSEIF(onOff = "off")
         Le := 0;
         St := 0;
      END
   END
END

IF(LENGTH(receiveError) > 0)
   ADDERROR("Read error: " + receiveError);
END

IF(LENGTH(sendError) > 0)
   ADDERROR("Write error: " + sendError);
END

IF(LENGTH(notificationError) > 0)
   ADDERROR(notificationError);
END
```

**Verbindung:** Packet Parser → TCP

Mögliche Verbesserungen (13)

- Set color temperature — Write color temperature (1700–6500 K, model-dependent). Color temperature is exposed as a read-only service attribute but cannot be changed from TapHome.
- Set RGB color — Write full RGB color (0–16777215). TapHome dimmer template exposes brightness + on/off only — no color control.
- Set HSV color — Write hue (0–359) + saturation (0–100). Not exposed by dimmer template.
- Color flow — Scripted sequences of brightness / color / CT changes (sunrise effect, strobe, ambient cycles). Not exposed by dimmer template.
- Set scene — Jump directly to a predefined state (color, hsv, ct, cf, auto\_delay\_off). Not exposed by dimmer template.
- Toggle power — Single-parameter power toggle. Not exposed — TapHome writes explicit on/off via set\_power instead.
- Sleep timer (cron) — On-device auto-off timer in minutes. Not exposed — TapHome uses its own Smart Rules for scheduling instead.
- Music mode — Reverse-TCP channel bypassing the 60 cmd/min rate limit. Not used by TapHome.
- Relative adjustments — Relative +/- changes without knowing the current value. Not exposed — TapHome always writes absolute brightness.
- Save current state as power-on default — Persist current brightness/color to flash so it survives a hard power cut. Not exposed by dimmer template.
- Background light control — Secondary light channel on dual-light fixtures (e.g., some ceiling lights). Not exposed by dimmer template.
- Extended state properties — Additional properties pushed via props notifications (rgb, hue, sat, flowing, delayoff, music\_on, name). Template only consumes bright and power.
- LAN auto-discovery — User must enter the bulb IP manually during import — template does not perform SSDP discovery. A static DHCP lease is strongly recommended.

## Importparameter

Diese Werte geben Sie beim Import des XML ein.

| In der App abgefragt   | Standard      |
|------------------------|---------------|
| IP-Adresse             | `192.168.0.1` |
| Port                   | `55443`       |
| Internal poll interval | `10000`       |

## Quellen

- Yeelight WiFi Light Inter-Operation Specification
  
  [www.yeelight.com](https://www.yeelight.com/download/Yeelight_Inter-Operation_Spec.pdf) 2026-04-15
  
  [PDF](https://taphome.com/compatibility/devices/yeelight/manufacturer/Yeelight_Inter-Operation_Spec.pdf)
- Yeelight Developer — Third-party Control Protocol
  
  [www.yeelight.com](https://www.yeelight.com/en_US/developer) 2026-04-15
- python-yeelight library documentation
  
  [yeelight.readthedocs.io](https://yeelight.readthedocs.io/en/latest/) 2026-04-15

Herstellerdokumente sind © ihrer jeweiligen Eigentümer. Sie werden so bereitgestellt, wie der Hersteller sie veröffentlicht hat, nur zur Information.

## Verwandte Dokumentation

- [Packet-Parser-Integration](https://taphome.com/de/compatibility/packet-parser-guide/)
- [Packet Parser (HTTP, TCP, UDP, FTP, MQTT)](https://taphome.com/de/docs/integration/packet-parser/)
- [Packet-Parser-Funktionen](https://taphome.com/de/docs/script/packet-parser/)
- [Parsing-Funktionen](https://taphome.com/de/docs/script/parsing-functions/)

