TapHome

Shelly DUO MQTT

Packet Parser → MQTT
Pridal
Posledná aktualizácia: 05. 2026
Shelly DUO MQTT

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 & SecurityAdvanced — 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: SettingsDevice Info → pole mqtt.id
  • Cez HTTP: GET http://<bulb-ip>/settingsmqtt.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) → SettingsDevice 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 (ak ešte nie, pozrite návod na HTTP pripojenie)
  • 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 & SecurityAdvanced — 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 SettingsMQTT
  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

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 SettingsDevice InfoDevice ID, alebo na štítku zariadenia

Krok 3 — Konfigurácia v TapHome

  1. V TapHome pridajte nový modul Packet Parser (MQTT)
  2. IP Address: zadajte IP adresu MQTT brokera (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

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

Ž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

Ž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

Ž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

Ž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

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

Zdroje

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

Overené TapHomom

Chcete to použiť vo svojom TapHome jadre?

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.

Otvoriť v portáli