TapHome

Shelly DUO MQTT

Packet Parser → MQTT
Autor
Posljednje ažuriranje: 04. 2026

Ovaj uređaj podržava mDNS

Umjesto IP adrese uređaju možete pristupiti na adresi:

ShellyBulbDuo-{MAC}.local

Zamijenite {MAC} MAC adresom svog uređaja (velika slova, bez dvotočaka).

TapHome podržava mDNS. Naziv računala (hostname) pouzdaniji je od statične IP adrese.

Shelly DUO MQTT

Shelly DUO (model SHBDUO-1) je pametna Wi-Fi LED žarulja Gen1, dostupna u izvedbama E27 i GU10. Osnovni DUO ima samo bijelo svjetlo s podesivom temperaturom boje i mogućnošću prigušivanja, bez RGB kanala (izvedba s RGB-om je DUO RGBW / shellycolorbulb- i koristi zaseban predložak). Ovo je MQTT varijanta integracije TapHome; za instalacije s jednom žaruljom dostupna je i HTTP varijanta.

Predložak podržava do 5 žarulja DUO po modulu preko zajedničkog MQTT brokera u lokalnoj mreži. Svaka se žarulja prepoznaje po varijabli modula bulbNtopic koja upućuje na MQTT Device ID žarulje. Za svaku žarulju predložak daje uređaj bijelog svjetla i brojilo energije, ukupno 10 uređaja.

Konfiguracija

MQTT broker

Predložak zahtijeva MQTT broker dostupan u lokalnoj mreži. Odgovara bilo koji standardni broker (Mosquitto, EMQX ili broker ugrađen u Home Assistant). Broker radi na portu 1883 bez TLS-a (hardver Shelly Gen1 ne podržava MQTT preko TLS-a), pa ga držite u pouzdanom dijelu mreže.

Nakon uvoza predloška postavite vezu s brokerom u parametrima uvoza modula:

ParametarZadanoOpis
MQTT Broker IP (IpAddress)192.168.0.1Adresa brokera u lokalnoj mreži
MQTT Broker port (Port)1883Standardni MQTT port (bez TLS-a)
Transition time (TransitionTime)300Zadano trajanje postupnog prijelaza za svaku žarulju u milisekundama
Uključivanje MQTT-a na žarulji

Na svakoj žarulji Shelly DUO treba postaviti vezu s brokerom prije nego što počne objavljivati poruke ili primati naredbe:

  1. Otvorite web-sučelje žarulje na http://<bulb-ip> (IP adresu pronađite u DHCP tablici usmjerivača ili u aplikaciji Shelly)
  2. Otvorite Internet & Security → Advanced — MQTT i uključite MQTT
  3. Unesite server brokera (IP adresu i port, npr. 192.168.0.10:1883), a username / password ostavite prazno (predložak TapHome ne nudi autentifikaciju na brokeru)
  4. Po želji prilagodite MQTT prefix ako ne želite zadani shellies/ShellyBulbDuo-<MAC6>
  5. Spremite postavke i ponovno pokrenite žarulju: kada se ponovno spoji, počinje objavljivati na shellies/ShellyBulbDuo-<id>/light/0/status
Device ID (bulbNtopic)

Svaki Shelly DUO ima jedinstveni MQTT Device ID u obliku ShellyBulbDuo-<MAC6>, gdje je <MAC6> zadnjih 6 heksadecimalnih znakova MAC adrese (npr. ShellyBulbDuo-B929CC). Ista je vrijednost i mDNS naziv hosta žarulje (ShellyBulbDuo-<MAC6>.local).

Device ID možete pronaći:

  • U web-sučelju Shelly: Settings → Device Info → polje mqtt.id
  • Preko HTTP-a: GET http://<bulb-ip>/settings → mqtt.id
  • Na naljepnici uređaja ili ambalaži (zadnjih 6 znakova MAC adrese, malim slovima u heksadecimalnom zapisu)
  • Kao mDNS naziv hosta, npr. ShellyBulbDuo-b929cc.local

U sustavu TapHome otvorite modul Shelly DUO MQTT i ispunite varijable teme za svaku žarulju koju želite koristiti:

VarijablaZadanoOpis
bulb1topicShellyBulbDuo-deviceid1MQTT Device ID prve žarulje DUO
bulb2topicShellyBulbDuo-deviceid2MQTT Device ID druge žarulje DUO
bulb3topicShellyBulbDuo-deviceid3MQTT Device ID treće žarulje DUO
bulb4topicShellyBulbDuo-deviceid4MQTT Device ID četvrte žarulje DUO
bulb5topicShellyBulbDuo-deviceid5MQTT Device ID pete žarulje DUO

Zamijenite zadanu vrijednost stvarnim Device ID-em svake žarulje kojom želite upravljati (npr. ShellyBulbDuo-B929CC). Modul se pretplaćuje na shellies/#, a skripte za primanje poruka pojedinih žarulja filtriraju poruke prema prefiksu teme. Mjesta koja su još na zadanoj vrijednosti javljaju pogrešku u sustavu TapHome dok ih ne konfigurirate ili ne uklonite iz predloška.

Vrijeme prijelaza za pojedinu žarulju

Svaki uređaj Svjetlo ima korisničku varijablu transitionTime (u milisekundama, raspon 0–5000 ms) čija je zadana vrijednost parametar uvoza modula TransitionTime. Promijenite je na pojedinim žaruljama ako želite različito trajanje postupnog prijelaza. Vrijednost se pri svakoj promjeni svjetline ili temperature boje šalje kao polje transition u JSON poruci na /light/0/set.

Uključivanje MQTT-a na uređaju Shelly Gen1 isključuje Shelly Cloud: MQTT i Shelly Cloud ne mogu raditi istodobno. HTTP REST i CoIoT ostaju dostupni, pa je žarulja i dalje dostupna iz lokalne mreže.

Mogućnosti uređaja

Predložak po modulu daje 10 uređaja: 5 svjetala s podesivim bijelim svjetlom i 5 brojila energije, po jedan par za svaku fizičku žarulju. Svih 5 parova funkcionalno je jednako, a razlikuju se samo po varijabli bulbNtopic koju prate.

Upravljanje svjetlom

Svaki uređaj Svjetlo u sustavu TapHome prikazan je kao White Light (podesivo bijelo svjetlo) s dva svojstva kojima se upravlja:

  • Svjetlina: čita se iz polja $.brightness (0–100) JSON poruke light/0/status, preračunava se u raspon 0,0–1,0 koji koristi TapHome; upisuje se preko light/0/set s "turn":"on", "brightness":N, "transition":<ms>
  • Temperatura boje: čita se iz $.temp (3000–6500 K), upisuje se preko light/0/set s "temp":K, "transition":<ms>

Za isključivanje svjetla koristi se zasebna tema light/0/command s porukom off, što je brže od slaganja JSON poruke set. Promjene svjetline i temperature boje uvijek sadrže polje transition, pa žarulja svjetlo mijenja postupno umjesto naglo.

Mjerenje snage

Svaki uređaj Brojilo energije pretplaćen je na dvije teme s pojedinačnim vrijednostima koje žarulja objavljuje otprilike jednom u sekundi:

Vrijednost u sustavu TapHomeIzvorna temaIzvorna jedinicaPretvorbaPrikazana jedinica
Trenutačna snagashellies/ShellyBulbDuo-<id>/light/0/powerW÷ 1000kW
Ukupna potrošnjashellies/ShellyBulbDuo-<id>/light/0/energyvat-minute÷ 60000kWh

Pretvorba vat-minuta u kWh potrebna je jer firmver Shelly Gen1 ukupnu energiju javlja u W·min, a ne u W·h.

Mjerenje snage bez upozorenja pokazuje nulu dok se u aplikaciji ili web-sučelju Shelly ne postavi Settings → Device Model (E27 ili GU10). Skripta TapHome pri prvom čitanju prikazuje informativnu poruku koja vas na to podsjeća. Čim je model postavljen, žarulja odmah počinje javljati vrijednosti power/energy različite od nule.

Rješavanje problema

Žarulja ne odgovara
  1. Provjerite je li žarulja spojena na Wi-Fi i dostupna u lokalnoj mreži: otvorite http://<bulb-ip>/shelly. Odgovor koji sadrži "type":"SHBDUO-1" potvrđuje uređaj.
  2. Umjesto IP adrese pokušajte mDNS naziv hosta (ShellyBulbDuo-<MAC6>.local): obnova DHCP zakupa ili ponovno pokretanje usmjerivača može promijeniti IP adresu.
  3. Provjerite je li MQTT uključen u postavkama žarulje Internet & Security → Advanced — MQTT i odgovaraju li IP adresa i port brokera parametrima uvoza u sustavu TapHome.
  4. MQTT klijentom (npr. MQTT Explorer ili mosquitto_sub -h <broker> -t 'shellies/#' -v) provjerite objavljuje li žarulja poruke na shellies/ShellyBulbDuo-<id>/....
Pogreška „Set correct ‘bulbNtopic’ value”

Skripta javlja ovu pogrešku kada je bulbNtopic još postavljen na zadanu vrijednost (ShellyBulbDuo-deviceid). Za to mjesto upišite stvarni Device ID ili uklonite neiskorištene uređaje iz predloška ako imate samo nekoliko žarulja.

Snaga i energija ostaju na nuli
  1. Otvorite aplikaciju Shelly (ili web-sučelje) → Settings → Device Model i odaberite odgovarajući podmodel (Shelly Bulb DUO E27 ili Shelly Bulb DUO GU10). Žarulja izračunava power/energy tek kada je model poznat.
  2. Provjerite je li žarulja stvarno uključena: brojilo se ažurira samo dok teče struja.
  3. MQTT klijentom se izravno pretplatite na shellies/ShellyBulbDuo-<id>/light/0/power i provjerite objavljuje li žarulja vrijednost različitu od nule.
Najtoplija temperatura boje je samo 3000 K

XML predložak TapHome ograničava temperaturu boje na 3000–6500 K u skladu s rasponom koji se navodi za E27. Sam hardver podržava 2700–6500 K kod podmodela GU10 i preko izravnog API-ja /light/0/set, pa najtoplijih 300 K raspona žarulje GU10 nije dostupno preko predloška TapHome.

Prijelazi svjetla nisu glatki

Povećajte korisničku varijablu transitionTime pojedine žarulje (ili zadanu vrijednost TransitionTime na razini modula). 300 ms je dovoljno za male korake prigušivanja, ali kod velikih promjena svjetline ili temperature boje prijelaz može izgledati stepenasto. Za glađi prijelaz pokušajte 800–1500 ms.

Uređaji Shelly Gen1 koriste obični MQTT na portu 1883, bez podrške za TLS. Predložak TapHome ne nudi ni username / password za broker, pa koristite broker bez autentifikacije u pouzdanoj lokalnoj mreži ili VLAN-u.

Kako ga instalirati u TapHome

Preduvjeti

  • Uređaj Shelly spojen na Wi-Fi (2,4 GHz), npr. putem aplikacije Shelly ili vlastite pristupne točke uređaja
  • MQTT broker koji radi u vašoj lokalnoj mreži (npr. Mosquitto, Home Assistant ili ugrađeni broker TapHome)
  • TapHome CCU u istoj mreži kao broker

Na uređajima Gen1 uključivanje MQTT-a isključuje Shelly Cloud. MQTT i Shelly Cloud ne mogu raditi istodobno. Na uređajima Gen2/Plus to ograničenje ne vrijedi.

Korak 1 — Uključite MQTT na uređaju Shelly

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

  1. Otvorite web-sučelje Shelly: http://<device-ip>/
  2. Idite na Internet & Security → Advanced — MQTT
  3. Uključite MQTT
  4. Postavite MQTT Server: <broker-ip>:<port> (npr. 192.168.1.10:1883)
  5. Ako vaš broker zahtijeva autentifikaciju, postavite MQTT User i MQTT Password
  6. Kliknite Save — uređaj će se ponovno pokrenuti i spojiti na broker

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

  1. Otvorite web-sučelje Shelly: http://<device-ip>/
  2. Idite na Settings → MQTT
  3. Uključite MQTT
  4. Postavite Server: <broker-ip>:<port> (npr. 192.168.1.10:1883)
  5. Client ID je unaprijed popunjen ID-jem uređaja (npr. shellyplus1pm-AABBCCDDEE) — ostavite ga takvim, osim ako ga iz određenog razloga trebate promijeniti
  6. Kliknite Save i ponovno pokrenite uređaj

Za provjeru rada MQTT-a koristite MQTT klijent (npr. MQTT Explorer) i pretplatite se na shellies/# (Gen1) ili <device-id>/# (Gen2). Trebali biste vidjeti statusne poruke uređaja.

Korak 2 — Pronađite Device ID / MQTT Client ID

Neki predlošci zahtijevaju parametar Device ID ili MQTT Client ID. To je jedinstveni identifikator koji se koristi u MQTT temama (topics).

  • Gen1: nalazi se na naljepnici kao MAC adresa (npr. AABBCCDDEE). Device ID = shelly<model>-<mac>, npr. shelly1pm-AABBCCDDEE
  • Gen2/Plus: nalazi se u web-sučelju Shelly pod Settings → Device Info → Device ID ili na naljepnici uređaja

Korak 3 — Konfiguracija u sustavu TapHome

  1. U sustavu TapHome dodajte novi modul Packet Parser (MQTT)
  2. IP adresa: unesite IP adresu MQTT brokera (npr. 192.168.1.10)
  3. Port: 1883 (zadano; za TLS koristite 8883)
  4. Device ID / MQTT Client ID: unesite vrijednost iz koraka 2 (ako je predložak zahtijeva)
  5. Uvezite predložak — TapHome će se automatski pretplatiti na teme uređaja

Dostupni uređaji

Shelly DUO MQTT Modul
Prilagođene varijable
bulb1topic (string) = ShellyBulbDuo-deviceid1MQTT Device ID prve žarulje Shelly DUO — oblik 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 druge žarulje Shelly DUO
bulb3topic (string) = ShellyBulbDuo-deviceid3MQTT Device ID treće žarulje Shelly DUO
bulb4topic (string) = ShellyBulbDuo-deviceid4MQTT Device ID četvrte žarulje Shelly DUO
bulb5topic (string) = ShellyBulbDuo-deviceid5MQTT Device ID pete žarulje Shelly DUO
Brojilo energije 1 Brojilo električne energije Samo za čitanje

Trenutačna snaga (kW) i ukupna energija (kWh) žarulje 1 — potrebno je postaviti Settings → Device Model u aplikaciji Shelly, inače obje vrijednosti ostaju 0

numeric Jedinica: kW / kWh

Brojilo energije 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
Svjetlo 1 Bijelo svjetlo

Žarulja 1 s podesivim bijelim svjetlom — uključivanje i isključivanje, svjetlina 0–100 % i temperatura boje 3000–6500 K s postupnim prijelazima

json Jedinica: % / K json_path
Varijabla: transitionTime — Vrijeme prijelaza za pojedinu žarulju u milisekundama (0–5000 ms), preuzeto iz parametra uvoza TransitionTime

Svjetlo 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
Zapis svjetline
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
Zapis temperature boje
IF ISNAN(Ct)
    RETURN(0);
END

VAR topic := "shellies/" + bulb1topic + "/light/0/set";
MQTTPUBLISH(topic, "{\"transition\": " + transitionTime + ", \"temp\":" + Ct + "}");
Brojilo energije 2 Brojilo električne energije Samo za čitanje

Trenutačna snaga (kW) i ukupna energija (kWh) žarulje 2 — potrebno je postaviti Settings → Device Model u aplikaciji Shelly, inače obje vrijednosti ostaju 0

numeric Jedinica: kW / kWh

Brojilo energije 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
Svjetlo 2 Bijelo svjetlo

Žarulja 2 s podesivim bijelim svjetlom — uključivanje i isključivanje, svjetlina 0–100 % i temperatura boje 3000–6500 K s postupnim prijelazima

json Jedinica: % / K json_path
Varijabla: transitionTime — Vrijeme prijelaza za pojedinu žarulju u milisekundama (0–5000 ms), preuzeto iz parametra uvoza TransitionTime

Svjetlo 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
Zapis svjetline
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
Zapis temperature boje
IF ISNAN(Ct)
    RETURN(0);
END

VAR topic := "shellies/" + bulb2topic + "/light/0/set";
MQTTPUBLISH(topic, "{\"transition\": " + transitionTime + ", \"temp\":" + Ct + "}");
Brojilo energije 3 Brojilo električne energije Samo za čitanje

Trenutačna snaga (kW) i ukupna energija (kWh) žarulje 3 — potrebno je postaviti Settings → Device Model u aplikaciji Shelly, inače obje vrijednosti ostaju 0

numeric Jedinica: kW / kWh

Brojilo energije 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
Svjetlo 3 Bijelo svjetlo

Žarulja 3 s podesivim bijelim svjetlom — uključivanje i isključivanje, svjetlina 0–100 % i temperatura boje 3000–6500 K s postupnim prijelazima

json Jedinica: % / K json_path
Varijabla: transitionTime — Vrijeme prijelaza za pojedinu žarulju u milisekundama (0–5000 ms), preuzeto iz parametra uvoza TransitionTime

Svjetlo 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
Zapis svjetline
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
Zapis temperature boje
IF ISNAN(Ct)
    RETURN(0);
END

VAR topic := "shellies/" + bulb3topic + "/light/0/set";
MQTTPUBLISH(topic, "{\"transition\": " + transitionTime + ", \"temp\":" + Ct + "}");
Brojilo energije 4 Brojilo električne energije Samo za čitanje

Trenutačna snaga (kW) i ukupna energija (kWh) žarulje 4 — potrebno je postaviti Settings → Device Model u aplikaciji Shelly, inače obje vrijednosti ostaju 0

numeric Jedinica: kW / kWh

Brojilo energije 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
Svjetlo 4 Bijelo svjetlo

Žarulja 4 s podesivim bijelim svjetlom — uključivanje i isključivanje, svjetlina 0–100 % i temperatura boje 3000–6500 K s postupnim prijelazima

json Jedinica: % / K json_path
Varijabla: transitionTime — Vrijeme prijelaza za pojedinu žarulju u milisekundama (0–5000 ms), preuzeto iz parametra uvoza TransitionTime

Svjetlo 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
Zapis svjetline
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
Zapis temperature boje
IF ISNAN(Ct)
    RETURN(0);
END

VAR topic := "shellies/" + bulb4topic + "/light/0/set";
MQTTPUBLISH(topic, "{\"transition\": " + transitionTime + ", \"temp\":" + Ct + "}");
Brojilo energije 5 Brojilo električne energije Samo za čitanje

Trenutačna snaga (kW) i ukupna energija (kWh) žarulje 5 — potrebno je postaviti Settings → Device Model u aplikaciji Shelly, inače obje vrijednosti ostaju 0

numeric Jedinica: kW / kWh

Brojilo energije 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
Svjetlo 5 Bijelo svjetlo

Žarulja 5 s podesivim bijelim svjetlom — uključivanje i isključivanje, svjetlina 0–100 % i temperatura boje 3000–6500 K s postupnim prijelazima

json Jedinica: % / K json_path
Varijabla: transitionTime — Vrijeme prijelaza za pojedinu žarulju u milisekundama (0–5000 ms), preuzeto iz parametra uvoza TransitionTime

Svjetlo 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
Zapis svjetline
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
Zapis temperature boje
IF ISNAN(Ct)
    RETURN(0);
END

VAR topic := "shellies/" + bulb5topic + "/light/0/set";
MQTTPUBLISH(topic, "{\"transition\": " + transitionTime + ", \"temp\":" + Ct + "}");
Povezivanje: Packet Parser → MQTT • Naziv računala (hostname): ShellyBulbDuo-{MAC}.local
Moguća poboljšanja (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.

Izvori

Pronašli ste problem s ovim predloškom uređaja?

Recite nam što ne radi, što nedostaje ili kako bi se predložak trebao ponašati. Vaše povratne informacije pomažu nam da katalog bude točan.

Provjerio TapHome

Želite ovo koristiti u svojoj centralnoj jedinici TapHome Core?

Otvorite ovaj predložak na portalu Customer Portal kako biste ga primijenili na jedan od svojih domova ili predložili poboljšanje i poslali ga natrag u katalog.

Otvorite na portalu