TapHome

Yeelight

Packet Parser → TCP
Autor
Posljednje ažuriranje: 04. 2026
Yeelight

Yeelight je marka pametne Wi-Fi LED rasvjete (jednobojne žarulje, žarulje s podesivom bijelom, žarulje u boji, LED trake i stropne svjetiljke) tvrtke Qingdao Yeelink (dio ekosustava Xiaomi). Svaki proizvod Yeelight s podrškom za LAN koristi isti JSON-RPC protokol Inter-Operation Protocol na TCP portu 55443, pa jedan predložak TapHome pokriva cijelu obitelj.

Predložak daje dimer: svjetlinu (0–100 %) i uključivanje i isključivanje s postupnim prijelazima. Trenutačni način boje i temperatura boje prikazuju se kao servisni atributi samo za čitanje. TapHome komunicira sa žaruljom izravno u lokalnoj mreži, pa nakon uključivanja LAN Control na žarulji nije potreban račun u oblaku Yeelight.

Hardversko spajanje

Žarulje Yeelight napajaju se iz standardne mreže (ovisno o proizvodu najčešće grla E27, E14, GU10 ili napajanje trake 24 V). Između sustava TapHome i žarulje nije potrebno nikakvo ožičenje, sva komunikacija ide preko Wi-Fi mreže. Žarulja mora biti u istoj lokalnoj mreži / VLAN-u kao centralna jedinica TapHome (CCU), jer protokol JSON-RPC nema provjeru autentičnosti ni šifriranje, a promet nikada ne ide preko oblaka Yeelight.

Lokalni protokol Yeelight nije šifriran. TCP port 55443 nemojte izlagati javnom internetu, a žarulje postavite u pouzdani segment mreže. Svatko s pristupom lokalnoj mreži može žarulji slati naredbe.

Konfiguracija

Uključivanje LAN Control

LAN Control (u nekim regijama naziva se i Developer Mode) na žarulji je prema zadanim postavkama isključen. Bez njega žarulja odbija TCP veze na portu 55443.

  1. Otvorite mobilnu aplikaciju Yeelight i, ako žarulja još nije uparena, uparite je s lokalnom Wi-Fi mrežom postupkom SmartConfig / QuickConnect.
  2. U aplikaciji odaberite željenu žarulju.
  3. Dodirnite ikonu postavki (gore desno) i otvorite LAN Control (u nekim verzijama firmvera naziva se Developer Mode).
  4. Prebacite LAN Control na ON.
  5. Zapišite IP adresu žarulje. Prikazuje se u informacijama o uređaju u aplikaciji Yeelight, a može se pročitati i iz tablice DHCP zakupa na usmjerivaču.

Nakon uključivanja LAN Control žarulja sluša na TCP portu 55443 i povremeno se oglašava preko UDP multicasta 239.255.255.250:1982.

Mrežne postavke
  • IP adresa: predložak TapHome ne pronalazi žarulje automatski. Na usmjerivaču dodijelite statičku IP adresu ili DHCP rezervaciju kako se adresa žarulje ne bi promijenila nakon obnove zakupa.
  • Isti segment lokalne mreže: centralna jedinica TapHome i žarulja moraju biti u istoj domeni emitiranja. Ako su Wi-Fi i žičani klijenti u odvojenim VLAN-ovima, dodajte pravilo vatrozida koje između njih dopušta TCP 55443.
Parametri uvoza

Pri uvozu predloška u TapHome korisnik unosi tri vrijednosti:

ParametarOpisZadano
ipAddressIP adresa žarulje Yeelight u lokalnoj mreži192.168.0.1 (privremena vrijednost, zamijenite stvarnom IP adresom)
PortTCP port za upravljanje na žarulji55443
Internal poll intervalKoliko često predložak šalje get_prop (u milisekundama)10000 (10 s)

Zadani port 55443 standardni je port za Yeelight LAN Control i ne treba ga mijenjati, osim ako je žarulja konfigurirana za nestandardni port.

Između dva očitavanja predložak reagira i na obavijesti props koje žarulja šalje pri svakoj promjeni stanja. U praksi to znači da se promjene svjetline ili uključenosti napravljene u aplikaciji Yeelight, preko adaptera za zidni prekidač ili iz druge instance Home Assistanta u sustavu TapHome pojavljuju gotovo odmah, bez čekanja na sljedeće očitavanje.

Mogućnosti uređaja

Dimer (svjetlina i uključivanje/isključivanje)

Predložak daje jedan dimer. Pri svakom očitavanju šalje:

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

i raščlanjuje odgovor result[0] (svjetlina 1–100, dijeli se sa 100 radi raspona TapHome 0,0–1,0) i result[1] ("on" / "off").

Upisi se pretvaraju u dvije JSON-RPC naredbe:

  • Ako je ciljna razina veća od nule, predložak šalje set_power ["on","smooth",300], a zatim set_bright [round(level*100),"smooth",500]. Prijelaz uključivanja od 300 ms i prijelaz svjetline od 500 ms daju postupni prijelaz umjesto naglog skoka.
  • Ako je ciljna razina nula, predložak šalje set_power ["off","smooth",300].

Dimer obrađuje i obavijesti props koje šalje žarulja (uključenost / svjetlina), pa se vanjske promjene stanja u sustavu TapHome prikazuju bez čekanja na sljedeći ciklus očitavanja.

Način boje i temperatura boje (samo za čitanje)

Dva servisna atributa na razini modula čitaju se posebnim zahtjevom get_prop (id=981):

  • Način boje: RGB, Temperature ili HSV, dekodiran iz brojčanog svojstva color_mode (1 / 2 / 3) izrazom SWITCH u skripti slušatelja.
  • Temperatura boje: vrijednost u kelvinima prikazana kao "{ct}K" (na primjer "4000K"). Ima smisla samo kada je žarulja u načinu Temperature. Uobičajeni raspon ovisi o modelu: 1700–6500 K za žarulje i trake u boji, 2700–6500 K za stropne svjetiljke (ceiling3 najviše 6000 K).

Oba atributa služe samo za dijagnostiku. Predložak ne mijenja način boje i ne upisuje novu temperaturu boje.

Dodatne mogućnosti

Lokalni protokol Yeelight nudi i upravljanje bojom RGB i HSV (set_rgb, set_hsv), upravljanje temperaturom boje (set_ct_abx), programe izmjene boja (start_cf / stop_cf), unaprijed definirane scene (set_scene), mjerače vremena za isključivanje u samom uređaju (cron_add), upravljanje pozadinskim svjetlom na svjetiljkama s dva izvora svjetla (metode bg_*) i glazbeni način (set_music, obrnuti TCP kanal koji zaobilazi ograničenje broja naredbi). Ništa od toga trenutačni predložak TapHome za dimer ne podržava. Korisnici kojima trebaju sve boje ili efekti moraju proširiti predložak ili paralelno koristiti izvornu aplikaciju Yeelight.

Boja, temperatura boje i scene mogu se dodati u budućem ažuriranju predloška preko istog TCP kanala. Skripte PacketParser za čitanje i upis mogu se proširiti tako da šalju set_ct_abx, set_rgb ili set_scene bez promjene parametara uvoza.

Rješavanje problema

Žarulja ne reagira na naredbe
  1. Provjerite je li na žarulji uključen LAN Control (aplikacija Yeelight → postavke žarulje → LAN Control). Bez njega žarulja odbija sve TCP veze na portu 55443.

  2. Provjerite IP adresu žarulje u aplikaciji Yeelight ili u tablici DHCP zakupa na usmjerivaču i uvjerite se da odgovara parametru uvoza ipAddress. Žarulje Yeelight prema zadanim postavkama nemaju fiksnu IP adresu, pa je zakup možda istekao i IP adresa se promijenila.

  3. Žarulji dodijelite statičku IP adresu ili DHCP rezervaciju kako se adresa ne bi mijenjala.

  4. Provjerite jesu li centralna jedinica TapHome i žarulja u istoj lokalnoj mreži / VLAN-u te propušta li vatrozid TCP 55443 između njih.

  5. Ručno testirajte vezu: telnet {bulb-ip} 55443 i pošaljite neobrađeni zahtjev završen s \r\n:

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

    Ispravna žarulja odgovara s {"id":1,"result":["<bright>","<power>"]}.

Read error: client quota exceeded

Svaka TCP veza sa žaruljom Yeelight ograničena je na 60 naredbi u minuti, a žarulja ukupno prihvaća najviše 4 istodobne veze (144 naredbe u minuti za cijelu lokalnu mrežu). Ako žarulju u isto vrijeme očitava i drugi sustav (Home Assistant, sesija oblaka Yeelight, vlastita skripta), zajednički promet može izazvati pogreške ograničenja koje TapHome prikazuje kao Read error: client quota exceeded.

  1. Isključite ili usporite druge integracije koje dijele žarulju.
  2. Interval očitavanja u sustavu TapHome ostavite na zadanih 10000 ms ili više. Jedan get_prop i dva upisa set_* po promjeni ostaju daleko ispod ograničenja od 60 naredbi u minuti.
  3. Zatvorite nekorištene telnet sesije za otklanjanje pogrešaka jer se ubrajaju u ograničenje od 4 veze.
Servisni atribut temperature boje prikazuje „error”

Servisni atributi Način boje i Temperatura boje čitaju sa žarulje color_mode i ct. Ako je žarulja jednobojni model (samo bijelo svjetlo) bez podesive bijele ili je trenutačno u načinu RGB ili HSV, vrijednost ct nema smisla i skripta slušatelja za temperaturu boje prikazuje "error". To je očekivano ponašanje i ne znači kvar.

Promjene napravljene u aplikaciji Yeelight ne prikazuju se

Predložak reagira na obavijesti props koje šalje žarulja, pa se vanjske promjene obično prikažu u roku od jedne sekunde. Ako se ne prikažu:

  1. Obavijest je možda stigla dok se TCP veza ponovno uspostavljala. Sljedeće očitavanje (zadano 10 s) ponovno će uskladiti stanje.
  2. Neke starije verzije firmvera šalju obavijesti samo dok se aktivno šalje naredba. Ažurirajte firmver žarulje u aplikaciji Yeelight.
  3. Žarulja je možda dosegnula ograničenje od 4 veze. Smanjite broj istodobnih klijenata u lokalnoj mreži.

Dostupni uređaji

Modul Yeelight Modul
Servisni atributi
Način bojeAktivni način boje koji javlja žarulja — RGB, Temperature (podesiva bijela) ili HSV. Samo za čitanje — predložak ne mijenja način boje.
Temperatura bojeTrenutačna bijela točka u kelvinima (vrijedi samo u načinu Temperature). Samo za čitanje — predložak ne upisuje temperaturu boje. Raspon ovisi o modelu: 1700–6500 K za žarulje i trake u boji, 2700–6500 K za stropne svjetiljke.
Prilagođene varijable

Yeelight 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
Servisni atributi
Color mode
VAR json := "{\"id\":981, \"method\":\"get_prop\", \"params\":[\"color_mode\", \"ct\"]}";
SENDDATA(json);
Color temperature
Yeelight dimer Dimer

Svjetlina (0–100 %) te uključivanje i isključivanje s postupnim prijelazima od 300–500 ms. Ovaj predložak ne omogućuje upravljanje bojom, temperaturom boje ni efektima.

numeric Jedinica: brightness 0–100 %
Varijabla: receiveError, Varijabla: notificationError, Varijabla: sendError

Yeelight dimer

Čitanje razine
VAR json := "{\"id\":951, \"method\":\"get_prop\", \"params\":[\"bright\", \"power\"]}";
SENDDATA(json);
Zapis razine
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
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
Povezivanje: Packet Parser → TCP
Moguća poboljšanja (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.

Izvori

Pronašli ste problem s ovim predloškom uređaja?

Recite nam što ne radi, što nedostaje ili kako bi se predložak trebao ponašati. Vaše povratne informacije pomažu nam da katalog bude točan.

Provjerio TapHome

Želite ovo koristiti u svojoj centralnoj jedinici TapHome Core?

Otvorite ovaj predložak na portalu Customer Portal kako biste ga primijenili na jedan od svojih domova ili predložili poboljšanje i poslali ga natrag u katalog.

Otvorite na portalu