TapHome

Yeelight Color

Packet Parser → TCP
Pridal
Posledná aktualizácia: 05. 2026
Yeelight Color

Šablóna Yeelight Color rozširuje čisto stmievaciu šablónu Yeelight o plné HSB riadenie farieb a nastaviteľnú bielu (teplotu bielej). Cieli na rovnakú rodinu Wi-Fi smart LED — farebné žiarovky, pásy a stropné svietidlá — s použitím identického Yeelight Inter-Operation Protocol na TCP porte 55443. Kľúčový rozdiel je model zariadenia: namiesto jednoduchého stmievača šablóna sprístupňuje PacketParserHSBLight, ktorý dáva TapHome natívne vlastnosti odtieňa, sýtosti, jasu a teploty bielej v jednom zariadení.

TapHome komunikuje so žiarovkou priamo v lok��lnej sieti cez JSON-RPC — po povolení LAN Control na žiarovke nie je potrebné cloudové pripojenie. Šablóna polluje všetkých šesť farebných vlastností naraz a reaguje na props notifikácie posielané žiarovkou, takže zmeny z aplikácie Yeelight alebo iného ovládača sa v TapHome objavia takmer okamžite.

Hardvérové pripojenie

Yeelight žiarovky sú napájané zo štandardnej siete (typicky E27, E14, GU10 alebo 24 V napájací zdroj pre LED pás podľa produktu). Medzi TapHome a žiarovkou nie je potrebná žiadna kabeláž — celá komunikácia prebieha cez Wi-Fi. Žiarovka musí byť v rovnakej LAN / VLAN ako TapHome CCU, pretože JSON-RPC protokol nemá autentifikáciu ani šifrovanie a prevádzka nikdy neprechádza cez Yeelight cloud.

Yeelight LAN protokol je nešifrovaný. Nevystavujte TCP port 55443 na verejný internet a umiestnite žiarovky do dôveryhodného sieťového segmentu — ktokoľvek s prístupom do LAN môže žiarovke posielať príkazy.

Konfigurácia

Povolenie LAN Control

LAN Control (v niektorých regiónoch nazývaný Developer Mode) je na žiarovke štandardne vypnutý. Bez neho sú TCP pripojenia na porte 55443 odmietnuté.

  1. Otvorte mobilnú aplikáciu Yeelight a spárujte žiarovku s lokálnou Wi-Fi sieťou procedúrou SmartConfig / QuickConnect, ak ešte nie je spárovaná.
  2. Vyberte cieľovú žiarovku v aplikácii.
  3. Ťuknite na ikonu nastavení (vpravo hore) a otvorte LAN Control (v niektorých verziách firmvéru označené ako Developer Mode).
  4. Prepnite LAN Control na ON.
  5. Poznačte si IP adresu žiarovky — zobrazuje sa v informáciách o zariadení v aplikácii Yeelight alebo ju nájdete v tabuľke DHCP prenájmov routera.

Po povolení LAN Control žiarovka počúva na TCP porte 55443 a pravidelne sa oznamuje cez UDP multicast 239.255.255.250:1982.

Nastavenie siete
  • IP adresa — TapHome šablóna neobjavuje žiarovky automaticky. Priraďte statickú IP alebo DHCP rezerváciu v routeri, aby sa adresa žiarovky po obnovení prenájmu nezmenila.
  • Rovnaký LAN segment — TapHome CCU a žiarovka musia byť v rovnakej broadcastovej doméne. Ak sú Wi-Fi a káblové zariadenia v oddelených VLAN, pridajte pravidlo firewallu povoľujúce TCP 55443 medzi nimi.
Importné parametre

Pri importe šablóny v TapHome používateľ zadáva tri hodnoty:

ParameterPopisPredvolená hodnota
ipAddressIP adresa Yeelight žiarovky v LAN192.168.0.1 (zástupná — nahraďte skutočnou IP)
PortTCP riadiaci port na žiarovke55443
Internal poll intervalAko často šablóna posiela get_prop (v milisekundách)10000 (10 s)

Predvolený port 55443 je štandardný Yeelight LAN Control port a nemal by sa meniť, pokiaľ žiarovka nie je nakonfigurovaná na neštandardný port.

Medzi pollovaním šablóna reaguje aj na props notifikácie, ktoré žiarovka posiela pri zmene stavu. V praxi to znamená, že zmeny farby, jasu a zapnutia/vypnutia z aplikácie Yeelight, nástenného prepínača alebo iného ovládača sa v TapHome objavia takmer okamžite, bez čakania na ďalší poll.

Schopnosti zariadenia

HSB farebné svetlo (odtieň, sýtosť, jas a zapnutie/vypnutie)

Šablóna sprístupňuje jedno HSB svetelné zariadenie. V každom pollovacom cykle posiela get_prop požiadavku na všetkých šesť vlastností naraz:

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

Listener skript parsuje odpoveď a mapuje ju na natívne TapHome vlastnosti:

  • Hue (Hd) — result[0], celé číslo 0–359 stupňov
  • Saturation (Sa) — result[1], percentá 0–100, delené 100 na TapHome rozsah 0,0–1,0
  • Brightness (Hb) — result[2], percentá 1–100, delené 100 na TapHome rozsah 0,0–1,0
  • Power (St) — result[3], "on" mapované na 1, "off" mapované na 0 (jas sa tiež nastaví na 0 pri vypnutí)
  • Color temperature (Ct) — result[4], hodnota v Kelvinoch nastavená len keď color_mode = 2 (režim bielej); inak nastavená na NaN
  • Color moderesult[5], určuje, či sa Ct zapisuje (1 = RGB, 2 = Temperature, 3 = HSV)
Prepínanie farebného režimu

Šablóna používa vlastnosť Ct na určenie aktívneho farebného režimu:

  • Ct = NaN — žiarovka je v HSV farebnom režime. Zápisy používajú set_hsv pre odtieň a sýtosť.
  • Ct = číslo — žiarovka je v režime bielej (teplota bielej). Zápisy používajú set_ct_abx.

TapHome neposiela explicitný príkaz na prepnutie režimu. Namiesto toho používateľ nastaví teplotu bielej na číselnú hodnotu pre vstup do režimu bielej, alebo ju nastaví na NaN (výberom farby v HSB výbere) pre vstup do HSV režimu. Zápisové skripty kontrolujú Ct pred odoslaním a preskočia irelevantný príkaz — writesaturation sa okamžite vráti ak Ct nie je NaN a writecct sa okamžite vráti ak Ct je NaN.

Zápisové príkazy

Tri zápisové skripty riadia rôzne aspekty svetla:

  • Jas / napájanie (writebrightness) — ak jas > 0, pošle set_power ["on","smooth",300] nasledované set_bright [úroveň,"smooth",300]. Ak jas = 0, pošle set_power ["off","smooth",300].
  • Odtieň a sýtosť (writesaturation) — pošle set_power ["on","smooth",300] nasledované set_hsv [odtieň, sýtosť,"smooth",300]. Spustí sa len keď Ct = NaN (HSV režim).
  • Teplota bielej (writecct) — pošle set_power ["on","smooth",300] nasledované set_ct_abx [ct,"smooth",300]. Spustí sa len keď Ct je číslo (režim bielej). Platný rozsah: 1700–6500 K (presné limity závisia od modelu žiarovky).

Všetky zápisy používajú 300 ms plynulý prechod pre jemné stlmenie namiesto tvrdého skoku. Po každom zápise sa premenná debounce nastaví na 1, čo spôsobí preskočenie nasledujúceho pollovacieho cyklu — tým sa zabráni čítaniu zastaralého stavu počas prechodu žiarovky.

Diagnostika služieb

Dva servisné atribúty na úrovni modulu sa čítajú cez samostatnú get_prop požiadavku (id=981):

  • Farebný režimRGB, Temperature alebo HSV, dekódovaný z číselnej vlastnosti color_mode (1 / 2 / 3) pomocou výrazu SWITCH v listener skripte modulu.
  • Teplota bielej — hodnota v Kelvinoch hlásená ako "{ct}K" (napríklad "4000K"). Zmysluplná len keď je žiarovka v režime Temperature.

Tieto atribúty sú diagnostické len na čítanie — skutočné riadenie teploty bielej prebieha cez vlastnosť Ct na úrovni zariadenia a skript writecct popísaný vyššie.

Riešenie problémov

Žiarovka nereaguje na príkazy
  1. Overte, že LAN Control je na žiarovke povolený (aplikácia Yeelight → nastavenia žiarovky → LAN Control). Bez neho žiarovka odmieta všetky TCP pripojenia na porte 55443.

  2. Potvrďte IP žiarovky v aplikácii Yeelight alebo v tabuľke DHCP prenájmov routera a uistite sa, že zodpovedá importnému parametru ipAddress. Yeelight žiarovky si štandardne neuchovávajú fixnú IP — prenájom mohol vypršať a IP sa zmeniť.

  3. Priraďte žiarovke statickú IP alebo DHCP rezerváciu, aby sa adresa nemenila.

  4. Skontrolujte, že TapHome CCU a žiarovka sú v rovnakej LAN / VLAN a že TCP 55443 nie je blokovaný firewallom medzi nimi.

  5. Otestujte konektivitu manuálne: telnet {bulb-ip} 55443 a pošlite surový request nasledovaný \r\n:

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

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

Farebné príkazy sú ignorované (odtieň/sýtosť sa nemení)

Skript writesaturation kontroluje Ct pred odoslaním set_hsv. Ak je Ct nastavené na číselnú hodnotu (režim bielej), skript sa vráti bez odoslania akéhokoľvek príkazu. Pre ovládanie HSV farby najprv nastavte teplotu bielej na NaN výberom farby v TapHome HSB výbere.

Podobne writecct sa vráti bez odoslania ak Ct = NaN (HSV režim). Pre zápis teploty bielej musí byť žiarovka už v režime bielej.

Chyba čítania: client quota exceeded

Každé TCP pripojenie k Yeelight žiarovke je obmedzené na 60 príkazov za minútu a žiarovka akceptuje maximálne 4 súbežné pripojenia celkovo. Ak ďalší systém polluje žiarovku súčasne — Home Assistant, Yeelight cloudová relácia, vlastný skript — kombinovaná prevádzka môže vyvolať chyby limitu.

  1. Vypnite alebo spomaľte ostatné integrácie zdieľajúce žiarovku.
  2. Ponechajte TapHome poll interval na predvolených 10000 ms alebo vyšších. Farebná šablóna posiela jedno get_prop na poll plus až tri set_* zápisy na zmenu, čo je hlboko pod kvótou 60 cmd/min.
  3. Zatvorte nepoužívané telnet debug relácie — počítajú sa do limitu 4 pripojení.
Chyba zápisu HueSat alebo teploty bielej

Listener skript sleduje chyby zápisu samostatne pre každý typ príkazu — writeErrorBrightness pre zápisy napájania/jasu, writeErrorHueSat pre set_hsv zápisy a writeErrorCt pre set_ct_abx zápisy. Ak sa objaví chyba:

  1. Potvrďte, že žiarovka je zapnutá — všetky set_* príkazy okrem set_power sú akceptované len keď je žiarovka v stave on.
  2. Overte, že hodnota teploty bielej je v rozsahu špecifickom pre model (typicky 1700–6500 K pre farebné žiarovky, 2700–6500 K pre stropné svietidlá, 2700–6000 K pre ceiling3).
  3. Skontrolujte surovú chybovú správu v TapHome diagnostike služieb pre konkrétny chybový kód vrátený žiarovkou.
Zmeny z aplikácie Yeelight sa neprejavujú

Šablóna reaguje na props notifikácie posielané žiarovkou, takže externé zmeny sa normálne objavia do sekundy. Ak nie:

  1. Notifikácia mohla doraziť počas opätovného nadväzovania TCP socketu — nasledujúci poll (predvolene 10 s) stav zosynchronizuje.
  2. Niektoré staršie verzie firmvéru posielajú notifikácie len keď sa aktívne posiela príkaz. Aktualizujte firmvér žiarovky z aplikácie Yeelight.
  3. Žiarovka mohla dosiahnuť limit 4 pripojení — znížte počet súbežných klientov v LAN.

Yeelight zariadenia podporujú iba 4 súbežné TCP pripojenia a 60 príkazov za minútu na pripojenie. Ak TapHome a iný systém (napr. Home Assistant) pollujú tú istú žiarovku súčasne, komunikácia môže byť nespoľahlivá. Používajte poll interval 10 sekúnd alebo vyšší.

Dostupné zariadenia

Yeelight color modul Modul
Servisné atribúty
Farebný režimAktuálny farebný režim žiarovky — RGB, Temperature alebo HSV — dekódovaný z vlastnosti color_mode
Teplota bielejTeplota bielej v Kelvinoch, hlásená len keď je žiarovka v režime 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é atribúty
Color mode
VAR json := "{\"id\":981, \"method\":\"get_prop\", \"params\":[\"color_mode\", \"ct\"]}";
SENDDATA(json);

RETURN(NULL);
Color temperature
HSB svetlo HSB svetlo

Plnofarebné HSB svetlo s podporou teploty bielej — ovláda odtieň, sýtosť, jas a zapnutie/vypnutie cez set_hsv, set_ct_abx a set_bright s plynulými prechodmi

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

HSB svetlo

Čítanie (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 saturácie
#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 farebnej 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;
Pripojenie: Packet Parser → TCP
Možné vylepšenia (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 ste problém s touto šablónou zariadenia?

Napíšte nám, čo nefunguje, čo chýba, alebo ako by sa mala šablóna správať. Vaša spätná väzba nám pomáha udržiavať katalóg presný.

Overené TapHomom

Chcete to použiť vo svojom TapHome jadre?

Otvorte túto šablónu v Customer Portali a aplikujte ju na svoj domov, alebo navrhnite zmenu a odošlite ju späť do katalógu.

Otvoriť v portáli