TapHome

Shelly DUO RGBW

Packet Parser → HTTP
Beküldő
Utoljára frissítve: 04. 2026
Shelly DUO RGBW

A Shelly DUO RGBW egy Gen1 Wi-Fi okos LED izzó GU10-es foglalatban. Teljes RGB színeket és állítható fehéret (CCT 3000–6500 K) támogat sima átmeneti effektusokkal. A TapHome a helyi hálózaton keresztül kommunikál az eszközzel — felhőkapcsolat nem szükséges.

Két TapHome sablon érhető el: egy HTTP sablon egyetlen izzó REST API-n keresztüli vezérléséhez és egy MQTT sablon, amely akár 5 izzót is vezérelhet egy megosztott MQTT brokeren keresztül. Mindkét sablon teljes fényerőszabályozást és teljesítménymérést tesz elérhetővé.

Konfiguráció

HTTP sablon

A HTTP sablon az izzó IP-címét igényli (alapértelmezett helyőrző 192.168.0.1) és egy opcionális átmeneti időt ezredmásodpercben (alapértelmezett 300 ms). A TapHome 2,5 másodpercenként lekérdezi a /status végpontot a fényállapot, színértékek és energiamérési adatok olvasásához.

A modulszintű olvasó szkript a /status választ a jsonStatus egyéni változóba menti, így az egyes eszközszkriptek elemezhetik az adatokat redundáns HTTP hívások nélkül.

MQTT sablon

Az MQTT sablon a broker csatlakozási adatait és egy vagy több Device ID-t igényel — izzónként egyet. Minden izzó Device ID-je a bulbNtopic egyéni változón keresztül konfigurálható (formátum: shellycolorbulb-DEVICEID). A Device ID megtalálható a Shelly webes felületén a Settings > Device Info alatt.

A sablon egyszerre akár 5 izzót is támogat. Csak a ténylegesen meglévő izzókhoz konfigurálja a bulbNtopic változókat — a nem használt helyek az alapértelmezett helyőrző értékeiken hagyhatók.

Az MQTT engedélyezése után a Shelly DUO RGBW-n (Internet & Security > Advanced — MQTT), a TapHome feliratkozik a shellies/#-re, és a topic előtag alapján a megfelelő izzópéldányhoz irányítja az üzeneteket.

Gen1 Shelly eszközökön az MQTT engedélyezése letiltja a Shelly Cloud-ot. Mindkettő nem futhat egyidejűleg.

Eszközfunkciók

Fényerőszabályozás

Az izzó két egymást kizáró módban működik:

  • Szín mód — teljes RGB vezérlés vörös, zöld és kék csatornákon keresztül (egyenként 0–255) plusz gain (fényerő, 0–100 %). A TapHome ezt HSB fényként jeleníti meg — árnyalat (0–360), telítettség (0,0–1,0) és fényerő (0,0–1,0) az RGBTOHSV funkcióval konvertálva RGB-ből.
  • Fehér mód — állítható fehér a színhőmérsékleten (3000–6500 K) és fényerőn (0–100 %) keresztül. A CCT érték beállítása a TapHome-ban automatikusan fehér módra váltja az izzót.

A mód automatikusan vált aszerint, hogy melyik tulajdonságot állítja be:

  • Az árnyalat vagy telítettség beállítása /light/0?mode=color parancsot küld (HTTP) vagy "mode":"color" JSON payloadot a color/0/set-en keresztül (MQTT)
  • A CCT beállítása /light/0?mode=white parancsot küld (HTTP) vagy "mode":"white" payloadot (MQTT)

Minden írási parancs tartalmazza a konfigurált transitionTime paramétert a zökkenőmentes átmenetekhez. Egy debounce mechanizmus megakadályozza az elavult olvasásokat az átmenetek során — a sablon rövid ideig figyelmen kívül hagyja a /status válaszokat minden írás után.

MQTT módban a debounce ablak 3 másodperc minden írás után (hosszabb, mint a HTTP sablon) az MQTT üzenettovábbítás késleltetésének figyelembevétele miatt.

Teljesítménymérés

Mindkét sablon egy energiamérőt tesz elérhetővé, amely két értéket olvas:

  • Pillanatnyi teljesítmény — wattban, kW-ra konvertálva 1000-rel osztva
  • Összesített fogyasztás — wattpercben, kWh-ra konvertálva 60 000-rel osztva

A HTTP sablon a meters[0].power és meters[0].total értékeket olvassa a /status válaszból. Az MQTT sablon a shellies/{id}/light/0/power és shellies/{id}/light/0/energy topicokra figyel minden izzóhoz függetlenül.

A teljesítményfigyelés megköveteli az eszközmodell konfigurálását a Shelly alkalmazásban vagy webes felületen a Settings > Device Model alatt. Ha a modell nincs beállítva és az izzó be van kapcsolva, de a teljesítmény nullát mutat, a sablon figyelmeztetést jelenít meg.

Szervizdiagnosztika (csak HTTP)

A HTTP sablon 10 szervizattribútumot tesz elérhetővé az eszközfigyeléshez:

  • Hálózati info — IP-cím, MAC-cím, WiFi jelszint (dB)
  • Csatlakoztathatóság — cloud engedélyezve/csatlakoztatva, MQTT csatlakoztatva
  • Rendszer — eszköz ideje, firmware frissítés elérhető, üzemidő, RAM-használat
Szervizműveletek (csak HTTP)

Két szervizművelet érhető el a HTTP sablonban:

  • Cloud engedélyezése — engedélyezi vagy letiltja a Shelly Cloud csatlakozást
  • Újraindítás — eszköz újraindítását indítja
További funkciók

A Shelly DUO RGBW fényeffektusokat is támogat (meteor shower, gradual change, breath, flash, on/off gradual, red/green change), dedikált fehér LED csatornát szín módban és MQTT csatlakozási állapotot (LWT). Ezek a funkciók egy jövőbeli sablonfrissítésben kerülhetnek hozzáadásra.

Hibaelhárítás

Az izzó nem válaszol (HTTP)
  1. Ellenőrizze, hogy az izzó csatlakozik a Wi-Fi-hez és érvényes IP-címmel rendelkezik
  2. Próbálja az mDNS hosztnevet (shellycolorbulb-AABBCCDDEE.local) az IP-cím helyett — az IP megváltozhatott a DHCP megújítás után
  3. Nyissa meg a http://{device-ip}/shelly címet a böngészőben — ha válaszol, az eszköz elérhető
  4. Ellenőrizze, hogy a TapHome CCU és az izzó ugyanazon a hálózaton / VLAN-on van
A színek nem megfelelően jelennek meg
  1. Ellenőrizze, hogy az izzó a megfelelő módban van — az RGB színek csak szín módban működnek, fehér módban nem
  2. Szín beállításakor a TapHome-on keresztül győződjön meg arról, hogy a telítettség nagyobb nullánál — a 0 telítettség fehér fényt ad árnyalattól függetlenül
  3. Ellenőrizze, hogy a gain (fényerő szín módban) nincs nullára állítva
A teljesítmény nullát mutat
  1. Győződjön meg arról, hogy az eszközmodell konfigurálva van a Shelly alkalmazásban (Settings > Device Model)
  2. Ellenőrizze, hogy az izzó be van-e kapcsolva — a mérő csak áramáramlás esetén mér
  3. Hívja meg manuálisan a /status-t, és ellenőrizze, hogy a meters[0].power nullánál nagyobb értéket ad vissza
Az MQTT izzók nem válaszolnak
  1. Ellenőrizze, hogy az MQTT engedélyezve van minden izzó webes felületén (Internet & Security > Advanced — MQTT)
  2. Győződjön meg arról, hogy a broker címe és portja helyes mind a Shelly eszközben, mind a TapHome modul beállításaiban
  3. Ellenőrizze, hogy a bulbNtopic egyéni változó pontosan egyezik az izzó Device ID-jével (pl. shellycolorbulb-B929CC)
  4. Használjon MQTT klienst (pl. MQTT Explorer) a shellies/# feliratkozáshoz, és ellenőrizze, hogy minden izzó publikál üzeneteket

A Shelly Gen1 eszközök csak 2 egyidejű HTTP-kapcsolatot támogatnak. Ha a TapHome és egy másik rendszer (pl. Home Assistant) egyszerre kérdezi le ugyanazt az izzót, a kommunikáció megbízhatatlanná válhat. Többrendszeres környezetben fontolja meg az MQTT sablonra való áttérést.

Telepítés a TapHome-ban

Előfeltételek

  • Shelly eszköz telepítve és bekapcsolva
  • Helyi Wi-Fi hálózat (2,4 GHz)
  • TapHome CCU ugyanazon a hálózaton

1. lépés — Shelly csatlakoztatása a Wi-Fi-hez

A lehetőség — Shelly alkalmazás (ajánlott):

  1. Töltse le a Shelly alkalmazást (iOS / Android)
  2. Érintse meg a +Add Device gombot, és kövesse a Bluetooth párosítási varázslót
  3. Adja meg Wi-Fi hitelesítő adatait, amikor a rendszer kéri

B lehetőség — AP mód (alkalmazás nélkül):

  1. Első bekapcsoláskor az eszköz létrehoz egy hotspotot: ShellyXXX-AABBCCDDEE
  2. Csatlakoztassa telefonját/PC-jét ehhez a hotspothoz
  3. Nyissa meg a http://192.168.33.1 címet → Internet & SecurityWi-Fi Mode - Client
  4. Adja meg az SSID-t és a jelszót → Save

A Shelly csak 2,4 GHz-es hálózatokat támogat. Az 5 GHz-es hálózatok nem jelennek meg a keresésben.

2. lépés — IP-cím megkeresése

A Wi-Fi-hez való csatlakozás után az alábbi módszerek egyikével keresse meg a hozzárendelt IP-címet:

  • Shelly alkalmazás: Eszköz részletei → Device info → IP-cím
  • Shelly webes felület: Csatlakozzon az eszköz AP-jához a Wi-Fi beállítás előtt — az IP a mentés után jelenik meg
  • Router DHCP tábla: Keressen egy hasonló hosztnevet: shelly1pm-AABBCCDDEE
  • mDNS: Pingelje a shelly<model>-<mac>.local címet (pl. shelly1pm-AABBCCDDEE.local) ugyanarról a hálózatról

Rendeljen statikus IP-t (DHCP foglalást) a Shelly eszközhöz a routerben, hogy a cím ne változzon a router újraindítása után.

3. lépés — Konfigurálás a TapHome-ban

  1. A TapHome-ban adjon hozzá egy új Packet Parser (HTTP) modult
  2. IP Address: adja meg a 2. lépésben kapott IP-t (pl. 192.168.1.50)
  3. Port: 80 (alapértelmezett, nem kell módosítani)
  4. Importálja a sablont — a TapHome rendszeresen lekérdezi a /status végpontot az eszköz állapotának olvasásához

A HTTP hitelesítés a Shelly eszközökön alapértelmezetten ki van kapcsolva. Ha engedélyezte a bejelentkezésvédelmet, a TapHome jelenleg nem támogatja a HTTP Basic Auth-ot — a TapHome integrációhoz hagyja kikapcsolva a hitelesítést.

Elérhető eszközök

Shelly DUO RGBW Modul
Szerviz attribútumok
IP-cím
MAC-cím
WiFi jel
Cloud engedélyezve
Cloud csatlakoztatva
MQTT csatlakoztatva
Eszköz ideje
FW frissítés elérhető
Üzemidő
RAM
Szerviz műveletek
Cloud engedélyezése
Újraindítás
Egyéni változók
transitionTime (numeric) = TransitionTimeLight transition duration in milliseconds (import parameter, default 300 ms)

Shelly DUO RGBW Module

Olvasás (modul)
VAR now := NOW();

IF now.Ticks < debounceTimestamp
    RETURN(0);
END

VAR response := SENDHTTPREQUEST("/status");

IF response.IsSuccess
    jsonStatus := response.Content;
ELSE
    jsonStatus := NULL;
END
Szerviz attribútumok
IP Address
VAR response := SENDHTTPREQUEST("/status");

IF response.IsSuccess
    jsonStatus := response.Content;
ELSE
    jsonStatus := NULL;
END

VAR address := PARSEJSON(jsonStatus, "$.wifi_sta.ip", 1);
IF (ISNULL(address), "-", address)
MAC Address
VAR value := PARSEJSON(jsonStatus, "$.mac", 1);
IF ISNULL(value)
    RETURN("-");
END;

STRING mac;
INT i := 0;
INT len := LENGTH(value);

WHILE i < len
    mac += GETAT(value, i);
    i += 1;
    
    IF MOD(i, 2) = 0 AND i < len
        mac += ":";
    END
LOOP

mac
WIFI signal
VAR signal := PARSEJSON(jsonStatus, "$.wifi_sta.rssi", 1);
IF (ISNULL(signal), "-", signal + "db");
Cloud enabled
VAR value := PARSEJSON(jsonStatus, "$.cloud.enabled", 1);
IF (ISNULL(value), "-", value)
Cloud connected
VAR value := PARSEJSON(jsonStatus, "$.cloud.connected", 1);
IF (ISNULL(value), "-", value)
MQTT connected
VAR value := PARSEJSON(jsonStatus, "$.mqtt.connected", 1);
IF (ISNULL(value), "-", value)
Device time
VAR value := PARSEJSON(jsonStatus, "$.time", 1);
IF (ISNULL(value), "-", value)
FW update available
VAR value := PARSEJSON(jsonStatus, "$.has_update");
IF (ISNULL(value), "-", value)
Uptime
VAR value := PARSEJSON(jsonStatus, "$.uptime", 1);
IF ISNULL(value)
    RETURN("-");
END

VAR days := FLOOR(value/86400, 1);
value := MOD(value, 86400);
VAR hours := FLOOR(value/3600, 1);
value := MOD(value, 3600);
VAR minutes := FLOOR(value/60, 1);

days + "day(s) " + hours + "h " + minutes + "m"
RAM
VAR ramFree := PARSEJSON(jsonStatus, "$.ram_free", 1);
VAR ramTotal := PARSEJSON(jsonStatus, "$.ram_total", 1);

IF ISNULL(ramFree) OR ISNULL(ramTotal)
    RETURN("-");
END

ramFree + " bytes free of " + ramTotal
Szerviz műveletek
Enable cloud
Paraméterek: Enable (Enable / Disable)
VAR response := SENDHTTPREQUEST("/settings/cloud?enabled=" + enable);
VAR contentJson := response.Content;
VAR wasEnabled := PARSEJSON(contentJson, "enabled");

IF(wasEnabled, "Cloud enabled", "Cloud disabled");
Reboot
VAR response := SENDHTTPREQUEST("/reboot");
VAR contentJson := response.Content;
VAR wasRebooted := PARSEJSON(contentJson, "ok");

IF(wasRebooted, "Reboot successful", "Error");
RGBW fény HSB lámpa

Teljes RGB szín + állítható fehér (CCT 3000–6500 K) sima átmenetekkel és módtudatos fényerőszabályozással

HSB

RGBW fény

Fényerő olvasása
VAR now := NOW();

IF now.Ticks < debounceTimestamp
    RETURN(Hb);
END

INT value;
VAR mode := PARSEJSON(jsonStatus, "$.lights[0].mode", 1);

IF mode = "white"
    value := PARSEJSON(jsonStatus, "$.lights[0].brightness", 1);
ELSE
    value := PARSEJSON(jsonStatus, "$.lights[0].gain", 1);
END

IF ISNULL(value)
    RETURN(NaN);
END

BOOL isOn := PARSEJSON(jsonStatus, "$.lights[0].ison", 1);

IF ISNULL(isOn)
    RETURN(NaN);
END

IF(isOn, value/100.0, 0);
Fényerő írása
IF St > 0.5
    VAR mode := PARSEJSON(jsonStatus, "$.lights[0].mode", 1);
    
    IF mode = "white"
        SENDHTTPREQUEST("light/0?turn=on&transition=" + transitionTime + "&brightness=" + ROUND(Hb*100.0));
    ELSE
        SENDHTTPREQUEST("light/0?turn=on&transition=" + transitionTime + "&gain=" + ROUND(Hb*100.0));
    END
ELSE
    SENDHTTPREQUEST("light/0?turn=off&transition=" + transitionTime);
END

VAR now := NOW();
debounceTimestamp := now.Ticks + transitionTime + 500;
Színárnyalat olvasása
VAR now := NOW();

IF now.Ticks < debounceTimestamp
    RETURN(Hd);
END

INT r := PARSEJSON(jsonStatus, "$.lights[0].red", 1);
INT g := PARSEJSON(jsonStatus, "$.lights[0].green", 1);
INT b := PARSEJSON(jsonStatus, "$.lights[0].blue", 1);
 
VAR HSVColor := RGBTOHSV(r, g, b);
ROUND(HSVColor.Hue);
Színárnyalat írása
IF !ISNAN(Ct)
    RETURN(0);
END

VAR color := HSVTORGB(Hd, Sa, 1);

SENDHTTPREQUEST("light/0?mode=color&transition=" + transitionTime + "&gain=" + ROUND(Hb*100) + "&red=" + color.RED + "&green=" + color.GREEN + "&blue=" + color.BLUE);


VAR now := NOW();
debounceTimestamp := now.Ticks + transitionTime + 500;
Telítettség olvasása
VAR now := NOW();

IF now.Ticks < debounceTimestamp
    RETURN(Sa);
END

INT r := PARSEJSON(jsonStatus, "$.lights[0].red", 1);
INT g := PARSEJSON(jsonStatus, "$.lights[0].green", 1);
INT b := PARSEJSON(jsonStatus, "$.lights[0].blue", 1);
 
VAR HSVColor := RGBTOHSV(r, g, b);
ROUND(HSVColor.Saturation * 100.0) / 100.0;
Telítettség írása
IF !ISNAN(Ct)
    RETURN(0);
END

VAR color := HSVTORGB(Hd, Sa, 1);

SENDHTTPREQUEST("light/0?mode=color&transition=" + transitionTime + "&gain=" + ROUND(Hb*100) + "&red=" + color.RED + "&green=" + color.GREEN + "&blue=" + color.BLUE);


VAR now := NOW();
debounceTimestamp := now.Ticks + transitionTime + 500;
Színhőmérséklet olvasása
VAR now := NOW();

IF now.Ticks < debounceTimestamp
    RETURN(Ct);
END

INT value := PARSEJSON(jsonStatus, "$.lights[0].temp", 1);
STRING mode := PARSEJSON(jsonStatus, "$.lights[0].mode", 1);

IF ISNULL(value) OR mode != "white"
    RETURN(NaN);
END
 
value
Színhőmérséklet írása
IF Ct = NaN
    RETURN(0);
END

VAR temp := MIN(Ct, 6500);
temp := MAX(temp, 3000);

SENDHTTPREQUEST("light/0?mode=white&transition=" + transitionTime + "&brightness=" + ROUND(Hb*100) + "&temp=" + temp);

VAR now := NOW();
debounceTimestamp := now.Ticks + transitionTime + 500;
Villamos mérő Villanyóra Csak olvasható

Energiafogyasztás mérés — pillanatnyi teljesítmény (kW) és összesített energia (kWh)

numeric Egység: W / kWh

Villamos mérő

Összes fogyasztás olvasása
IF LENGTH(jsonStatus) = 0
    RETURN(NaN);
END

VAR power := PARSEJSON(jsonStatus, "$.meters[0].power");
VAR total := PARSEJSON(jsonStatus, "$.meters[0].total");
BOOL isOn := PARSEJSON(jsonStatus, "$.lights[0].ison");

IF ISNULL(power) OR ISNULL(total) OR (ison AND power=0)
	ADDWARNING("To enable power monitoring, open device settings in Shelly app or web browser and configure device model in Settings->Device Model");
	
    RETURN(NaN);
END

total / 60000.0
Igény olvasása
IF LENGTH(jsonStatus) = 0
    RETURN(NaN);
END

VAR power := PARSEJSON(jsonStatus, "$.meters[0].power", 1);

IF ISNULL(power)
    RETURN(NaN);
END

power / 1000.0
Kapcsolat: Packet Parser → HTTP
Lehetséges fejlesztések (4)
  • Light Effect — Effect index (0=Off, 1=Meteor Shower, 2=Gradual Change, 3=Breath, 4=Flash, 5=On/Off Gradual, 6=Red/Green Change). Available in both /light/0 and MQTT color/0/set.
  • WiFi Signal Strength — WiFi RSSI in dBm, available in /status response (HTTP only; MQTT template reads it as service attribute already)
  • White Channel — Dedicated white LED channel (0–255) in color mode, separate from CCT. Available in /light/0?white=N.
  • Connection Status (MQTT) — LWT topic — true on connect, false on disconnect. Could detect offline bulbs.

Források