TapHome

Shelly DUO

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

A Shelly DUO egy Wi-Fi LED izzó E27-es foglalattal, amely támogatja a fényerőszabályozást és az állítható fehér színhőmérsékletet (CCT) 2700 K (meleg fehér) és 6500 K (nappali fény) között. A TapHome lokálisan integrálódik az izzóval Wi-Fi-n keresztül HTTP REST API vagy MQTT használatával. Felhőkapcsolat nem szükséges.

Két TapHome sablon érhető el: egy HTTP sablon egyetlen izzóhoz és egy MQTT sablon, amely akár 5 DUO izzót is vezérelhet egyetlen MQTT broker kapcsolaton keresztül. Mindkét sablon ugyanazokat az eszköztípusokat teszi elérhetővé izzónként — egy fényeszközt fényerő- és CCT-szabályozással, valamint egy energiamérőt a teljesítményfigyeléshez.

Konfiguráció

HTTP sablon

A HTTP sablon az izzó IP-címét igényli (vagy az mDNS hosztnevet ShellyBulbDuo-{MAC}.local). A TapHome 2,5 másodpercenként lekérdezi a /status végpontot, és a JSON választ a jsonStatus egyéni változóba menti. Az egyes eszközszkriptek a mentett választ elemzik redundáns HTTP hívások nélkül.

A sablon két importparamétert fogad:

  • IP-cím — az izzó helyi IP-je (alapértelmezett 192.168.0.1)
  • Átmeneti idő — a fényátmenet időtartama ezredmásodpercben (alapértelmezett 300 ms)
MQTT sablon

Az MQTT sablon a broker IP-jét, portját és az egyes izzók Device ID-jét igényli (formátum: ShellyBulbDuo-DEVICEID). A Device ID megtalálható a Shelly webes felületén a Settings > Device Info alatt, vagy a GET http://{bulb-ip}/settings mqtt.id mezőjében.

A sablon egyetlen modulon keresztül akár 5 DUO izzót támogat. Minden izzót saját topic változója azonosít (bulb1topic-tól bulb5topic-ig). A nem használt izzóhelyek az alapértelmezett helyőrző értéken hagyhatók.

A sablon három importparamétert fogad:

  • MQTT Broker IP — a broker címe (alapértelmezett 192.168.0.1)
  • MQTT Broker port — a broker portja (alapértelmezett 1883)
  • Átmeneti idő — a fényátmenet időtartama ezredmásodpercben (alapértelmezett 300 ms)

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

A sablon a DUO-t fehér fényeszközként teszi elérhetővé két vezérelhető paraméterrel:

  • Fényerő — a lights[0].brightness-ből olvasva (0–100, belsőleg 0,0–1,0-ra konvertálva) és lights[0].ison; vezérlés a /light/0?turn=on|off&brightness=N (HTTP) vagy JSON publikálással a light/0/set topicba (MQTT)
  • Színhőmérséklet — a lights[0].temp-ből olvasva (2700–6500 K); vezérlés a /light/0?temp=K (HTTP) vagy a temp mező a JSON payloadban (MQTT)

Mindkét paraméter egyetlen írási parancsban kerül elküldésre. Az átmeneti idő paraméter az összes változás fokozatos átmenetének időtartamát szabályozza.

Amikor a fény kikapcsol (fényerő 0-ra állítva), a sablon turn=off-ot küld (HTTP) vagy off-ot publikál a light/0/command topicba (MQTT).

Debounce mechanizmus

A HTTP sablon debounce védelmet tartalmaz az elavult adatok megelőzésére fényátmenetek során. Minden írási parancs után a sablon figyelmen kívül hagyja a /status olvasásokat az átmeneti idő plusz 500 ms időtartamig. Ebben az időszakban az olvasó szkriptek az utolsó ismert értékeket adják vissza az eszköz lekérdezése helyett. Ez megakadályozza a köztes állapotok rövid megjelenítését a felhasználói felületen, amíg az izzó átmenet alatt van.

Az MQTT sablon nem igényel debounce-t — közvetlenül az izzótól fogadja az állapotfrissítéseket, ahogy azok bekövetkeznek.

Teljesítménymérés

A beépített energiamérő két értéket olvas:

  • Pillanatnyi teljesítménymeters[0].power wattban, kW-ra konvertálva (osztva 1000-rel)
  • Összesített fogyasztásmeters[0].total wattpercben, kWh-ra konvertálva (osztva 60 000-rel)

A mérő csak olvasható, és automatikusan frissül minden lekérdezési ciklussal (HTTP) vagy minden MQTT üzenettel.

A teljesítményfigyelés engedélyezéséhez az eszközmodellt konfigurálni kell a Shelly alkalmazásban vagy webböngészőben a Settings > Device Model alatt. Ha az izzó be van kapcsolva, de a teljesítmény nullát mutat, a sablon figyelmeztetést jelenít meg erről a konfigurációs lépésről.

Szervizdiagnosztika (HTTP sablon)

A HTTP sablon 10 szervizattribútumot tesz elérhetővé:

  • Hálózati info — IP-cím, MAC-cím (kettőspontos elválasztókkal formázva), Wi-Fi jelszint (dB)
  • Csatlakoztathatóság — cloud engedélyezve/csatlakoztatva, MQTT csatlakoztatva
  • Eszközinfo — eszköz ideje, üzemidő (nap/óra/perc formátumban), RAM-használat
  • Firmware — firmware frissítés elérhető
Szervizműveletek (HTTP sablon)

Két szervizművelet érhető el:

  • 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 a fényidőzítőt (aktív jelző és hátralévő másodpercek), automatikus kikapcsolási időzítőt a fény végponton, belső eszközhőmérsékletet, Wi-Fi jelszintet önálló szenzoreszközként és MQTT online/offline LWT topicot a csatlakozási állapot érzékeléséhez is elérhetővé teszi. 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 a DUO csatlakozik a Wi-Fi-hez és érvényes IP-címmel rendelkezik
  2. Próbálja az mDNS hosztnevet (ShellyBulbDuo-AABBCCDDEE.local) az IP-cím helyett — az IP megváltozhatott a DHCP megújítás után
  3. Nyissa meg a http://{bulb-ip}/shelly címet a böngészőben — ha "type":"SHBDUO-1" tartalmú JSON-nel válaszol, az izzó elérhető
  4. Ellenőrizze, hogy a TapHome CCU és a DUO ugyanazon a hálózaton / VLAN-on van
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ó nem válaszol
  1. Ellenőrizze, hogy az MQTT engedélyezve van a Shelly 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. ShellyBulbDuo-B929CC)
  4. Használjon MQTT klienst (pl. MQTT Explorer) a shellies/# feliratkozáshoz, és ellenőrizze, hogy az izzó publikál üzeneteket
A fényátmenetek rángatónak tűnnek
  1. Növelje az átmeneti idő paramétert — az alapértelmezett 300 ms túl rövid lehet nagy fényerőváltozásokhoz
  2. HTTP használata esetén győződjön meg arról, hogy más rendszer nem kérdezi le egyidejűleg az izzót — a Gen1 eszközök csak 2 egyidejű kapcsolatot támogatnak

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 eszközt, 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 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 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");
Fény Fehér lámpa

CCT fehér fény (2700–6500 K) — fényerőszabályozás és színhőmérséklet-vezérlés

numeric Egység: %, K json_path

Fény

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

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

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

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
    SENDHTTPREQUEST("light/0?turn=on&transition=" + transitionTime + "&brightness=" + ROUND(Hb*100.0));
ELSE
    SENDHTTPREQUEST("light/0?turn=off&transition=" + transitionTime);
END

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

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

IF ISNULL(value)
    RETURN(NaN);
END
 
value
Színhőmérséklet írása
SENDHTTPREQUEST("light/0?transition=" + transitionTime + "&brightness=" + ROUND(Hb*100) + "&temp=" + Ct);

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 json_path

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 (7)
  • Light Timer Active — Boolean — whether a countdown timer is currently active on the light output.
  • Timer Remaining — Seconds remaining on active timer. Available in /status response.
  • Auto-off Timer — Auto-off timer in seconds, could be added as service action or light parameter.
  • WiFi Signal Strength (as device) — WiFi RSSI in dBm. HTTP template exposes it as service attribute but not as a standalone sensor device.
  • Internal Device Temperature — Internal temperature in celsius. Available in /status for Gen1 devices. Not exposed in DUO template.
  • MQTT Real-time Power (as device attribute) — MQTT template reads power in electric meter device but does not expose it as a service attribute on the light device.
  • Connection Status — LWT topic — true on connect, false on disconnect. Could detect offline bulbs.

Források