TapHome

Yeelight Color

Packet Parser → TCP
Beküldő
Utoljára frissítve: 06. 2026
Yeelight Color

A Yeelight Color sablon a csak fényerőszabályozó Yeelight sablont bővíti teljes HSB színvezérléssel és állítható fehérrel (színhőmérséklet). Ugyanazt a Wi-Fi smart LED családot célozza meg — színes izzók, szalagok és mennyezeti lámpák — az azonos Yeelight Inter-Operation Protocol használatával a 55443-as TCP porton. A fő különbség az eszközmodell: egyszerű fényerőszabályozó helyett a sablon egy PacketParserHSBLight-ot tesz elérhetővé, amely a TapHome-nak natív árnyalat-, telítettség-, fényerő- és színhőmérséklet-tulajdonságokat ad egyetlen eszközben.

A TapHome közvetlenül a helyi hálózaton kommunikál az izzóval JSON-RPC-n keresztül — a LAN Control engedélyezése után nincs szükség felhőkapcsolatra. A sablon egyszerre kérdezi le mind a hat színtulajdonságot, és reagál az izzó által küldött props értesítésekre, így a Yeelight alkalmazásból vagy más vezérlőből végzett változtatások szinte azonnal megjelennek a TapHome-ban.

Hardveres csatlakozás

A Yeelight izzók a szabványos hálózatról kapnak tápellátást (jellemzően E27, E14, GU10 vagy 24 V-os tápegység LED szalagokhoz, terméktől függően). Nincs szükség kábelezésre a TapHome és az izzó között — minden kommunikáció Wi-Fi-n keresztül zajlik. Az izzónak ugyanabban a LAN / VLAN-ban kell lennie, mint a TapHome CCU, mert a JSON-RPC protokollnak nincs hitelesítése és titkosítása, és a forgalom soha nem halad át a Yeelight felhőn.

A Yeelight LAN protokoll titkosítatlan. Ne tegye elérhetővé az 55443-as TCP portot a nyilvános interneten, és helyezze az izzókat megbízható hálózati szegmensbe — bárki, aki hozzáfér a LAN-hoz, parancsokat küldhet az izzónak.

Konfiguráció

LAN Control engedélyezése

A LAN Control (egyes régiókban Developer Mode néven) alapértelmezetten ki van kapcsolva az izzón. Nélküle az 55443-as porton a TCP kapcsolatokat elutasítja.

  1. Nyissa meg a Yeelight mobilalkalmazást, és párosítsa az izzót a helyi Wi-Fi hálózattal a SmartConfig / QuickConnect eljárással, ha még nincs párosítva.
  2. Válassza ki a célizzót az alkalmazásban.
  3. Koppintson a beállítások ikonra (jobb felső sarokban), és nyissa meg a LAN Control menüpontot (egyes firmware-verziókban Developer Mode néven).
  4. Kapcsolja a LAN Control-t ON-ra.
  5. Jegyezze fel az izzó IP-címét — az alkalmazás eszközinformációiban jelenik meg, vagy kiolvasható a router DHCP bérlettáblájából.

A LAN Control engedélyezése után az izzó az 55443-as TCP porton figyel, és rendszeresen hirdeti magát UDP multicast 239.255.255.250:1982 címen.

Hálózati konfiguráció
  • IP-cím — a TapHome sablon nem fedezi fel automatikusan az izzókat. Rendeljen statikus IP-t vagy DHCP-foglalást a routerben, hogy az izzó címe ne változzon a bérlet megújítása után.
  • Azonos LAN-szegmens — a TapHome CCU-nak és az izzónak ugyanabban a broadcast tartományban kell lennie. Ha a Wi-Fi és a vezetékes kliensek külön VLAN-okban vannak, adjon hozzá egy tűzfalszabályt, amely engedélyezi a TCP 55443-at közöttük.
Importparaméterek

A sablon importálásakor a TapHome-ban a felhasználó három értéket ad meg:

ParaméterLeírásAlapértelmezett
ipAddressA Yeelight izzó IP-címe a LAN-ban192.168.0.1 (helyőrző — cserélje le a valós IP-re)
PortTCP vezérlőport az izzón55443
Internal poll intervalMilyen gyakran küldi a sablon a get_prop-ot (ezredmásodpercben)10000 (10 s)

Az alapértelmezett 55443-as port a szabványos Yeelight LAN Control port, és nem kell megváltoztatni, hacsak az izzó nem nem szabványos portra van konfigurálva.

A lekérdezések között a sablon a props értesítésekre is reagál, amelyeket az izzó állapotváltozáskor küld. Ez a gyakorlatban azt jelenti, hogy a Yeelight alkalmazásból, fali kapcsoló adapterből vagy más vezérlőből végzett szín-, fényerő- és ki/bekapcsolási változtatások szinte azonnal megjelennek a TapHome-ban, anélkül hogy a következő lekérdezésre kellene várni.

Eszközképességek

HSB színes lámpa (árnyalat, telítettség, fényerő és ki/be)

A sablon egyetlen HSB fényeszközt tesz elérhetővé. Minden lekérdezési ciklusban egyszerre kéri le mind a hat tulajdonságot egy get_prop kéréssel:

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

A listener szkript feldolgozza a választ és natív TapHome tulajdonságokra képezi le:

  • Hue (Hd) — result[0], egész szám 0–359 fok
  • Saturation (Sa) — result[1], százalék 0–100, osztva 100-zal a TapHome 0,0–1,0 tartományra
  • Brightness (Hb) — result[2], százalék 1–100, osztva 100-zal a TapHome 0,0–1,0 tartományra
  • Power (St) — result[3], "on" leképezve 1-re, "off" leképezve 0-ra (a fényerő szintén 0-ra áll kikapcsoláskor)
  • Color temperature (Ct) — result[4], Kelvin érték, csak color_mode = 2 (fehér mód) esetén beállítva; egyébként NaN
  • Color moderesult[5], meghatározza, hogy Ct íródik-e (1 = RGB, 2 = Temperature, 3 = HSV)
Színmód váltás

A sablon a Ct tulajdonságot használja az aktív színmód meghatározására:

  • Ct = NaN — az izzó HSV színmódban van. Az írások set_hsv-t használnak az árnyalathoz és telítettséghez.
  • Ct = szám — az izzó fehér (színhőmérséklet) módban van. Az írások set_ct_abx-et használnak.

A TapHome nem küld explicit módváltó parancsot. Ehelyett a felhasználó a színhőmérsékletet numerikus értékre állítja a fehér módba lépéshez, vagy NaN-ra állítja (szín kiválasztásával a HSB választóban) a HSV módba lépéshez. Az író szkriptek ellenőrzik a Ct-t küldés előtt és kihagyják az irreleváns parancsot — a writesaturation azonnal visszatér ha Ct nem NaN, és a writecct azonnal visszatér ha Ct NaN.

Írási parancsok

Három író szkript kezeli a fény különböző aspektusait:

  • Fényerő / tápellátás (writebrightness) — ha fényerő > 0, küld set_power ["on","smooth",300]-t, majd set_bright [szint,"smooth",300]-t. Ha fényerő = 0, küld set_power ["off","smooth",300]-t.
  • Árnyalat és telítettség (writesaturation) — küld set_power ["on","smooth",300]-t, majd set_hsv [árnyalat, telítettség,"smooth",300]-t. Csak Ct = NaN (HSV mód) esetén fut.
  • Színhőmérséklet (writecct) — küld set_power ["on","smooth",300]-t, majd set_ct_abx [ct,"smooth",300]-t. Csak ha Ct szám (fehér mód). Érvényes tartomány: 1700–6500 K (pontos határok az izzómodelltől függnek).

Minden írás 300 ms-os smooth átmenetet használ a lágy tompításhoz az éles ugrás helyett. Minden írás után a debounce változó 1-re áll, ami a következő lekérdezési ciklus kihagyását okozza — ez megakadályozza az elavult állapot olvasását az izzó átmenete közben.

Szolgáltatásdiagnosztika

Két modulszintű szolgáltatásattribútum olvasódik egy külön get_prop kéréssel (id=981):

  • SzínmódRGB, Temperature vagy HSV, a numerikus color_mode tulajdonságból (1 / 2 / 3) dekódolva SWITCH kifejezéssel a modul listener szkriptjében.
  • Színhőmérséklet — Kelvin érték "{ct}K" formátumban (például "4000K"). Csak Temperature módban értelmes.

Ezek az attribútumok csak olvasható diagnosztikák — a tényleges színhőmérséklet-vezérlés az eszközszintű Ct tulajdonságon és a fent leírt writecct szkripten keresztül történik.

Hibaelhárítás

Az izzó nem reagál a parancsokra
  1. Ellenőrizze, hogy a LAN Control engedélyezve van az izzón (Yeelight alkalmazás → izzó beállítások → LAN Control). Nélküle az izzó minden TCP kapcsolatot elutasít az 55443-as porton.

  2. Erősítse meg az izzó IP-jét a Yeelight alkalmazásban vagy a router DHCP bérlettáblájában, és győződjön meg róla, hogy megegyezik az ipAddress importparaméterrel. A Yeelight izzók alapértelmezetten nem tartanak fix IP-t — a bérlet lejárhatott és az IP megváltozhatott.

  3. Rendeljen statikus IP-t vagy DHCP-foglalást az izzóhoz a címváltozás megelőzésére.

  4. Ellenőrizze, hogy a TapHome CCU és az izzó ugyanabban a LAN / VLAN-ban van, és a TCP 55443 nincs tűzfal által blokkolva közöttük.

  5. Tesztelje a kapcsolatot manuálisan: telnet {bulb-ip} 55443 és küldjön nyers kérést \r\n lezárással:

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

    Egy működő izzó {"id":1,"result":["<hue>","<sat>","<bright>","<power>","<ct>","<color_mode>"]} választ ad.

A színparancsok figyelmen kívül vannak hagyva (árnyalat/telítettség nem változik)

A writesaturation szkript ellenőrzi a Ct-t a set_hsv küldése előtt. Ha Ct numerikus értékre van állítva (fehér mód), a szkript parancs küldése nélkül tér vissza. A HSV szín vezérléséhez először állítsa a színhőmérsékletet NaN-ra egy szín kiválasztásával a TapHome HSB választóban.

Hasonlóan a writecct küldés nélkül tér vissza ha Ct = NaN (HSV mód). Színhőmérséklet írásához az izzónak már fehér módban kell lennie.

Olvasási hiba: client quota exceeded

Minden TCP kapcsolat egy Yeelight izzóhoz 60 parancsra korlátozódik percenként, és az izzó összesen legfeljebb 4 egyidejű kapcsolatot fogad el. Ha egy másik rendszer egyidejűleg kérdezi le az izzót — Home Assistant, Yeelight felhőkapcsolat, egyéni szkript — az összesített forgalom sebességkorlátozási hibákat válthat ki.

  1. Kapcsolja ki vagy lassítsa le az izzót megosztó többi integrációt.
  2. Hagyja a TapHome lekérdezési intervallumot az alapértelmezett 10000 ms-on vagy magasabban. A színes sablon egy get_prop-ot küld lekérdezésenként, plusz legfeljebb három set_* írást változtatásonként, ami jóval a 60 cmd/min kvóta alatt marad.
  3. Zárja be a nem használt telnet debug munkameneteket — beleszámítanak a 4 kapcsolatos korlátba.
HueSat vagy színhőmérséklet írási hiba

A listener szkript külön nyomon követi az írási hibákat minden parancstípushoz — writeErrorBrightness a tápellátás/fényerő írásokhoz, writeErrorHueSat a set_hsv írásokhoz és writeErrorCt a set_ct_abx írásokhoz. Ha hiba jelenik meg:

  1. Erősítse meg, hogy az izzó be van kapcsolva — minden set_* parancsot a set_power kivételével csak on állapotban fogad el az izzó.
  2. Ellenőrizze, hogy a színhőmérséklet értéke a modellspecifikus tartományon belül van (jellemzően 1700–6500 K színes izzóknál, 2700–6500 K mennyezeti lámpáknál, 2700–6000 K ceiling3-nál).
  3. Ellenőrizze a nyers hibaüzenetet a TapHome szolgáltatásdiagnosztikában az izzó által visszaadott specifikus hibakódért.
A Yeelight alkalmazásban végzett változtatások nem jelennek meg

A sablon reagál az izzó által küldött props értesítésekre, így a külső változtatások normálisan egy másodpercen belül megjelennek. Ha nem:

  1. Az értesítés a TCP socket újraépítése közben érkezhetett meg — a következő lekérdezés (alapértelmezett 10 s) szinkronizálja az állapotot.
  2. Egyes régibb firmware-verziók csak aktív parancsküldéskor küldenek értesítést. Frissítse az izzó firmware-jét a Yeelight alkalmazásból.
  3. Az izzó elérhette a 4 kapcsolatos korlátot — csökkentse az egyidejű kliensek számát a LAN-ban.

A Yeelight eszközök csak 4 egyidejű TCP kapcsolatot és 60 parancsot percenként támogatnak kapcsolatonként. Ha a TapHome és egy másik rendszer (pl. Home Assistant) egyidejűleg kérdezi le ugyanazt az izzót, a kommunikáció megbízhatatlanná válhat. Használjon 10 másodperces vagy magasabb lekérdezési intervallumot.

Elérhető eszközök

Yeelight color modul Modul
Szerviz attribútumok
SzínmódAz izzó aktuális színmódja — RGB, Temperature vagy HSV — a color_mode tulajdonságból dekódolva
SzínhőmérsékletSzínhőmérséklet Kelvinben, csak Temperature módban jelzett (color_mode=2)

Yeelight color module

Figyelő
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
Szerviz attribútumok
Color mode
VAR json := "{\"id\":981, \"method\":\"get_prop\", \"params\":[\"color_mode\", \"ct\"]}";
SENDDATA(json);

RETURN(NULL);
Color temperature
HSB lámpa HSB lámpa

Teljes HSB színes lámpa színhőmérséklet-támogatással — árnyalat, telítettség, fényerő és be/ki vezérlés set_hsv, set_ct_abx és set_bright parancsokkal, sima átmenetekkel

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

HSB lámpa

Olvasás (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
Figyelő
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
Fényerő írása
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;
Telítettség írása
#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;
Színhőmérséklet írása
#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;
Kapcsolat: Packet Parser → TCP
Lehetséges fejlesztések (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.

Források

Talált problémát ezzel az eszközsablonnal?

Írja meg, mi nem működik, mi hiányzik, vagy hogyan kellene a sablonnak viselkednie. Visszajelzése segít, hogy a katalógus pontos maradjon.

TapHome által hitelesítve

Használni szeretnéd ezt a TapHome Core-odban?

Nyisd meg ezt a sablont az ügyfélportálon, hogy alkalmazd az otthonaid egyikére, vagy készíts egy módosítást és küldd vissza a katalógusba.

Megnyitás a portálon