---
title: "Yeelight"
description: "Stmívání a spínání Yeelight Wi-Fi LED žárovek, pásků a stropních svítidel přes JSON-RPC v LAN. Šablona TapHome pro Yeelight LAN Control."
url: "https://taphome.com/cs/compatibility/yeelight/"
language: cs
lastmod: 2026-04-15
generator: hugo
ai:
  topics: ["data-pp","lighting","wifi","json-rpc","lan-control","dimmer"]
  questions: ["Jak integrovat Yeelight žárovku s TapHome?","Co ovládá šablona Yeelight v TapHome?","Jak zapnout LAN Control / Developer Mode na Yeelight žárovce?","Může TapHome měnit barvu nebo teplotu bílé Yeelight žárovky?","Proč Yeelight žárovka nereaguje na příkazy z TapHome?","Proč některé Yeelight příkazy selhávají s chybou \"client quota exceeded\"?"]
---

# Yeelight

Komunikace: Packet Parser → TCP

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

> Adresa v síti
> 
> TapHome komunikuje se zařízením na adrese zadané při importu. Dejte zařízení stálou adresu — rezervaci IP v routeru, nebo jeho mDNS jméno, pokud ho podporuje —, jinak integrace přestane fungovat, když router adresu změní.
> 
> [Příprava sítě](https://taphome.com/cs/docs/setup/network-preparation/)

## Návod na integraci

Yeelight je značka Wi-Fi chytrých LED svítidel — jednobarevných žárovek, žárovek s nastavitelnou bílou a plnobarevných žárovek, LED pásků a stropních svítidel — kterou vydává společnost Qingdao Yeelink (součást ekosystému Xiaomi). Každý Yeelight produkt s podporou LAN používá stejný JSON-RPC protokol **Inter-Operation Protocol** na TCP portu **55443**, takže jedna šablona TapHome pokrývá celou produktovou rodinu.

Šablona zpřístupňuje zařízení typu stmívač: jas (0–100 %) a zapnutí/vypnutí s plynulými přechody. Aktuální barevný režim a teplota bílé se zobrazují jako servisní atributy pouze pro čtení. TapHome komunikuje se žárovkou přímo v lokální síti — po zapnutí LAN Control na žárovce není potřeba účet v cloudu Yeelight.

## Hardwarové připojení

Yeelight žárovky se napájejí ze standardní sítě (typicky E27, E14, GU10 nebo 24 V zdroj pro LED pásky — podle produktu). Mezi TapHome a žárovkou není potřeba žádná kabeláž — veškerá komunikace probíhá přes Wi-Fi. Žárovka musí být ve **stejné LAN / VLAN** jako TapHome CCU, protože JSON-RPC protokol nepoužívá autentizaci ani šifrování a komunikace nikdy neprochází cloudem Yeelight.

> [!WARNING]
> LAN protokol Yeelight je nešifrovaný. Nevystavuj TCP port 55443 do veřejného internetu a umísti žárovky do důvěryhodného síťového segmentu — kdokoliv s přístupem do LAN může žárovce posílat příkazy.

## Konfigurace

### Zapnutí LAN Control

LAN Control (v některých regionech označovaný jako **Developer Mode**) je na žárovce ve výchozím nastavení vypnutý. Bez něj žárovka odmítá TCP spojení na portu 55443.

1. Otevři mobilní aplikaci **Yeelight** a spáruj žárovku s lokální Wi-Fi sítí přes SmartConfig / QuickConnect, pokud ještě není spárovaná.
2. Vyber cílovou žárovku v aplikaci.
3. Klepni na ikonu nastavení (vpravo nahoře) a otevři **LAN Control** (v některých firmwarech označené jako **Developer Mode**).
4. Přepni **LAN Control** na ON.
5. Poznamenej si IP adresu žárovky — zobrazuje se v informacích o zařízení v aplikaci Yeelight nebo ji lze zjistit z tabulky DHCP leases na routeru.

Po zapnutí LAN Control žárovka naslouchá na TCP portu `55443` a pravidelně se inzeruje přes UDP multicast `239.255.255.250:1982`.

### Síťová konfigurace

- **IP adresa** — šablona TapHome neumí automatické vyhledávání žárovek. Přiděl žárovce **statickou IP** nebo **DHCP rezervaci** v routeru, aby se adresa po obnově lease nezměnila.
- **Stejný LAN segment** — TapHome CCU a žárovka musí být ve stejné broadcast doméně. Pokud jsou Wi-Fi a drátoví klienti v různých VLAN, přidej firewall pravidlo povolující TCP 55443 mezi nimi.

### Importní parametry

Během importu šablony v TapHome uživatel zadává tři hodnoty:

| Parametr | Popis | Výchozí hodnota |
|----------|-------|------------------|
| `ipAddress` | IP adresa Yeelight žárovky v LAN | `192.168.0.1` (placeholder — nahraď skutečnou IP) |
| `Port` | TCP ovládací port žárovky | `55443` |
| `Internal poll interval` | Interval, v jakém šablona posílá `get_prop` (v milisekundách) | `10000` (10 s) |

Výchozí port `55443` je standardní Yeelight LAN Control port a neměl by se měnit, pokud žárovka nebyla nakonfigurována na nestandardní port.

> [!TIP]
> Mezi polly šablona také reaguje na notifikace `props`, které žárovka sama posílá při každé změně stavu. V praxi to znamená, že změny jasu nebo zapnutí/vypnutí provedené z aplikace Yeelight, nástěnného vypínače nebo jiné instance Home Assistant se v TapHome projeví téměř okamžitě, bez čekání na další poll.

## Možnosti zařízení

### Stmívač (jas a zapnutí/vypnutí)

Šablona zpřístupňuje jedno stmívačové zařízení. Při každém pollu posílá:

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

a zpracuje odpověď `result[0]` (jas 1–100, dělený 100 na rozsah TapHome 0.0–1.0) a `result[1]` (`"on"` / `"off"`).

Zápisy se překládají na dva JSON-RPC příkazy:

- Pokud je cílová úroveň větší než nula, šablona pošle `set_power ["on","smooth",300]` a následně `set_bright [round(level*100),"smooth",500]`. 300 ms přechod pro zapnutí a 500 ms přechod pro jas poskytují jemný fade namísto tvrdého skoku.
- Pokud je cílová úroveň nula, šablona pošle `set_power ["off","smooth",300]`.

Stmívač také zpracovává notifikace `props` posílané žárovkou (power / brightness), takže externí změny stavu se v TapHome projeví bez čekání na další poll.

### Barevný režim a teplota bílé (pouze pro čtení)

Dva servisní atributy na úrovni modulu se čtou samostatným `get_prop` požadavkem (`id=981`):

- **Color mode** — `RGB`, `Temperature` nebo `HSV`, dekódované z číselné vlastnosti `color_mode` (1 / 2 / 3) pomocí výrazu `SWITCH` v listener skriptu.
- **Color temperature** — hodnota v Kelvinech reportovaná jako `"{ct}K"` (například `"4000K"`). Smysluplná pouze tehdy, když je žárovka v režimu Temperature. Typický rozsah podle modelu: **1700–6500 K** pro barevné žárovky a pásky, **2700–6500 K** pro stropní svítidla (ceiling3 je omezen na 6000 K).

Oba atributy jsou pouze diagnostické — šablona neumí přepnout barevný režim ani zapsat novou teplotu bílé.

### Další možnosti

Yeelight LAN protokol rovněž nabízí ovládání barev RGB a HSV (`set_rgb`, `set_hsv`), nastavení teploty bílé (`set_ct_abx`), programy barevných změn (`start_cf` / `stop_cf`), předdefinované scény (`set_scene`), časovače spánku na žárovce (`cron_add`), ovládání zadního světla na dvousvětelných svítidlech (`bg_*` metody) a music mode (`set_music`, reverzní TCP kanál obcházející rate limit). Žádnou z těchto funkcí současná TapHome šablona stmívače neimplementuje — uživatelé, kteří potřebují plnou barvu nebo efekty, musí šablonu rozšířit nebo používat souběžně nativní Yeelight aplikaci.

> [!TIP]
> Barvu, teplotu bílé a scény lze přidat v budoucí aktualizaci šablony přes stejný TCP kanál. Read/write skripty PacketParser lze rozšířit o `set_ct_abx`, `set_rgb` nebo `set_scene` bez změny importních parametrů.

## Řešení problémů

### Žárovka nereaguje na příkazy

1. Ověř, že **LAN Control** je na žárovce zapnutý (Yeelight app → nastavení žárovky → LAN Control). Bez něj žárovka odmítá všechna TCP spojení na portu 55443.
2. Zkontroluj IP adresu žárovky v aplikaci Yeelight nebo v DHCP tabulce routeru a ujisti se, že odpovídá importnímu parametru `ipAddress`. Yeelight žárovky ve výchozím nastavení nemají pevnou IP — lease mohl vypršet a adresa se změnila.
3. Přiděl žárovce statickou IP nebo DHCP rezervaci, aby se adresa neměnila.
4. Zkontroluj, že TapHome CCU a žárovka jsou ve stejné LAN / VLAN a že TCP `55443` není blokován firewallem mezi nimi.
5. Otestuj spojení manuálně: `telnet {bulb-ip} 55443` a pošli surový request ukončený `\r\n`:

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

   Platná žárovka odpoví `{"id":1,"result":["<bright>","<power>"]}`.

### Read error: client quota exceeded

Každé TCP spojení k Yeelight žárovce je omezeno na **60 příkazů za minutu** a žárovka akceptuje maximálně **4 souběžná spojení** (dohromady 144 příkazů/minutu v celé LAN). Pokud žárovku souběžně polluje jiný systém — Home Assistant, cloudová session Yeelight, vlastní skript — spojený provoz může způsobit chyby rate-limitu, které se v TapHome hlásí jako `Read error: client quota exceeded`.

1. Vypni nebo zpomal ostatní integrace, které sdílejí žárovku.
2. Ponech interval pollu v TapHome na výchozí hodnotě `10000` ms nebo vyšší. Jeden `get_prop` plus dva `set_*` zápisy na změnu bezpečně zůstávají pod kvótou 60 příkazů/minutu.
3. Zavři nepoužívané `telnet` debug sessions — ty se počítají do limitu 4 spojení.

### Servisní atribut Color temperature ukazuje "error"

Servisní atributy Color mode a Color temperature čtou `color_mode` a `ct` ze žárovky. Pokud jde o **mono** model (pouze bílá), který nepodporuje nastavitelnou bílou, nebo pokud je žárovka právě v režimu RGB nebo HSV, hodnota `ct` není smysluplná a listener skript hlásí Color temperature jako `"error"`. Jde o očekávané chování, ne o chybu.

### Změny v aplikaci Yeelight se neprojeví

Šablona reaguje na notifikace `props` posílané žárovkou, takže externí změny se běžně projeví do sekundy. Pokud ne:

1. Notifikace mohla přijít v okamžiku, kdy se TCP socket obnovoval — následující poll (výchozí 10 s) je zresynchronizuje.
2. Některé starší firmwary posílají notifikace pouze při aktivně odeslaném příkazu. Aktualizuj firmware žárovky přes aplikaci Yeelight.
3. Žárovka možná dosáhla limitu 4 spojení — sniž počet souběžných klientů v LAN.

## Dostupná zařízení 1

Tato zařízení se po importu zobrazí v TapHome.

Yeelight modul Modul

Servisní atributy

|               |                                                                                                                                                                                                                     |
|---------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Barevný režim | Aktivní barevný režim hlášený žárovkou — RGB, Temperature (nastavitelná bílá) nebo HSV. Pouze pro čtení — šablona barevný režim nepřepíná.                                                                          |
| Teplota bílé  | Aktuální bílý bod v Kelvinech (platný pouze v režimu Temperature). Pouze pro čtení — šablona teplotu bílé nezapisuje. Rozsah dle modelu: 1700–6500 K pro barevné žárovky a pásky, 2700–6500 K pro stropní svítidla. |

Vlastní proměnné

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
```

Servisní atributy

Color mode

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

Color temperature

```

```

Yeelight stmívač Stmívač Čtení i zápis

Jas (0–100 %) a zapnutí/vypnutí s plynulými přechody 300–500 ms. Barvu, teplotu bílé a efekty tato šablona nezpřístupňuje.

numeric Jednotka: brightness 0–100 %

Proměnná: `receiveError`, Proměnná: `notificationError`, Proměnná: `sendError`

Čtení úrovně

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

Zápis úrovně

```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
```

**Připojení:** Packet Parser → TCP

Možná vylepšení (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.

## Parametry importu

Tyto hodnoty zadáte při importu XML.

| Ptá se v aplikaci      | Výchozí       |
|------------------------|---------------|
| IP adresa              | `192.168.0.1` |
| Port                   | `55443`       |
| Internal poll interval | `10000`       |

## Zdroje

- 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

Dokumenty výrobců jsou © jejich příslušných vlastníků. Poskytujeme je tak, jak je výrobce zveřejnil, pouze pro informaci.

## Související dokumentace

- [Integrace Packet Parser](https://taphome.com/cs/compatibility/packet-parser-guide/)
- [Packet Parser (HTTP, TCP, UDP, FTP, MQTT)](https://taphome.com/cs/docs/integration/packet-parser/)
- [Funkce Packet parser](https://taphome.com/cs/docs/script/packet-parser/)
- [Funkce pro parsování](https://taphome.com/cs/docs/script/parsing-functions/)

