TapHome

Yeelight Color

Packet Parser → TCP
Přidal
Poslední aktualizace: 06. 2026
Yeelight Color

Šablona Yeelight Color rozšiřuje čistě stmívací šablonu Yeelight o plné HSB řízení barev a nastavitelnou bílou (teplotu bílé). Cílí na stejnou rodinu Wi-Fi smart LED — barevné žárovky, pásky a stropní svítidla — s použitím identického Yeelight Inter-Operation Protocol na TCP portu 55443. Klíčový rozdíl je model zařízení: místo jednoduchého stmívače šablona zpřístupňuje PacketParserHSBLight, který dává TapHome nativní vlastnosti odstínu, sytosti, jasu a teploty bílé v jednom zařízení.

TapHome komunikuje se žárovkou přímo v lokální síti přes JSON-RPC — po povolení LAN Control na žárovce není potřeba cloudové připojení. Šablona polluje všech šest barevných vlastností naráz a reaguje na props notifikace zasílané žárovkou, takže změny z aplikace Yeelight nebo jiného ovladače se v TapHome objeví téměř okamžitě.

Hardwarové připojení

Yeelight žárovky jsou napájeny ze standardní sítě (typicky E27, E14, GU10 nebo 24V napájecí zdroj pro LED pásek 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 nemá autentifikaci ani šifrování a provoz nikdy neprochází přes Yeelight cloud.

Yeelight LAN protokol je nešifrovaný. Nevystavujte TCP port 55443 na veřejný internet a umístěte žárovky do důvěryhodného síťového segmentu — kdokoliv s přístupem do LAN může žárovce posílat příkazy.

Konfigurace

Povolení LAN Control

LAN Control (v některých regionech nazývaný Developer Mode) je na žárovce standardně vypnutý. Bez něj jsou TCP připojení na portu 55443 odmítnuta.

  1. Otevřete mobilní aplikaci Yeelight a spárujte žárovku s lokální Wi-Fi sítí procedurou SmartConfig / QuickConnect, pokud ještě není spárována.
  2. Vyberte cílovou žárovku v aplikaci.
  3. Klepněte na ikonu nastavení (vpravo nahoře) a otevřete LAN Control (v některých verzích firmwaru označené jako Developer Mode).
  4. Přepněte LAN Control na ON.
  5. Poznamenejte si IP adresu žárovky — zobrazuje se v informacích o zařízení v aplikaci Yeelight nebo ji najdete v tabulce DHCP pronájmů routeru.

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

Nastavení sítě
  • IP adresa — TapHome šablona neobjevuje žárovky automaticky. Přiřaďte statickou IP nebo DHCP rezervaci v routeru, aby se adresa žárovky po obnovení pronájmu nezměnila.
  • Stejný LAN segment — TapHome CCU a žárovka musí být ve stejné broadcastové doméně. Pokud jsou Wi-Fi a kabelová zařízení v oddělených VLAN, přidejte pravidlo firewallu povolující TCP 55443 mezi nimi.
Importní parametry

Při importu šablony v TapHome uživatel zadává tři hodnoty:

ParametrPopisVýchozí hodnota
ipAddressIP adresa Yeelight žárovky v LAN192.168.0.1 (zástupná — nahraďte skutečnou IP)
PortTCP řídicí port na žárovce55443
Internal poll intervalJak často š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 není nakonfigurována na nestandardní port.

Mezi pollováním šablona reaguje i na props notifikace, které žárovka posílá při změně stavu. V praxi to znamená, že změny barvy, jasu a zapnutí/vypnutí z aplikace Yeelight, nástěnného přepínače nebo jiného ovladače se v TapHome objeví téměř okamžitě, bez čekání na další poll.

Schopnosti zařízení

HSB barevné světlo (odstín, sytost, jas a zapnutí/vypnutí)

Šablona zpřístupňuje jedno HSB světelné zařízení. V každém pollovacím cyklu posílá get_prop požadavek na všech šest vlastností naráz:

1
{"id":951,"method":"get_prop","params":["hue","sat","bright","power","ct","color_mode"]}

Listener skript parsuje odpověď a mapuje ji na nativní TapHome vlastnosti:

  • Hue (Hd) — result[0], celé číslo 0–359 stupňů
  • Saturation (Sa) — result[1], procenta 0–100, děleno 100 na TapHome rozsah 0,0–1,0
  • Brightness (Hb) — result[2], procenta 1–100, děleno 100 na TapHome rozsah 0,0–1,0
  • Power (St) — result[3], "on" mapováno na 1, "off" mapováno na 0 (jas se také nastaví na 0 při vypnutí)
  • Color temperature (Ct) — result[4], hodnota v Kelvinech nastavená jen když color_mode = 2 (režim bílé); jinak nastavená na NaN
  • Color moderesult[5], určuje, zda se Ct zapisuje (1 = RGB, 2 = Temperature, 3 = HSV)
Přepínání barevného režimu

Šablona používá vlastnost Ct k určení aktivního barevného režimu:

  • Ct = NaN — žárovka je v HSV barevném režimu. Zápisy používají set_hsv pro odstín a sytost.
  • Ct = číslo — žárovka je v režimu bílé (teplota bílé). Zápisy používají set_ct_abx.

TapHome neposílá explicitní příkaz pro přepnutí režimu. Místo toho uživatel nastaví teplotu bílé na číselnou hodnotu pro vstup do režimu bílé, nebo ji nastaví na NaN (výběrem barvy v HSB výběru) pro vstup do HSV režimu. Zápisové skripty kontrolují Ct před odesláním a přeskočí irelevantní příkaz — writesaturation se okamžitě vrátí pokud Ct není NaN a writecct se okamžitě vrátí pokud Ct je NaN.

Zápisové příkazy

Tři zápisové skripty řídí různé aspekty světla:

  • Jas / napájení (writebrightness) — pokud jas > 0, pošle set_power ["on","smooth",300] následované set_bright [úroveň,"smooth",300]. Pokud jas = 0, pošle set_power ["off","smooth",300].
  • Odstín a sytost (writesaturation) — pošle set_power ["on","smooth",300] následované set_hsv [odstín, sytost,"smooth",300]. Spustí se jen když Ct = NaN (HSV režim).
  • Teplota bílé (writecct) — pošle set_power ["on","smooth",300] následované set_ct_abx [ct,"smooth",300]. Spustí se jen když Ct je číslo (režim bílé). Platný rozsah: 1700–6500 K (přesné limity závisí na modelu žárovky).

Všechny zápisy používají 300 ms plynulý přechod pro jemné ztlumení místo tvrdého skoku. Po každém zápisu se proměnná debounce nastaví na 1, což způsobí přeskočení následujícího pollovacího cyklu — tím se zabrání čtení zastaralého stavu během přechodu žárovky.

Diagnostika služeb

Dva servisní atributy na úrovni modulu se čtou přes samostatný get_prop požadavek (id=981):

  • Barevný režimRGB, Temperature nebo HSV, dekódovaný z číselné vlastnosti color_mode (1 / 2 / 3) pomocí výrazu SWITCH v listener skriptu modulu.
  • Teplota bílé — hodnota v Kelvinech hlášená jako "{ct}K" (například "4000K"). Smysluplná jen když je žárovka v režimu Temperature.

Tyto atributy jsou diagnostické pouze pro čtení — skutečné řízení teploty bílé probíhá přes vlastnost Ct na úrovni zařízení a skript writecct popsaný výše.

Řešení problémů

Žárovka nereaguje na příkazy
  1. Ověřte, že LAN Control je na žárovce povolen (aplikace Yeelight → nastavení žárovky → LAN Control). Bez něj žárovka odmítá všechna TCP připojení na portu 55443.

  2. Potvrďte IP žárovky v aplikaci Yeelight nebo v tabulce DHCP pronájmů routeru a ujistěte se, že odpovídá importnímu parametru ipAddress. Yeelight žárovky si standardně neuchovávají fixní IP — pronájem mohl vypršet a IP se změnit.

  3. Přiřaďte žárovce statickou IP nebo DHCP rezervaci, aby se adresa neměnila.

  4. Zkontrolujte, že TapHome CCU a žárovka jsou ve stejné LAN / VLAN a že TCP 55443 není blokován firewallem mezi nimi.

  5. Otestujte konektivitu manuálně: telnet {bulb-ip} 55443 a pošlete surový request následovaný \r\n:

    1
    
    {"id":1,"method":"get_prop","params":["hue","sat","bright","power","ct","color_mode"]}
    

    Funkční žárovka odpoví {"id":1,"result":["<hue>","<sat>","<bright>","<power>","<ct>","<color_mode>"]}.

Barevné příkazy jsou ignorovány (odstín/sytost se nemění)

Skript writesaturation kontroluje Ct před odesláním set_hsv. Pokud je Ct nastaveno na číselnou hodnotu (režim bílé), skript se vrátí bez odeslání jakéhokoli příkazu. Pro ovládání HSV barvy nejprve nastavte teplotu bílé na NaN výběrem barvy v TapHome HSB výběru.

Podobně writecct se vrátí bez odeslání pokud Ct = NaN (HSV režim). Pro zápis teploty bílé musí být žárovka již v režimu bílé.

Chyba čtení: client quota exceeded

Každé TCP připojení k Yeelight žárovce je omezeno na 60 příkazů za minutu a žárovka akceptuje maximálně 4 souběžná připojení celkem. Pokud další systém polluje žárovku současně — Home Assistant, Yeelight cloudová relace, vlastní skript — kombinovaný provoz může vyvolat chyby limitu.

  1. Vypněte nebo zpomalte ostatní integrace sdílející žárovku.
  2. Ponechte TapHome poll interval na výchozích 10000 ms nebo vyšších. Barevná šablona posílá jedno get_prop na poll plus až tři set_* zápisy na změnu, což je hluboko pod kvótou 60 cmd/min.
  3. Zavřete nepoužívané telnet debug relace — počítají se do limitu 4 připojení.
Chyba z��pisu HueSat nebo teploty bílé

Listener skript sleduje chyby zápisu samostatně pro každý typ příkazu — writeErrorBrightness pro zápisy napájení/jasu, writeErrorHueSat pro set_hsv zápisy a writeErrorCt pro set_ct_abx zápisy. Pokud se objeví chyba:

  1. Potvrďte, že žárovka je zapnuta — všechny set_* příkazy kromě set_power jsou akceptovány jen když je žárovka ve stavu on.
  2. Ověřte, že hodnota teploty bílé je v rozsahu specifickém pro model (typicky 1700–6500 K pro barevné žárovky, 2700–6500 K pro stropní svítidla, 2700–6000 K pro ceiling3).
  3. Zkontrolujte surovou chybovou zprávu v TapHome diagnostice služeb pro konkrétní chybový kód vrácený žárovkou.
Změny z aplikace Yeelight se neprojevují

Šablona reaguje na props notifikace zasílané žárovkou, takže externí změny se normálně objeví do sekundy. Pokud ne:

  1. Notifikace mohla dorazit během opětovného navazování TCP socketu — následující poll (výchozí 10 s) stav zsynchronizuje.
  2. Některé starší verze firmwaru posílají notifikace jen když se aktivně posílá příkaz. Aktualizujte firmware žárovky z aplikace Yeelight.
  3. Žárovka mohla dosáhnout limitu 4 připojení — snižte počet souběžných klientů v LAN.

Yeelight zařízení podporují pouze 4 souběžná TCP připojení a 60 příkazů za minutu na připojení. Pokud TapHome a jiný systém (např. Home Assistant) pollují stejnou žárovku současně, komunikace může být nespolehlivá. Používejte poll interval 10 sekund nebo vyšší.

Dostupná zařízení

Yeelight color modul Modul
Servisní atributy
Barevný režimAktuální barevný režim žárovky — RGB, Temperature nebo HSV — dekódovaný z vlastnosti color_mode
Teplota bíléTeplota bílé v Kelvinech, hlášená pouze když je žárovka v režimu Temperature (color_mode=2)

Yeelight color module

Listener
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
VAR json := "{\"id\":981, \"method\":\"get_prop\", \"params\":[\"color_mode\", \"ct\"]}";
SENDDATA(json);

RETURN(NULL);
Color temperature
HSB světlo HSB světlo

Plnobarevné HSB světlo s podporou teploty bílé — ovládá odstín, sytost, jas a zapnutí/vypnutí přes set_hsv, set_ct_abx a set_bright s plynulými přechody

numeric Jednotka: hue 0-359, sat/bright 0-100 %, CCT 2700-6500 K

HSB světlo

Čtení (modul)
IF(debounce > 0)
    debounce := 0;
ELSE
    VAR json := "{\"id\":951, \"method\":\"get_prop\", \"params\":[\"hue\", \"sat\", \"bright\", \"power\", \"ct\", \"color_mode\"]}";
    SENDDATA(json);
END
Listener
VAR jsonResponse := TOSTRING(RECEIVEDBYTES);
VAR method := PARSEJSON(jsonResponse, "method", 1);
VAR id := PARSEJSON(jsonResponse, "id", 1);
VAR error := PARSEJSON(jsonResponse, "error.message", 1);

#response to ReadScript
IF(id = 951)
   receiveError1 := error;
   
   IF(LENGTH(receiveError1) = 0)
      VAR hueStr := PARSEJSON(jsonResponse, "result[0]", 1);
      VAR satStr := PARSEJSON(jsonResponse, "result[1]", 1);
      VAR brightnessStr := PARSEJSON(jsonResponse, "result[2]", 1);
      VAR onOffStr := PARSEJSON(jsonResponse, "result[3]", 1);
      VAR ctStr := PARSEJSON(jsonResponse, "result[4]", 1);
      VAR colorModeStr := PARSEJSON(jsonResponse, "result[5]", 1);
      
      IF(!ISNULL(hueStr))
         Hd := TODOUBLE(hueStr);
      END

      IF(!ISNULL(satStr))
        Sa := TODOUBLE(satStr) / 100.0;
      END
      
      IF(!ISNULL(brightnessStr))
        Hb := TODOUBLE(brightnessStr) / 100.0;
      END
   
      VAR cm := TODOUBLE(colorModeStr);
      IF(!ISNULL(ctStr) AND cm = 2)
        Ct := TODOUBLE(ctStr);
      ELSE
        Ct := NaN;
      END
      
      IF(onOffStr = "on")
         St := 1;
      ELSEIF(onOffStr = "off")
         Hb := 0;
         St := 0;
      END
   END
ELSEIF(id = 952)
   receiveError2 := error;
   
   IF(LENGTH(receiveError2) = 0)
      brightnessStr := PARSEJSON(jsonResponse, "result[0]", 1);
      
      IF(!ISNULL(brightnessStr))
        Hb := TODOUBLE(brightnessStr) / 100.0;
      END
   END
END

IF(id >= 941 AND id <= 942)
   writeErrorBrightness := error;
ELSEIF(id = 943)
   writeErrorHueSat := error;
ELSEIF(id = 944)
   writeErrorCt := error;
END

#general notification
IF(method = "props")
   notificationError := error;
   
   IF(LENGTH(notificationError) = 0)
      VAR brightJson := PARSEJSON(jsonResponse, "params.bright", 1);
      VAR onOffJson := PARSEJSON(jsonResponse, "params.power", 1);
      VAR hue := PARSEJSON(jsonResponse, "params.hue", 1);
      VAR sat := PARSEJSON(jsonResponse, "params.sat", 1);
      VAR colorMode := PARSEJSON(jsonResponse, "params.color_mode", 1);
      VAR ctJson := PARSEJSON(jsonResponse, "params.ct", 1);
      
      IF(!ISNULL(brightJson))
         Hb := brightJson / 100.0;
      END
      
      IF(!ISNULL(hue))
         Hd := hue;
         Ct := NaN;
      END      

      IF(!ISNULL(sat))
        Sa := sat / 100;
        Ct := NaN;
      END 
      
      IF(!ISNULL(ctJson))
        Ct := ctJson;
      END 
      
      IF(onOffJson = "on")
         St := 1;
         IF(ISNULL(brightJson))
            SENDDATA("{\"id\":952, \"method\":\"get_prop\", \"params\":[\"bright\"]}");
         END
      ELSEIF(onOffJson = "off")
         Hb := 0;
         St := 0;
      END
   END
END

IF(LENGTH(receiveError1) > 0)
   ADDERROR(951, "Read error: " + receiveError1);
END

IF(LENGTH(receiveError2) > 0)
   ADDERROR(952, "Read error: " + receiveError2);
END

IF(LENGTH(writeErrorBrightness) > 0)
   ADDERROR(941, "Brightness write error: " + writeErrorBrightness);
END

IF(LENGTH(writeErrorHueSat) > 0)
   ADDERROR(943, "HueSat write error: " + writeErrorHueSat);
END

IF(LENGTH(writeErrorCt) > 0)
   ADDERROR(944, "Color temperature write error: " + writeErrorCt);
END

IF(LENGTH(notificationError) > 0)
   ADDERROR(1, notificationError);
END
Zápis jasu
IF(Hb > 0)
    VAR jsonBrightness := "{\"id\":941,\"method\":\"set_power\",\"params\":[\"on\", \"smooth\", 300]}\r\n{\"id\":942,\"method\":\"set_bright\",\"params\":[" + ROUND(Hb*100) + ",\"smooth\", 300]}";
    SENDDATA(jsonBrightness);
ELSE
    VAR jsonPowerOff := "{\"id\":942,\"method\":\"set_power\",\"params\":[\"off\", \"smooth\", 300]}";
    SENDDATA(jsonPowerOff);
END

debounce := 1;
Zápis saturace
#do not send HUESAT when COLOR mode is active
IF !ISNAN(Ct)
    RETURN(0);
END

VAR hueSatJson := "{\"id\":941,\"method\":\"set_power\",\"params\":[\"on\", \"smooth\", 300]}\r\n{\"id\":943,\"method\":\"set_hsv\",\"params\":[" + ROUND(MOD(Hd, 360)) + ", " + ROUND(Sa*100) + ", \"smooth\", 300]}";

SENDDATA(hueSatJson);
debounce := 1;
Zápis barevné teploty
#do not set CT in COLOR mode
IF ISNAN(Ct)
    RETURN(0);
END

VAR ctJson := "{\"id\":941,\"method\":\"set_power\",\"params\":[\"on\", \"smooth\", 300]}\r\n{\"id\":944,\"method\":\"set_ct_abx\",\"params\":[" + Ct + ", \"smooth\", 300]}";
SENDDATA(ctJson);

debounce := 1;
Připojení: Packet Parser → TCP
Možná vylepšení (12)
  • Set RGB color — Write full RGB color (0-16777215). Template uses set_hsv instead, which maps naturally to the HSBLight device model.
  • Color flow — Scripted sequences of brightness / color / CT changes (sunrise effect, strobe, ambient cycles). Not exposed by this template.
  • Set scene — Jump directly to a predefined state (color, hsv, ct, cf, auto_delay_off). Not exposed by this 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 values.
  • Save current state as power-on default — Persist current brightness/color to flash so it survives a hard power cut. Not exposed by this template.
  • Set device name — Set device name (max 64 bytes). Not exposed by this template.
  • Background light control — Secondary light channel on dual-light fixtures (e.g., some ceiling lights). Not exposed by this template.
  • Extended notification properties — Additional properties pushed via props notifications. Template consumes hue, sat, bright, power, color_mode and ct — remaining properties (rgb, flowing, delayoff, music_on, name) are ignored.
  • 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.

Zdroje

Našli jste problém s touto šablonou zařízení?

Napište nám, co nefunguje, co chybí, nebo jak by se měla šablona chovat. Vaše zpětná vazba nám pomáhá udržet katalog přesný.

Ověřeno TapHome

Chcete to použít ve svém TapHome jádře?

Otevřete tuto šablonu v zákaznickém portálu a použijte ji ve svém domově, nebo navrhněte úpravu a odešlete ji zpět do katalogu.

Otevřít v portálu