TapHome
Oficiální · TapHome Ověřená Osvětlení

Shelly DUO MQTT

Wi-Fi LED žárovka Shelly DUO s laditelnou bílou (E27/GU10) připojená k TapHome přes MQTT. Jas, CCT 3000-6500 K a měření spotřeby pro každou žárovku — až 5 žárovek přes jeden broker.

ShellyPacket Parser → MQTT10 zařízeníRevize 1.1 Poslední aktualizace: 25. dubna 2026
Shelly DUO MQTT

Import do aplikace TapHomeHardware › Packet Parser › Přidat ze šablony

Stáhnout šablonu
Na této stránce

Toto zařízení podporuje mDNS

Místo IP adresy můžete zařízení oslovit na:

ShellyBulbDuo-{MAC}.local

Nahraďte {MAC} MAC adresou zařízení (velká písmena, bez dvojteček).

TapHome podporuje mDNS — použití hostname je spolehlivější než statická IP.

Adresa v síti

U MQTT brokeru vestavěného v TapHome zadejte v TapHome jako adresu brokeru 127.0.0.1. V zařízení zadejte IP adresu TapHome Core a jednotce Core dejte rezervaci IP v routeru.

Příprava sítě

Návod na integraci

Shelly DUO (model SHBDUO-1) je Gen1 Wi-Fi LED chytrá žárovka dostupná v provedení E27 a GU10. Běžná verze DUO je pouze bílá s laditelnou teplotou barvy a stmívatelným jasem — nemá žádné RGB kanály (RGB-schopná verze je DUO RGBW / shellycolorbulb- a používá samostatnou šablonu). Toto je MQTT varianta integrace do TapHome; pro jednu žárovku je k dispozici i HTTP varianta.

Šablona podporuje až 5 žárovek DUO na jeden modul přes sdílený MQTT broker v lokální síti. Každá žárovka je identifikována proměnnou modulu bulbNtopic, která ukazuje na MQTT Device ID žárovky, a poskytuje zařízení bílého světla i elektroměr — celkem 10 zařízení.

Konfigurace

MQTT broker

Šablona potřebuje MQTT broker dostupný v lokální síti — funguje jakýkoli standardní broker (Mosquitto, EMQX nebo broker zabudovaný v Home Assistant). Broker běží na portu 1883 bez TLS (Gen1 hardware Shelly nepodporuje MQTT přes TLS), proto ho ponechte v důvěryhodném segmentu.

Po importu šablony nastavte připojení k brokeru v import parametrech modulu:

ParametrVýchozíPopis
MQTT Broker IP (IpAddress)192.168.0.1Adresa brokeru v lokální síti
MQTT Broker port (Port)1883Standardní MQTT port (bez TLS)
Transition time (TransitionTime)300Výchozí čas přechodu jasu/CCT na každé žárovce v milisekundách

Zapnutí MQTT na žárovce

Každá Shelly DUO musí být nasměrována na broker, než začne publikovat nebo přijímat příkazy:

  1. Otevřete webové rozhraní žárovky na http://<bulb-ip> (IP najdete v DHCP tabulce routeru nebo v Shelly app)
  2. Přejděte na Internet & Security → Advanced — MQTT a zapněte MQTT
  3. Zadejte server brokeru (IP a port, např. 192.168.0.10:1883) a username / password ponechte prázdné (TapHome šablona autentizaci brokeru nepodporuje)
  4. Volitelně upravte MQTT prefix, pokud nechcete výchozí shellies/ShellyBulbDuo-<MAC6>
  5. Uložte a restartujte žárovku — po opětovném připojení začne publikovat na shellies/ShellyBulbDuo-<id>/light/0/status

Device ID (bulbNtopic)

Každá Shelly DUO má unikátní MQTT Device ID ve formátu ShellyBulbDuo-<MAC6>, kde <MAC6> je posledních 6 hex znaků MAC adresy (např. ShellyBulbDuo-B929CC). Stejná hodnota je i mDNS hostname žárovky (ShellyBulbDuo-<MAC6>.local).

Device ID najdete:

  • V Shelly web UI: Settings → Device Info → pole mqtt.id
  • Přes HTTP: GET http://<bulb-ip>/settings → mqtt.id
  • Na štítku zařízení / obalu (posledních 6 znaků MAC, malé hex)
  • Jako mDNS hostname, např. ShellyBulbDuo-b929cc.local

Otevřete modul Shelly DUO MQTT v TapHome a vyplňte topic proměnné pro každou žárovku, kterou chcete použít:

ProměnnáVýchozíPopis
bulb1topicShellyBulbDuo-deviceid1MQTT Device ID první žárovky DUO
bulb2topicShellyBulbDuo-deviceid2MQTT Device ID druhé žárovky DUO
bulb3topicShellyBulbDuo-deviceid3MQTT Device ID třetí žárovky DUO
bulb4topicShellyBulbDuo-deviceid4MQTT Device ID čtvrté žárovky DUO
bulb5topicShellyBulbDuo-deviceid5MQTT Device ID páté žárovky DUO

Nahraďte placeholder skutečným Device ID pro každou žárovku, kterou chcete ovládat (např. ShellyBulbDuo-B929CC). Modul se přihlásí na shellies/# a listener skripty pro jednotlivé žárovky filtrují zprávy podle prefixu topicu. Sloty, které zůstaly na placeholder hodnotě, vyhodí chybu v TapHome, dokud je nenakonfigurujete nebo neodstraníte ze šablony.

Čas přechodu pro každou žárovku

Každé Light zařízení má proměnnou transitionTime (v milisekundách, rozsah 0-5000 ms), která je ve výchozím stavu odvozena z modulového import parametru TransitionTime. Přepište ji na jednotlivých žárovkách, pokud chcete jiné časy přechodu — hodnota se odešle při každé změně jasu nebo CCT jako pole transition v JSON payloadu /light/0/set.

Zapnutí MQTT na Gen1 zařízení Shelly vypne Shelly Cloud — obě nemohou běžet současně. HTTP REST a CoIoT zůstávají dostupné, takže žárovka je nadále dosažitelná z lokální sítě.

Schopnosti zařízení

Šablona poskytuje 10 zařízení na modul — 5 laditelných bílých světel a 5 elektroměrů, jeden pár na fyzickou žárovku. Všech 5 párů je funkčně identických, liší se pouze bulbNtopic, na který naslouchají.

Ovládání světla

Každé Light zařízení je v TapHome mapováno jako White Light se dvěma ovládacími vlastnostmi:

  • Jas — čtený z pole $.brightness (0-100) JSON zprávy light/0/status, škálovaný na rozsah 0.0-1.0 v TapHome; zapisovaný přes light/0/set s "turn":"on", "brightness":N, "transition":<ms>
  • Teplota světla — čtená z $.temp (3000-6500 K), zapisovaná přes light/0/set s "temp":K, "transition":<ms>

Vypnutí světla používá samostatný topic light/0/command s payloadem off, což je rychlejší než sestavovat JSON set zprávu. Aktualizace jasu a CCT vždy obsahují pole transition, takže žárovka přechází plynule místo skoku.

Měření spotřeby

Každý Electric Meter se přihlašuje na dva skalární topicy, které žárovka publikuje přibližně jednou za sekundu:

Hodnota v TapHomeZdrojový topicZdrojová jednotkaKonverzeZobrazená jednotka
Okamžitý výkonshellies/ShellyBulbDuo-<id>/light/0/powerW÷ 1000kW
Celková spotřebashellies/ShellyBulbDuo-<id>/light/0/energywatt-minuty÷ 60000kWh

Konverze watt-minut na kWh je nutná, protože firmware Shelly Gen1 reportuje kumulativní energii ve W·min, nikoli ve W·h.

Měření spotřeby tiše vrací nulu, dokud není nastaven Settings → Device Model (E27 nebo GU10) v Shelly app nebo web UI. TapHome listener při prvním čtení zobrazí informační banner, který na to upozorní. Po nastavení modelu žárovka okamžitě začne reportovat nenulové hodnoty power/energy.

Řešení potíží

Žárovka nereaguje

  1. Ověřte, že žárovka je připojena k Wi-Fi a dosažitelná v LAN — otevřete http://<bulb-ip>/shelly. Odpověď obsahující "type":"SHBDUO-1" potvrdí zařízení.
  2. Zkuste mDNS hostname (ShellyBulbDuo-<MAC6>.local) místo IP adresy — obnovení DHCP nebo restarty routeru mohou změnit IP.
  3. Potvrďte, že MQTT je zapnuté v nastavení Internet & Security → Advanced — MQTT žárovky a že IP/port brokeru se shodují s import parametry v TapHome.
  4. Použijte MQTT klienta (např. MQTT Explorer nebo mosquitto_sub -h <broker> -t 'shellies/#' -v), abyste ověřili, že žárovka publikuje na shellies/ShellyBulbDuo-<id>/....

Chyba “Set correct ‘bulbNtopic’ value”

Listener skript hodí tuto chybu, když je bulbNtopic stále nastaven na výchozí placeholder (ShellyBulbDuo-deviceid). Buď doplňte skutečné Device ID pro daný slot, nebo odstraňte nepoužívaná zařízení ze šablony, pokud máte jen pár žárovek.

Spotřeba a energie zůstávají na nule

  1. Otevřete Shelly app (nebo web UI) → Settings → Device Model a vyberte odpovídající sub-model (Shelly Bulb DUO E27 nebo Shelly Bulb DUO GU10). Žárovka začne počítat power/energy až po identifikaci modelu.
  2. Ověřte, že žárovka je skutečně zapnutá — měřič se aktualizuje pouze při protékajícím proudu.
  3. Přihlaste se přímo na shellies/ShellyBulbDuo-<id>/light/0/power přes MQTT klienta a ověřte, že žárovka publikuje nenulovou hodnotu.

Nejteplejší CCT klesá pouze na 3000 K

TapHome XML omezuje CCT na 3000-6500 K, aby odpovídalo marketingovému rozsahu E27. Samotný hardware podporuje 2700-6500 K na sub-modelu GU10 a přes syrové API /light/0/set, takže nejteplejších 300 K rozsahu GU10 je přes TapHome šablonu nedosažitelných.

Přechody světla působí trhaně

Zvyšte proměnnou transitionTime na dané žárovce (nebo výchozí modulovou hodnotu TransitionTime). 300 ms je v pořádku pro malé kroky stmívání, ale při velkých změnách jasu nebo CCT to může působit stupňovitě — zkuste 800-1500 ms pro plynulejší přechod.

Zařízení Shelly Gen1 používají holé MQTT na portu 1883 — TLS není podporováno. TapHome šablona také nezpřístupňuje broker username / password, proto použijte neautentizovaný broker v důvěryhodné lokální síti nebo VLAN.

Jak nainstalovat v TapHome

Předpoklady

  • Zařízení Shelly připojené k Wi-Fi (2,4 GHz), např. přes aplikaci Shelly nebo vlastní přístupový bod zařízení
  • MQTT broker běžící ve vaší lokální síti (např. Mosquitto, Home Assistant nebo vestavěný broker TapHome)
  • TapHome CCU ve stejné síti jako broker

Na zařízeních Gen1 povolení MQTT vypne Shelly Cloud. Obojí nemůže běžet současně. Na zařízeních Gen2/Plus toto omezení neplatí.

Krok 1 — Povolte MQTT na zařízení Shelly

Zařízení Gen1 (Shelly 1, 1PM, 2.5, EM, 3EM, Plug S, RGBW2, Dimmer, TRV…)

  1. Otevřete webové rozhraní Shelly: http://<device-ip>/
  2. Přejděte na Internet & Security → Advanced — MQTT
  3. Povolte MQTT
  4. Nastavte MQTT Server: <broker-ip>:<port> (např. 192.168.1.10:1883)
  5. Volitelně nastavte MQTT User a MQTT Password, pokud váš broker vyžaduje autentifikaci
  6. Klikněte na Save — zařízení se restartuje a připojí k brokeru

Zařízení Gen2 / Plus (Shelly Plus 1, Plus 1PM, Plus 2PM, Plus Plug S, Plus H&T, Pro 3EM…)

  1. Otevřete webové rozhraní Shelly: http://<device-ip>/
  2. Přejděte na Settings → MQTT
  3. Povolte MQTT
  4. Nastavte Server: <broker-ip>:<port> (např. 192.168.1.10:1883)
  5. Client ID je předvyplněné ID zařízení (např. shellyplus1pm-AABBCCDDEE) — ponechte tak, pokud nemáte konkrétní důvod ke změně
  6. Klikněte na Save a restartujte zařízení

U vestavěného brokeru TapHome je <broker-ip> IP adresa TapHome Core. Dejte jednotce Core rezervaci IP v routeru, jinak zařízení ztratí broker, když router adresu změní → Příprava sítě.

Pro ověření funkčnosti MQTT použijte MQTT klienta (např. MQTT Explorer) a přihlaste se k odběru shellies/# (Gen1) nebo <device-id>/# (Gen2). Měli byste vidět stavové zprávy ze zařízení.

Krok 2 — Zjistěte Device ID / MQTT Client ID

Některé šablony vyžadují parametr Device ID nebo MQTT Client ID. Jde o jedinečný identifikátor používaný v MQTT topicích.

  • Gen1: nachází se na štítku jako MAC adresa (např. AABBCCDDEE). Device ID = shelly<model>-<mac>, např. shelly1pm-AABBCCDDEE
  • Gen2/Plus: nachází se ve webovém rozhraní Shelly v části Settings → Device Info → Device ID, nebo na štítku zařízení

Krok 3 — Konfigurace v TapHome

  1. V TapHome přidejte nový modul Packet Parser (MQTT)
  2. IP Address: pro vestavěný broker TapHome 127.0.0.1 (jednotka se připojuje sama k sobě, adresa se nikdy nezmění); pro externí broker jeho IP adresa (např. 192.168.1.10)
  3. Port: 1883 (výchozí; pro TLS použijte 8883)
  4. Device ID / MQTT Client ID: zadejte hodnotu z kroku 2 (pokud to šablona vyžaduje)
  5. Importujte šablonu — TapHome se automaticky přihlásí k odběru topiců zařízení

Dostupná zařízení 10

Tato zařízení se po importu zobrazí v TapHome.

Shelly DUO MQTT Modul
Vlastní proměnné
bulb1topic (string) = ShellyBulbDuo-deviceid1MQTT Device ID první žárovky Shelly DUO — formát je 'ShellyBulbDuo-DEVICEID'
Open http://shellyIpAddress in a browser → Settings → Device Info → copy the mqtt.id (or Device ID) field. Default mDNS hostname matches the MQTT id (ShellyBulbDuo-{MAC6}.local).
bulb2topic (string) = ShellyBulbDuo-deviceid2MQTT Device ID druhé žárovky Shelly DUO
bulb3topic (string) = ShellyBulbDuo-deviceid3MQTT Device ID třetí žárovky Shelly DUO
bulb4topic (string) = ShellyBulbDuo-deviceid4MQTT Device ID čtvrté žárovky Shelly DUO
bulb5topic (string) = ShellyBulbDuo-deviceid5MQTT Device ID páté žárovky Shelly DUO
Elektroměr 1 Elektroměr Pouze ke čtení

Okamžitý výkon (kW) a kumulativní spotřeba (kWh) žárovky 1 — vyžaduje nastavení Settings → Device Model v Shelly app, jinak obě hodnoty zůstávají na 0

numeric Jednotka: kW / kWh

Elektroměr 1

Listener
ADDINFO("To enable power monitoring, open device settings in Shelly app or web browser and configure device model in Settings->Device Model");

IF(INDEXOF(bulb1topic, "ShellyBulbDuo-deviceid") = 0)
    ADDERROR("Set correct 'bulb1topic' value in module variables. Topic format is 'ShellyBulbDuo-<deviceid>'. The Device ID can be found by opening url 'http://shellyIpAddress', in Settings -> Device info.");
    RETURN(-1);
END

IF INDEXOF(RECEIVEDMSG.TOPIC, "shellies/" + bulb1topic + "/light/0/power") = 0
    Ed := TODOUBLE(TOSTRING(RECEIVEDMSG.PAYLOAD)) / 1000.0;
ELSEIF INDEXOF(RECEIVEDMSG.TOPIC, "shellies/" + bulb1topic + "/light/0/energy") = 0
    To := TODOUBLE(TOSTRING(RECEIVEDMSG.PAYLOAD)) / 60000.0;
END
Světlo 1 Bílé světlo Čtení i zápis

Žárovka 1 s laditelnou bílou — zap/vyp, jas 0-100 % a teplota světla 3000-6500 K s plynulými přechody

json Jednotka: % / K json_path
Proměnná: transitionTime — Čas přechodu pro danou žárovku v milisekundách (0-5000 ms), odvozený z import parametru TransitionTime

Světlo 1

Listener
IF(INDEXOF(bulb1topic, "ShellyBulbDuo-deviceid") = 0)
    ADDERROR("Set correct 'bulb1topic' value in module variables. Topic format is 'ShellyBulbDuo-<deviceid>'. The Device ID can be found by opening url 'http://shellyIpAddress', in Settings -> Device info.");
    RETURN(-1);
END

IF INDEXOF(RECEIVEDMSG.TOPIC, "shellies/" + bulb1topic + "/light/0/status") != 0
    RETURN(0);
END

IF RECEIVEDMSG.PAYLOAD.LENGTH = 0
    RETURN(0);
END

VAR ison := PARSEJSON(RECEIVEDMSG.PAYLOAD, "$.ison", 1);
VAR bright := PARSEJSON(RECEIVEDMSG.PAYLOAD, "$.brightness");

IF ISNULL(ison) OR ISNULL(bright)
    RETURN(0);
END

Ct := PARSEJSON(RECEIVEDMSG.PAYLOAD, "$.temp", 1);

IF ison
    Hb := bright / 100.0;
    St := isOn;
ELSE 
    Hb := 0;
    St := 0;
END
Zápis jasu
IF St > 0.5
    VAR topic := "shellies/" + bulb1topic + "/light/0/set";    
    MQTTPUBLISH(topic, "{\"turn\": \"on\", \"transition\": " + transitionTime + ", \"brightness\": " + ROUND(Hb*100.0) + "}");
ELSE
    MQTTPUBLISH("shellies/" + bulb1topic + "/light/0/command", "off");
END
Zápis barevné teploty
IF ISNAN(Ct)
    RETURN(0);
END

VAR topic := "shellies/" + bulb1topic + "/light/0/set";
MQTTPUBLISH(topic, "{\"transition\": " + transitionTime + ", \"temp\":" + Ct + "}");
Elektroměr 2 Elektroměr Pouze ke čtení

Okamžitý výkon (kW) a kumulativní spotřeba (kWh) žárovky 2 — vyžaduje nastavení Settings → Device Model v Shelly app, jinak obě hodnoty zůstávají na 0

numeric Jednotka: kW / kWh

Elektroměr 2

Listener
ADDINFO("To enable power monitoring, open device settings in Shelly app or web browser and configure device model in Settings->Device Model");

IF(INDEXOF(bulb2topic, "ShellyBulbDuo-deviceid") = 0)
    ADDERROR("Set correct 'bulb2topic' value in module variables. Topic format is 'ShellyBulbDuo-<deviceid>'. The Device ID can be found by opening url 'http://shellyIpAddress', in Settings -> Device info.");
    RETURN(-1);
END

IF INDEXOF(RECEIVEDMSG.TOPIC, "shellies/" + bulb2topic + "/light/0/power") = 0
    Ed := TODOUBLE(TOSTRING(RECEIVEDMSG.PAYLOAD)) / 1000.0;
ELSEIF INDEXOF(RECEIVEDMSG.TOPIC, "shellies/" + bulb2topic + "/light/0/energy") = 0
    To := TODOUBLE(TOSTRING(RECEIVEDMSG.PAYLOAD)) / 60000.0;
END
Světlo 2 Bílé světlo Čtení i zápis

Žárovka 2 s laditelnou bílou — zap/vyp, jas 0-100 % a teplota světla 3000-6500 K s plynulými přechody

json Jednotka: % / K json_path
Proměnná: transitionTime — Čas přechodu pro danou žárovku v milisekundách (0-5000 ms), odvozený z import parametru TransitionTime

Světlo 2

Listener
IF(INDEXOF(bulb2topic, "ShellyBulbDuo-deviceid") = 0)
    ADDERROR("Set correct 'bulb2topic' value in module variables. Topic format is 'ShellyBulbDuo-<deviceid>'. The Device ID can be found by opening url 'http://shellyIpAddress', in Settings -> Device info.");
    RETURN(-1);
END

IF INDEXOF(RECEIVEDMSG.TOPIC, "shellies/" + bulb2topic + "/light/0/status") != 0
    RETURN(0);
END

IF RECEIVEDMSG.PAYLOAD.LENGTH = 0
    RETURN(0);
END

VAR ison := PARSEJSON(RECEIVEDMSG.PAYLOAD, "$.ison", 1);
VAR bright := PARSEJSON(RECEIVEDMSG.PAYLOAD, "$.brightness");

IF ISNULL(ison) OR ISNULL(bright)
    RETURN(0);
END

Ct := PARSEJSON(RECEIVEDMSG.PAYLOAD, "$.temp", 1);

IF ison
    Hb := bright / 100.0;
    St := isOn;
ELSE 
    Hb := 0;
    St := 0;
END
Zápis jasu
IF St > 0.5
    VAR topic := "shellies/" + bulb2topic + "/light/0/set";    
    MQTTPUBLISH(topic, "{\"turn\": \"on\", \"transition\": " + transitionTime + ", \"brightness\": " + ROUND(Hb*100.0) + "}");
ELSE
    MQTTPUBLISH("shellies/" + bulb2topic + "/light/0/command", "off");
END
Zápis barevné teploty
IF ISNAN(Ct)
    RETURN(0);
END

VAR topic := "shellies/" + bulb2topic + "/light/0/set";
MQTTPUBLISH(topic, "{\"transition\": " + transitionTime + ", \"temp\":" + Ct + "}");
Elektroměr 3 Elektroměr Pouze ke čtení

Okamžitý výkon (kW) a kumulativní spotřeba (kWh) žárovky 3 — vyžaduje nastavení Settings → Device Model v Shelly app, jinak obě hodnoty zůstávají na 0

numeric Jednotka: kW / kWh

Elektroměr 3

Listener
ADDINFO("To enable power monitoring, open device settings in Shelly app or web browser and configure device model in Settings->Device Model");

IF(INDEXOF(bulb3topic, "ShellyBulbDuo-deviceid") = 0)
    ADDERROR("Set correct 'bulb3topic' value in module variables. Topic format is 'ShellyBulbDuo-<deviceid>'. The Device ID can be found by opening url 'http://shellyIpAddress', in Settings -> Device info.");
    RETURN(-1);
END

IF INDEXOF(RECEIVEDMSG.TOPIC, "shellies/" + bulb3topic + "/light/0/power") = 0
    Ed := TODOUBLE(TOSTRING(RECEIVEDMSG.PAYLOAD)) / 1000.0;
ELSEIF INDEXOF(RECEIVEDMSG.TOPIC, "shellies/" + bulb3topic + "/light/0/energy") = 0
    To := TODOUBLE(TOSTRING(RECEIVEDMSG.PAYLOAD)) / 60000.0;
END
Světlo 3 Bílé světlo Čtení i zápis

Žárovka 3 s laditelnou bílou — zap/vyp, jas 0-100 % a teplota světla 3000-6500 K s plynulými přechody

json Jednotka: % / K json_path
Proměnná: transitionTime — Čas přechodu pro danou žárovku v milisekundách (0-5000 ms), odvozený z import parametru TransitionTime

Světlo 3

Listener
IF(INDEXOF(bulb3topic, "ShellyBulbDuo-deviceid") = 0)
    ADDERROR("Set correct 'bulb3topic' value in module variables. Topic format is 'ShellyBulbDuo-<deviceid>'. The Device ID can be found by opening url 'http://shellyIpAddress', in Settings -> Device info.");
    RETURN(-1);
END

IF INDEXOF(RECEIVEDMSG.TOPIC, "shellies/" + bulb3topic + "/light/0/status") != 0
    RETURN(0);
END

IF RECEIVEDMSG.PAYLOAD.LENGTH = 0
    RETURN(0);
END

VAR ison := PARSEJSON(RECEIVEDMSG.PAYLOAD, "$.ison", 1);
VAR bright := PARSEJSON(RECEIVEDMSG.PAYLOAD, "$.brightness");

IF ISNULL(ison) OR ISNULL(bright)
    RETURN(0);
END

Ct := PARSEJSON(RECEIVEDMSG.PAYLOAD, "$.temp", 1);

IF ison
    Hb := bright / 100.0;
    St := isOn;
ELSE 
    Hb := 0;
    St := 0;
END
Zápis jasu
IF St > 0.5
    VAR topic := "shellies/" + bulb3topic + "/light/0/set";    
    MQTTPUBLISH(topic, "{\"turn\": \"on\", \"transition\": " + transitionTime + ", \"brightness\": " + ROUND(Hb*100.0) + "}");
ELSE
    MQTTPUBLISH("shellies/" + bulb3topic + "/light/0/command", "off");
END
Zápis barevné teploty
IF ISNAN(Ct)
    RETURN(0);
END

VAR topic := "shellies/" + bulb3topic + "/light/0/set";
MQTTPUBLISH(topic, "{\"transition\": " + transitionTime + ", \"temp\":" + Ct + "}");
Elektroměr 4 Elektroměr Pouze ke čtení

Okamžitý výkon (kW) a kumulativní spotřeba (kWh) žárovky 4 — vyžaduje nastavení Settings → Device Model v Shelly app, jinak obě hodnoty zůstávají na 0

numeric Jednotka: kW / kWh

Elektroměr 4

Listener
ADDINFO("To enable power monitoring, open device settings in Shelly app or web browser and configure device model in Settings->Device Model");

IF(INDEXOF(bulb4topic, "ShellyBulbDuo-deviceid") = 0)
    ADDERROR("Set correct 'bulb4topic' value in module variables. Topic format is 'ShellyBulbDuo-<deviceid>'. The Device ID can be found by opening url 'http://shellyIpAddress', in Settings -> Device info.");
    RETURN(-1);
END

IF INDEXOF(RECEIVEDMSG.TOPIC, "shellies/" + bulb4topic + "/light/0/power") = 0
    Ed := TODOUBLE(TOSTRING(RECEIVEDMSG.PAYLOAD)) / 1000.0;
ELSEIF INDEXOF(RECEIVEDMSG.TOPIC, "shellies/" + bulb4topic + "/light/0/energy") = 0
    To := TODOUBLE(TOSTRING(RECEIVEDMSG.PAYLOAD)) / 60000.0;
END
Světlo 4 Bílé světlo Čtení i zápis

Žárovka 4 s laditelnou bílou — zap/vyp, jas 0-100 % a teplota světla 3000-6500 K s plynulými přechody

json Jednotka: % / K json_path
Proměnná: transitionTime — Čas přechodu pro danou žárovku v milisekundách (0-5000 ms), odvozený z import parametru TransitionTime

Světlo 4

Listener
IF(INDEXOF(bulb4topic, "ShellyBulbDuo-deviceid") = 0)
    ADDERROR("Set correct 'bulb4topic' value in module variables. Topic format is 'ShellyBulbDuo-<deviceid>'. The Device ID can be found by opening url 'http://shellyIpAddress', in Settings -> Device info.");
    RETURN(-1);
END

IF INDEXOF(RECEIVEDMSG.TOPIC, "shellies/" + bulb4topic + "/light/0/status") != 0
    RETURN(0);
END

IF RECEIVEDMSG.PAYLOAD.LENGTH = 0
    RETURN(0);
END

VAR ison := PARSEJSON(RECEIVEDMSG.PAYLOAD, "$.ison", 1);
VAR bright := PARSEJSON(RECEIVEDMSG.PAYLOAD, "$.brightness");

IF ISNULL(ison) OR ISNULL(bright)
    RETURN(0);
END

Ct := PARSEJSON(RECEIVEDMSG.PAYLOAD, "$.temp", 1);

IF ison
    Hb := bright / 100.0;
    St := isOn;
ELSE 
    Hb := 0;
    St := 0;
END
Zápis jasu
IF St > 0.5
    VAR topic := "shellies/" + bulb4topic + "/light/0/set";    
    MQTTPUBLISH(topic, "{\"turn\": \"on\", \"transition\": " + transitionTime + ", \"brightness\": " + ROUND(Hb*100.0) + "}");
ELSE
    MQTTPUBLISH("shellies/" + bulb4topic + "/light/0/command", "off");
END
Zápis barevné teploty
IF ISNAN(Ct)
    RETURN(0);
END

VAR topic := "shellies/" + bulb4topic + "/light/0/set";
MQTTPUBLISH(topic, "{\"transition\": " + transitionTime + ", \"temp\":" + Ct + "}");
Elektroměr 5 Elektroměr Pouze ke čtení

Okamžitý výkon (kW) a kumulativní spotřeba (kWh) žárovky 5 — vyžaduje nastavení Settings → Device Model v Shelly app, jinak obě hodnoty zůstávají na 0

numeric Jednotka: kW / kWh

Elektroměr 5

Listener
ADDINFO("To enable power monitoring, open device settings in Shelly app or web browser and configure device model in Settings->Device Model");

IF(INDEXOF(bulb5topic, "ShellyBulbDuo-deviceid") = 0)
    ADDERROR("Set correct 'bulb5topic' value in module variables. Topic format is 'ShellyBulbDuo-<deviceid>'. The Device ID can be found by opening url 'http://shellyIpAddress', in Settings -> Device info.");
    RETURN(-1);
END

IF INDEXOF(RECEIVEDMSG.TOPIC, "shellies/" + bulb5topic + "/light/0/power") = 0
    Ed := TODOUBLE(TOSTRING(RECEIVEDMSG.PAYLOAD)) / 1000.0;
ELSEIF INDEXOF(RECEIVEDMSG.TOPIC, "shellies/" + bulb5topic + "/light/0/energy") = 0
    To := TODOUBLE(TOSTRING(RECEIVEDMSG.PAYLOAD)) / 60000.0;
END
Světlo 5 Bílé světlo Čtení i zápis

Žárovka 5 s laditelnou bílou — zap/vyp, jas 0-100 % a teplota světla 3000-6500 K s plynulými přechody

json Jednotka: % / K json_path
Proměnná: transitionTime — Čas přechodu pro danou žárovku v milisekundách (0-5000 ms), odvozený z import parametru TransitionTime

Světlo 5

Listener
IF(INDEXOF(bulb5topic, "ShellyBulbDuo-deviceid") = 0)
    ADDERROR("Set correct 'bulb5topic' value in module variables. Topic format is 'ShellyBulbDuo-<deviceid>'. The Device ID can be found by opening url 'http://shellyIpAddress', in Settings -> Device info.");
    RETURN(-1);
END

IF INDEXOF(RECEIVEDMSG.TOPIC, "shellies/" + bulb5topic + "/light/0/status") != 0
    RETURN(0);
END

IF RECEIVEDMSG.PAYLOAD.LENGTH = 0
    RETURN(0);
END

VAR ison := PARSEJSON(RECEIVEDMSG.PAYLOAD, "$.ison", 1);
VAR bright := PARSEJSON(RECEIVEDMSG.PAYLOAD, "$.brightness");

IF ISNULL(ison) OR ISNULL(bright)
    RETURN(0);
END

Ct := PARSEJSON(RECEIVEDMSG.PAYLOAD, "$.temp", 1);

IF ison
    Hb := bright / 100.0;
    St := isOn;
ELSE 
    Hb := 0;
    St := 0;
END
Zápis jasu
IF St > 0.5
    VAR topic := "shellies/" + bulb5topic + "/light/0/set";    
    MQTTPUBLISH(topic, "{\"turn\": \"on\", \"transition\": " + transitionTime + ", \"brightness\": " + ROUND(Hb*100.0) + "}");
ELSE
    MQTTPUBLISH("shellies/" + bulb5topic + "/light/0/command", "off");
END
Zápis barevné teploty
IF ISNAN(Ct)
    RETURN(0);
END

VAR topic := "shellies/" + bulb5topic + "/light/0/set";
MQTTPUBLISH(topic, "{\"transition\": " + transitionTime + ", \"temp\":" + Ct + "}");
Připojení: Packet Parser → MQTT • Hostname: ShellyBulbDuo-{MAC}.local
Možná vylepšení (7)
  • Connection Status (LWT) — Last Will and Testament — true on connect, false on disconnect. Could detect offline bulbs.
  • Full Status JSON — Complete /status as JSON. Could expose wifi_sta.rssi, has_update, uptime, source of last command.
  • Device Announce — Emitted on boot/announce — payload {id, model, mac, ip, fw_ver, new_fw}. Useful for auto-discovery.
  • White channel (0-100 %) — Separate 'white' parameter (0-100) on the set JSON; template only writes brightness/temp.
  • Timer (auto on/off) — Auto-off timer in seconds via set JSON. Not surfaced as TapHome capability.
  • Warm-white below 3000 K — TapHome XML clamps MinColorTemperature to 3000 K; the bulb hardware can go down to 2700 K (GU10). E27 marketed range starts at 3000 K — clamp matches E27 spec but loses 300 K of GU10 range.
  • MQTT broker authentication — Shelly device side supports MQTT username/password, but TapHome import parameters do not expose them. Workaround: open broker without auth on a trusted segment.

Parametry importu

Tyto hodnoty zadáte při importu XML.

Ptá se v aplikaciVýchozí
Mqtt Broker IP adresa192.168.0.1
Mqtt Broker port1883
Transition time (ms)300

Zdroje

Dokumenty výrobců jsou © jejich příslušných vlastníků. Poskytujeme je tak, jak je výrobce zveřejnil, pouze pro informaci.

Našli jste problém s touto šablonou zařízení?

Napište nám, co nefunguje, co chybí, nebo jak by se měla šablona chovat. Vaše zpětná vazba nám pomáhá udržet katalog přesný.

Šablona · portál TapHome Shelly DUO MQTT Otevřete tuto šablonu v zákaznickém portálu a použijte ji ve svém domově, nebo navrhněte úpravu a odešlete ji zpět do katalogu. Packet Parser → MQTT Zobrazit v portálu TapHome