TapHome

Shelly DUO MQTT

Packet Parser → MQTT
Přidal
Poslední aktualizace: 06. 2026
Shelly DUO MQTT

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 & SecurityAdvanced — 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: SettingsDevice Info → pole mqtt.id
  • Přes HTTP: GET http://<bulb-ip>/settingsmqtt.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) → SettingsDevice 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 (pokud ještě ne, podívejte se na návod na HTTP připojení)
  • 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 & SecurityAdvanced — 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 SettingsMQTT
  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í

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 SettingsDevice InfoDevice 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: zadejte IP adresu MQTT brokeru (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í

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

Žá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

Žá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

Žá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

Žá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

Žá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
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.

Zdroje

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ý.

Ověřeno TapHome

Chcete to použít ve svém TapHome jádře?

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.

Otevřít v portálu