TapHome
Oficiálna · TapHome Overená Osvetlenie

Shelly DUO MQTT

Wi-Fi LED žiarovka Shelly DUO s laditeľnou bielou (E27/GU10) pripojená k TapHome cez MQTT. Jas, CCT 3000-6500 K a meranie spotreby pre každú žiarovku — až 5 žiaroviek cez jeden broker.

ShellyPacket Parser → MQTT10 zariadeníRevízia 1.1 Posledná aktualizácia: 25. apríla 2026
Shelly DUO MQTT

Import do aplikácie TapHomeHardvér › Packet Parser › Pridať zo šablóny

Stiahnuť šablónu
Na tejto stránke

Toto zariadenie podporuje mDNS

Namiesto IP adresy môžete zariadenie osloviť na:

ShellyBulbDuo-{MAC}.local

Nahraďte {MAC} MAC adresou zariadenia (veľké písmená, bez dvojbodiek).

TapHome podporuje mDNS — použitie hostname je spoľahlivejšie ako statická IP.

Adresa v sieti

Pri MQTT brokeri vstavanom v TapHome zadajte v TapHome ako adresu brokera 127.0.0.1. V zariadení zadajte IP adresu TapHome Core a jednotke Core dajte rezerváciu IP v routeri.

Príprava siete

Návod na integráciu

Shelly DUO (model SHBDUO-1) je Gen1 Wi-Fi LED inteligentná žiarovka dostupná v prevedení E27 a GU10. Bežná verzia DUO je iba biela s laditeľnou teplotou farby a regulovateľným jasom — nemá žiadne RGB kanály (RGB-schopná verzia je DUO RGBW / shellycolorbulb- a používa samostatnú šablónu). Toto je MQTT variant integrácie do TapHome; pre jednu žiarovku je k dispozícii aj HTTP variant.

Šablóna podporuje až 5 žiaroviek DUO na jeden modul cez zdieľaný MQTT broker v lokálnej sieti. Každá žiarovka je identifikovaná premennou modulu bulbNtopic, ktorá ukazuje na MQTT Device ID žiarovky, a poskytuje zariadenie bieleho svetla aj elektromer — celkovo 10 zariadení.

Konfigurácia

MQTT broker

Šablóna potrebuje MQTT broker dostupný v lokálnej sieti — funguje akýkoľvek štandardný broker (Mosquitto, EMQX alebo broker zabudovaný v Home Assistant). Broker beží na porte 1883 bez TLS (Gen1 hardvér Shelly nepodporuje MQTT cez TLS), preto ho ponechajte v dôveryhodnom segmente.

Po importovaní šablóny nastavte pripojenie k brokeru v import parametroch modulu:

ParameterPredvolenéPopis
MQTT Broker IP (IpAddress)192.168.0.1Adresa brokera v lokálnej sieti
MQTT Broker port (Port)1883Štandardný MQTT port (bez TLS)
Transition time (TransitionTime)300Predvolený čas prechodu jasu/CCT na každej žiarovke v milisekundách

Zapnutie MQTT na žiarovke

Každá Shelly DUO musí byť nasmerovaná na broker, kým začne publikovať alebo prijímať príkazy:

  1. Otvorte webové rozhranie žiarovky na http://<bulb-ip> (IP nájdete v DHCP tabuľke routera alebo v Shelly app)
  2. Prejdite na Internet & Security → Advanced — MQTT a zapnite MQTT
  3. Zadajte server brokera (IP a port, napr. 192.168.0.10:1883) a username / password nechajte prázdne (TapHome šablóna autentifikáciu brokera nepodporuje)
  4. Voliteľne upravte MQTT prefix, ak nechcete predvolený shellies/ShellyBulbDuo-<MAC6>
  5. Uložte a reštartujte žiarovku — po opätovnom pripojení začne publikovať na shellies/ShellyBulbDuo-<id>/light/0/status

Device ID (bulbNtopic)

Každá Shelly DUO má unikátne MQTT Device ID vo formáte ShellyBulbDuo-<MAC6>, kde <MAC6> je posledných 6 hex znakov MAC adresy (napr. ShellyBulbDuo-B929CC). Rovnaká hodnota je aj mDNS hostname žiarovky (ShellyBulbDuo-<MAC6>.local).

Device ID nájdete:

  • V Shelly web UI: Settings → Device Info → pole mqtt.id
  • Cez HTTP: GET http://<bulb-ip>/settings → mqtt.id
  • Na štítku zariadenia / obale (posledných 6 znakov MAC, malé hex)
  • Ako mDNS hostname, napr. ShellyBulbDuo-b929cc.local

Otvorte modul Shelly DUO MQTT v TapHome a vyplňte topic premenné pre každú žiarovku, ktorú chcete použiť:

PremennáPredvolenéPopis
bulb1topicShellyBulbDuo-deviceid1MQTT Device ID prvej žiarovky DUO
bulb2topicShellyBulbDuo-deviceid2MQTT Device ID druhej žiarovky DUO
bulb3topicShellyBulbDuo-deviceid3MQTT Device ID tretej žiarovky DUO
bulb4topicShellyBulbDuo-deviceid4MQTT Device ID štvrtej žiarovky DUO
bulb5topicShellyBulbDuo-deviceid5MQTT Device ID piatej žiarovky DUO

Nahraďte placeholder skutočným Device ID pre každú žiarovku, ktorú chcete ovládať (napr. ShellyBulbDuo-B929CC). Modul sa prihlási na shellies/# a listener skripty pre jednotlivé žiarovky filtrujú správy podľa prefixu topicu. Sloty, ktoré ostali na placeholder hodnote, vyhodia chybu v TapHome, kým ich neskonfigurujete alebo neodstránite zo šablóny.

Čas prechodu pre každú žiarovku

Každé Light zariadenie má premennú transitionTime (v milisekundách, rozsah 0-5000 ms), ktorá je predvolene odvodená z modulového import parametra TransitionTime. Prepíšte ju na jednotlivých žiarovkách, ak chcete iné časy prechodu — hodnota sa odošle pri každej zmene jasu alebo CCT ako pole transition v JSON payloade /light/0/set.

Zapnutie MQTT na Gen1 zariadení Shelly vypne Shelly Cloud — obe nemôžu bežať súčasne. HTTP REST a CoIoT zostávajú dostupné, takže žiarovka je naďalej dosiahnuteľná z lokálnej siete.

Schopnosti zariadenia

Šablóna poskytuje 10 zariadení na modul — 5 laditeľných bielych svetiel a 5 elektromerov, jeden pár na fyzickú žiarovku. Všetkých 5 párov je funkčne identických, líšia sa len bulbNtopic, na ktorý počúvajú.

Ovládanie svetla

Každé Light zariadenie je v TapHome mapované ako White Light s dvomi ovládacími vlastnosťami:

  • Jas — čítaný z poľa $.brightness (0-100) JSON správy light/0/status, škálovaný na rozsah 0.0-1.0 v TapHome; zapisovaný cez light/0/set s "turn":"on", "brightness":N, "transition":<ms>
  • Teplota svetla — čítaná z $.temp (3000-6500 K), zapisovaná cez light/0/set s "temp":K, "transition":<ms>

Vypnutie svetla používa samostatný topic light/0/command s payloadom off, čo je rýchlejšie ako zostavovať JSON set správu. Aktualizácie jasu a CCT vždy obsahujú pole transition, takže žiarovka prechádza plynulo namiesto skoku.

Meranie spotreby

Každý Electric Meter sa prihlasuje na dva skalárne topicy, ktoré žiarovka publikuje približne raz za sekundu:

Hodnota v TapHomeZdrojový topicZdrojová jednotkaKonverziaZobrazená jednotka
Okamžitý výkonshellies/ShellyBulbDuo-<id>/light/0/powerW÷ 1000kW
Celková spotrebashellies/ShellyBulbDuo-<id>/light/0/energywatt-minúty÷ 60000kWh

Konverzia watt-minút na kWh je nutná, pretože firmvér Shelly Gen1 reportuje kumulatívnu energiu vo W·min, nie vo W·h.

Meranie spotreby tichom vracia nulu, kým nie je nastavený Settings → Device Model (E27 alebo GU10) v Shelly app alebo web UI. TapHome listener pri prvom čítaní zobrazí informačný banner, ktorý na to upozorní. Po nastavení modelu žiarovka okamžite začne reportovať nenulové hodnoty power/energy.

Riešenie problémov

Žiarovka nereaguje

  1. Overte, že žiarovka je pripojená k Wi-Fi a dosiahnuteľná v LAN — otvorte http://<bulb-ip>/shelly. Odpoveď obsahujúca "type":"SHBDUO-1" potvrdí zariadenie.
  2. Skúste mDNS hostname (ShellyBulbDuo-<MAC6>.local) namiesto IP adresy — obnovenia DHCP alebo reštarty routera môžu zmeniť IP.
  3. Potvrďte, že MQTT je zapnuté v nastaveniach Internet & Security → Advanced — MQTT žiarovky a že IP/port brokera sa zhodujú s import parametrami v TapHome.
  4. Použite MQTT klienta (napr. MQTT Explorer alebo mosquitto_sub -h <broker> -t 'shellies/#' -v), aby ste overili, že žiarovka publikuje na shellies/ShellyBulbDuo-<id>/....

Chyba “Set correct ‘bulbNtopic’ value”

Listener skript hodí túto chybu, keď je bulbNtopic stále nastavený na predvolený placeholder (ShellyBulbDuo-deviceid). Buď doplňte skutočné Device ID pre daný slot, alebo odstráňte nepoužívané zariadenia zo šablóny, ak máte len pár žiaroviek.

Spotreba a energia ostávajú na nule

  1. Otvorte Shelly app (alebo web UI) → Settings → Device Model a vyberte zodpovedajúci sub-model (Shelly Bulb DUO E27 alebo Shelly Bulb DUO GU10). Žiarovka začne počítať power/energy až po identifikácii modelu.
  2. Overte, že žiarovka je naozaj zapnutá — meter sa aktualizuje len pri pretekajúcom prúde.
  3. Prihláste sa priamo na shellies/ShellyBulbDuo-<id>/light/0/power cez MQTT klienta a overte, že žiarovka publikuje nenulovú hodnotu.

Najteplejšia CCT klesá len na 3000 K

TapHome XML obmedzuje CCT na 3000-6500 K, aby zodpovedalo marketingovému rozsahu E27. Samotný hardvér podporuje 2700-6500 K na sub-modeli GU10 a cez surové API /light/0/set, takže najteplejších 300 K rozsahu GU10 je cez TapHome šablónu nedosiahnuteľných.

Prechody svetla pôsobia trhane

Zvýšte premennú transitionTime na danej žiarovke (alebo predvolenú modulovú hodnotu TransitionTime). 300 ms je v poriadku pre malé kroky stmievania, no pri veľkých zmenách jasu alebo CCT to môže pôsobiť stupňovito — skúste 800-1500 ms pre plynulejší prechod.

Zariadenia Shelly Gen1 používajú holé MQTT na porte 1883 — TLS nie je podporované. TapHome šablóna tiež nesprístupňuje broker username / password, preto použite neautentifikovaný broker v dôveryhodnej lokálnej sieti alebo VLAN.

Ako nainštalovať v TapHome

Predpoklady

  • Zariadenie Shelly pripojené k Wi-Fi (2,4 GHz), napr. cez aplikáciu Shelly alebo vlastný prístupový bod zariadenia
  • MQTT broker bežiaci vo vašej lokálnej sieti (napr. Mosquitto, Home Assistant alebo vstavaný broker TapHome)
  • TapHome CCU v rovnakej sieti ako broker

Na zariadeniach Gen1 povolenie MQTT vypne Shelly Cloud. Oboje nemôže bežať súčasne. Na zariadeniach Gen2/Plus toto obmedzenie neplatí.

Krok 1 — Povoľte MQTT na zariadení Shelly

Zariadenia Gen1 (Shelly 1, 1PM, 2.5, EM, 3EM, Plug S, RGBW2, Dimmer, TRV…)

  1. Otvorte webové rozhranie Shelly: http://<device-ip>/
  2. Prejdite na Internet & Security → Advanced — MQTT
  3. Povoľte MQTT
  4. Nastavte MQTT Server: <broker-ip>:<port> (napr. 192.168.1.10:1883)
  5. Voliteľne nastavte MQTT User a MQTT Password, ak váš broker vyžaduje autentifikáciu
  6. Kliknite na Save — zariadenie sa reštartuje a pripojí k brokeru

Zariadenia Gen2 / Plus (Shelly Plus 1, Plus 1PM, Plus 2PM, Plus Plug S, Plus H&T, Pro 3EM…)

  1. Otvorte webové rozhranie Shelly: http://<device-ip>/
  2. Prejdite na Settings → MQTT
  3. Povoľte MQTT
  4. Nastavte Server: <broker-ip>:<port> (napr. 192.168.1.10:1883)
  5. Client ID je predvyplnené ID zariadenia (napr. shellyplus1pm-AABBCCDDEE) — ponechajte tak, pokiaľ nemáte konkrétny dôvod na zmenu
  6. Kliknite na Save a reštartujte zariadenie

Pri vstavanom brokeri TapHome je <broker-ip> IP adresa TapHome Core. Dajte jednotke Core rezerváciu IP v routeri, inak zariadenie stratí broker, keď router adresu zmení → Príprava siete.

Na overenie funkčnosti MQTT použite MQTT klienta (napr. MQTT Explorer) a prihláste sa na odber shellies/# (Gen1) alebo <device-id>/# (Gen2). Mali by ste vidieť stavové správy zo zariadenia.

Krok 2 — Zistite Device ID / MQTT Client ID

Niektoré šablóny vyžadujú parameter Device ID alebo MQTT Client ID. Ide o jedinečný identifikátor používaný v MQTT topicoch.

  • Gen1: nachádza sa na štítku ako MAC adresa (napr. AABBCCDDEE). Device ID = shelly<model>-<mac>, napr. shelly1pm-AABBCCDDEE
  • Gen2/Plus: nachádza sa vo webovom rozhraní Shelly v časti Settings → Device Info → Device ID, alebo na štítku zariadenia

Krok 3 — Konfigurácia v TapHome

  1. V TapHome pridajte nový modul Packet Parser (MQTT)
  2. IP Address: pre vstavaný broker TapHome 127.0.0.1 (jednotka sa pripája sama k sebe, adresa sa nikdy nezmení); pre externý broker jeho IP adresa (napr. 192.168.1.10)
  3. Port: 1883 (predvolený; pre TLS použite 8883)
  4. Device ID / MQTT Client ID: zadajte hodnotu z kroku 2 (ak to šablóna vyžaduje)
  5. Importujte šablónu — TapHome sa automaticky prihlási na odber topicov zariadenia

Dostupné zariadenia 10

Tieto zariadenia sa po importe zobrazia v TapHome.

Shelly DUO MQTT Modul
Vlastné premenné
bulb1topic (string) = ShellyBulbDuo-deviceid1MQTT Device ID prvej žiarovky 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 druhej žiarovky Shelly DUO
bulb3topic (string) = ShellyBulbDuo-deviceid3MQTT Device ID tretej žiarovky Shelly DUO
bulb4topic (string) = ShellyBulbDuo-deviceid4MQTT Device ID štvrtej žiarovky Shelly DUO
bulb5topic (string) = ShellyBulbDuo-deviceid5MQTT Device ID piatej žiarovky Shelly DUO
Elektromer 1 Elektromer Len na čítanie

Okamžitý výkon (kW) a kumulatívna spotreba (kWh) žiarovky 1 — vyžaduje nastavenie Settings → Device Model v Shelly app, inak obe hodnoty ostávajú na 0

numeric Jednotka: kW / kWh

Elektromer 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
Svetlo 1 Biele svetlo Čítanie aj zápis

Žiarovka 1 s laditeľnou bielou — zap/vyp, jas 0-100 % a teplota svetla 3000-6500 K s plynulými prechodmi

json Jednotka: % / K json_path
Premenná: transitionTime — Čas prechodu pre danú žiarovku v milisekundách (0-5000 ms), odvodený z import parametra TransitionTime

Svetlo 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 farebnej teploty
IF ISNAN(Ct)
    RETURN(0);
END

VAR topic := "shellies/" + bulb1topic + "/light/0/set";
MQTTPUBLISH(topic, "{\"transition\": " + transitionTime + ", \"temp\":" + Ct + "}");
Elektromer 2 Elektromer Len na čítanie

Okamžitý výkon (kW) a kumulatívna spotreba (kWh) žiarovky 2 — vyžaduje nastavenie Settings → Device Model v Shelly app, inak obe hodnoty ostávajú na 0

numeric Jednotka: kW / kWh

Elektromer 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
Svetlo 2 Biele svetlo Čítanie aj zápis

Žiarovka 2 s laditeľnou bielou — zap/vyp, jas 0-100 % a teplota svetla 3000-6500 K s plynulými prechodmi

json Jednotka: % / K json_path
Premenná: transitionTime — Čas prechodu pre danú žiarovku v milisekundách (0-5000 ms), odvodený z import parametra TransitionTime

Svetlo 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 farebnej teploty
IF ISNAN(Ct)
    RETURN(0);
END

VAR topic := "shellies/" + bulb2topic + "/light/0/set";
MQTTPUBLISH(topic, "{\"transition\": " + transitionTime + ", \"temp\":" + Ct + "}");
Elektromer 3 Elektromer Len na čítanie

Okamžitý výkon (kW) a kumulatívna spotreba (kWh) žiarovky 3 — vyžaduje nastavenie Settings → Device Model v Shelly app, inak obe hodnoty ostávajú na 0

numeric Jednotka: kW / kWh

Elektromer 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
Svetlo 3 Biele svetlo Čítanie aj zápis

Žiarovka 3 s laditeľnou bielou — zap/vyp, jas 0-100 % a teplota svetla 3000-6500 K s plynulými prechodmi

json Jednotka: % / K json_path
Premenná: transitionTime — Čas prechodu pre danú žiarovku v milisekundách (0-5000 ms), odvodený z import parametra TransitionTime

Svetlo 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 farebnej teploty
IF ISNAN(Ct)
    RETURN(0);
END

VAR topic := "shellies/" + bulb3topic + "/light/0/set";
MQTTPUBLISH(topic, "{\"transition\": " + transitionTime + ", \"temp\":" + Ct + "}");
Elektromer 4 Elektromer Len na čítanie

Okamžitý výkon (kW) a kumulatívna spotreba (kWh) žiarovky 4 — vyžaduje nastavenie Settings → Device Model v Shelly app, inak obe hodnoty ostávajú na 0

numeric Jednotka: kW / kWh

Elektromer 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
Svetlo 4 Biele svetlo Čítanie aj zápis

Žiarovka 4 s laditeľnou bielou — zap/vyp, jas 0-100 % a teplota svetla 3000-6500 K s plynulými prechodmi

json Jednotka: % / K json_path
Premenná: transitionTime — Čas prechodu pre danú žiarovku v milisekundách (0-5000 ms), odvodený z import parametra TransitionTime

Svetlo 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 farebnej teploty
IF ISNAN(Ct)
    RETURN(0);
END

VAR topic := "shellies/" + bulb4topic + "/light/0/set";
MQTTPUBLISH(topic, "{\"transition\": " + transitionTime + ", \"temp\":" + Ct + "}");
Elektromer 5 Elektromer Len na čítanie

Okamžitý výkon (kW) a kumulatívna spotreba (kWh) žiarovky 5 — vyžaduje nastavenie Settings → Device Model v Shelly app, inak obe hodnoty ostávajú na 0

numeric Jednotka: kW / kWh

Elektromer 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
Svetlo 5 Biele svetlo Čítanie aj zápis

Žiarovka 5 s laditeľnou bielou — zap/vyp, jas 0-100 % a teplota svetla 3000-6500 K s plynulými prechodmi

json Jednotka: % / K json_path
Premenná: transitionTime — Čas prechodu pre danú žiarovku v milisekundách (0-5000 ms), odvodený z import parametra TransitionTime

Svetlo 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 farebnej teploty
IF ISNAN(Ct)
    RETURN(0);
END

VAR topic := "shellies/" + bulb5topic + "/light/0/set";
MQTTPUBLISH(topic, "{\"transition\": " + transitionTime + ", \"temp\":" + Ct + "}");
Pripojenie: Packet Parser → MQTT • Hostname: ShellyBulbDuo-{MAC}.local
Možné vylepšenia (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.

Parametre importu

Tieto hodnoty zadáte pri importe XML.

Pýta sa v aplikáciiPredvolené
Mqtt Broker IP adresa192.168.0.1
Mqtt Broker port1883
Transition time (ms)300

Zdroje

Dokumenty výrobcov sú © ich príslušných vlastníkov. Poskytujeme ich tak, ako ich zverejnil výrobca, len na informačné účely.

Našli ste problém s touto šablónou zariadenia?

Napíšte nám, čo nefunguje, čo chýba, alebo ako by sa mala šablóna správať. Vaša spätná väzba nám pomáha udržiavať katalóg presný.

Šablóna · portál TapHome Shelly DUO MQTT Otvorte túto šablónu v Customer Portali a aplikujte ju na svoj domov, alebo navrhnite zmenu a odošlite ju späť do katalógu. Packet Parser → MQTT Zobraziť v portáli TapHome