TapHome

Shelly DUO RGBW

Packet Parser → HTTP
Beküldő
Utoljára frissítve: 03. 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 Module Modul
Szerviz attribútumok
IP Address
MAC Address
WIFI signal
Cloud enabled
Cloud connected
MQTT connected
Device time
FW update available
Uptime
RAM
Szerviz műveletek
Enable cloud
Reboot
Egyéni változók
jsonStatus (string)
debounceTimestamp (numeric)
transitionTime (numeric) = TransitionTime

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");
Shelly DUO RGBW ${deviceType_Light} HSB lámpa

Shelly DUO RGBW ${deviceType_Light}

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;
Shelly DUO RGBW Electric meter Villanyóra

Shelly DUO RGBW Electric meter

Ö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