TapHome

Shelly DUO MQTT

Packet Parser → MQTT
Beküldő
Utoljára frissítve: 06. 2026
Shelly DUO MQTT

A Shelly DUO (modell SHBDUO-1) egy Gen1 Wi-Fi LED okos izzó, E27 és GU10 változatban kapható. Az alap DUO csak fehér állítható színhőmérséklettel és szabályozható fényerővel — nincsenek RGB csatornái (az RGB-képes változat a DUO RGBW / shellycolorbulb-, amely külön sablont használ). Ez az integráció MQTT változata; egy izzós telepítéshez elérhető egy HTTP változat is.

A sablon 5 DUO izzót támogat modulonként egy közös, helyi hálózaton elérhető MQTT brókeren keresztül. Minden izzót a bulbNtopic modulváltozó azonosít, amely az izzó MQTT Device ID-jára mutat, és minden izzóhoz egy fehér fény eszköz és egy elektromos mérő tartozik — összesen 10 eszköz.

Konfiguráció

MQTT bróker

A sablonhoz egy helyi hálózaton elérhető MQTT bróker szükséges — bármilyen szabványos bróker megfelel (Mosquitto, EMQX vagy a Home Assistant beépített brókere). A bróker az 1883-as porton fut TLS nélkül (a Gen1 Shelly hardver nem támogatja a TLS-t MQTT felett), ezért tartsa megbízható szegmensben.

A sablon importálása után állítsa be a brókerkapcsolatot a modul import paramétereiben:

ParaméterAlapértékLeírás
MQTT Broker IP (IpAddress)192.168.0.1A bróker címe a helyi hálózaton
MQTT Broker port (Port)1883Szabványos MQTT port (TLS nélkül)
Transition time (TransitionTime)300Alapértelmezett izzónkénti átmenet ideje milliszekundumban
MQTT engedélyezése az izzón

Minden Shelly DUO izzót a brókerre kell mutatni, mielőtt üzeneteket publikál vagy parancsokat fogad:

  1. Nyissa meg az izzó webes felületét a http://<bulb-ip> címen (az IP-t a router DHCP táblájában vagy a Shelly appban találja meg)
  2. Lépjen az Internet & SecurityAdvanced — MQTT menübe és kapcsolja be az MQTT-t
  3. Adja meg a bróker server mezőjét (IP és port, pl. 192.168.0.10:1883), a username / password mezőket pedig hagyja üresen (a TapHome sablon nem támogatja a bróker hitelesítést)
  4. Opcionálisan módosítsa az MQTT prefix értékét, ha nem szeretné az alapértelmezett shellies/ShellyBulbDuo-<MAC6> előtagot
  5. Mentse és indítsa újra az izzót — újra csatlakozás után publikálni kezd a shellies/ShellyBulbDuo-<id>/light/0/status topicra
Device ID (bulbNtopic)

Minden Shelly DUO egyedi MQTT Device ID-val rendelkezik ShellyBulbDuo-<MAC6> formátumban, ahol <MAC6> a MAC-cím utolsó 6 hex karaktere (pl. ShellyBulbDuo-B929CC). Ugyanez az érték az izzó mDNS hostneve is (ShellyBulbDuo-<MAC6>.local).

A Device ID megtalálható:

  • A Shelly web UI-ban: SettingsDevice Infomqtt.id mező
  • HTTP-n keresztül: GET http://<bulb-ip>/settingsmqtt.id
  • Az eszköz címkéjén / csomagolásán (a MAC utolsó 6 karaktere, kis hex)
  • Az mDNS hostnévként, pl. ShellyBulbDuo-b929cc.local

Nyissa meg a Shelly DUO MQTT modult a TapHome-ban, és töltse ki a topic változókat minden használni kívánt izzóhoz:

VáltozóAlapértékLeírás
bulb1topicShellyBulbDuo-deviceid1Az első DUO izzó MQTT Device ID-ja
bulb2topicShellyBulbDuo-deviceid2A második DUO izzó MQTT Device ID-ja
bulb3topicShellyBulbDuo-deviceid3A harmadik DUO izzó MQTT Device ID-ja
bulb4topicShellyBulbDuo-deviceid4A negyedik DUO izzó MQTT Device ID-ja
bulb5topicShellyBulbDuo-deviceid5Az ötödik DUO izzó MQTT Device ID-ja

Cserélje le a placeholder értéket minden vezérelni kívánt izzó valódi Device ID-jára (pl. ShellyBulbDuo-B929CC). A modul feliratkozik a shellies/# topicra, és az izzónkénti listener szkriptek topic prefix alapján szűrik az üzeneteket. Azok a slotok, amelyek placeholder értéken maradnak, hibát adnak a TapHome-ban, amíg nincsenek konfigurálva vagy eltávolítva a sablonból.

Izzónkénti átmenet idő

Minden Light eszköz transitionTime változóval rendelkezik (milliszekundumban, 0-5000 ms tartomány), amely alapértelmezésben a modul szintű TransitionTime import paramétertől öröklődik. Írja felül az egyes izzókon, ha eltérő átmenet időket szeretne — az érték minden fényerő- vagy CCT-változásnál a /light/0/set JSON payload transition mezőjeként kerül elküldésre.

Az MQTT bekapcsolása egy Gen1 Shelly eszközön letiltja a Shelly Cloudot — a kettő nem futhat egyszerre. A HTTP REST és a CoIoT továbbra is elérhető marad, így az izzó a helyi hálózaton elérhető marad.

Eszközfunkciók

A sablon 10 eszközt biztosít modulonként — 5 állítható fehér fényt és 5 elektromos mérőt, fizikai izzónként egy párt. Mind az 5 pár funkcionálisan azonos, csak a bulbNtopic különbözteti meg őket, amelyre figyelnek.

Fény vezérlése

Minden Light eszköz a TapHome-ban White Light ként van leképezve, két vezérlési tulajdonsággal:

  • Fényerő — a light/0/status JSON $.brightness mezőjéből (0-100) olvasott, a TapHome 0.0-1.0 tartományára skálázva; a light/0/set topicra írva "turn":"on", "brightness":N, "transition":<ms> üzenettel
  • Színhőmérséklet — a $.temp mezőből (3000-6500 K) olvasott, a light/0/set topicra írva "temp":K, "transition":<ms> üzenettel

A fény kikapcsolása külön light/0/command topicot használ off payload-dal, ami gyorsabb, mint JSON set üzenetet összeállítani. A fényerő- és CCT-frissítések mindig tartalmazzák a transition mezőt, így az izzó folyamatosan átúszik az ugrás helyett.

Fogyasztásmérés

Minden Electric Meter két skalár topicra iratkozik fel, amelyeket az izzó nagyjából másodpercenként publikál:

TapHome értékForrás topicForrás egységÁtváltásMegjelenített egység
Pillanatnyi teljesítményshellies/ShellyBulbDuo-<id>/light/0/powerW÷ 1000kW
Összes fogyasztásshellies/ShellyBulbDuo-<id>/light/0/energywatt-perc÷ 60000kWh

A watt-perc → kWh átváltásra azért van szükség, mert a Shelly Gen1 firmware kumulatív energiát W·perc-ben jelent W·óra helyett.

A fogyasztásmérés csendben nullát ad vissza, amíg a Settings → Device Model (E27 vagy GU10) nincs beállítva a Shelly appban vagy web UI-ban. A TapHome listener az első olvasáskor információs banneren emlékeztet erre. A modell beállítása után az izzó azonnal nem nulla power/energy értékeket kezd jelenteni.

Hibaelhárítás

Az izzó nem reagál
  1. Ellenőrizze, hogy az izzó csatlakozik a Wi-Fi-hez és elérhető a LAN-ban — nyissa meg http://<bulb-ip>/shelly. A "type":"SHBDUO-1" válasz megerősíti az eszközt.
  2. Próbálja az mDNS hostnevet (ShellyBulbDuo-<MAC6>.local) az IP-cím helyett — DHCP megújítás vagy router újraindítás megváltoztathatja az IP-t.
  3. Erősítse meg, hogy az MQTT engedélyezve van az izzó Internet & Security → Advanced — MQTT beállításaiban, és hogy a bróker IP/port megegyezik a TapHome import paramétereivel.
  4. Használjon MQTT klienst (pl. MQTT Explorer vagy mosquitto_sub -h <broker> -t 'shellies/#' -v) annak ellenőrzésére, hogy az izzó publikál-e a shellies/ShellyBulbDuo-<id>/... topicra.
“Set correct ‘bulbNtopic’ value” hiba

A listener szkript akkor dobja ezt a hibát, ha a bulbNtopic még az alapértelmezett placeholder értéken (ShellyBulbDuo-deviceid) áll. Vagy adja meg a valódi Device ID-t az adott slotra, vagy távolítsa el a nem használt eszközöket a sablonból, ha csak néhány izzója van.

A teljesítmény és energia nullán marad
  1. Nyissa meg a Shelly appot (vagy a web UI-t) → SettingsDevice Model és válassza ki a megfelelő alváltozatot (Shelly Bulb DUO E27 vagy Shelly Bulb DUO GU10). Az izzó csak a modell ismeretében kezdi számolni a power/energy értékeket.
  2. Erősítse meg, hogy az izzó valóban be van kapcsolva — a mérő csak áramfolyás közben frissül.
  3. Iratkozzon fel közvetlenül a shellies/ShellyBulbDuo-<id>/light/0/power topicra MQTT klienssel, és ellenőrizze, hogy az izzó nem nulla értéket publikál.
A legmelegebb CCT csak 3000 K-ig megy

A TapHome XML a CCT-t 3000-6500 K közé szorítja, hogy megfeleljen a hirdetett E27 tartománynak. Maga a hardver támogatja a 2700-6500 K tartományt a GU10 alváltozaton és a nyers /light/0/set API-n, így a GU10 tartományának legmelegebb 300 K-je nem érhető el a TapHome sablonon keresztül.

A fény átmenetei akadoznak

Növelje az adott izzó transitionTime változóját (vagy a modul szintű TransitionTime alapértékét). 300 ms rendben van kis tompítási lépésekhez, de nagy fényerő- vagy CCT-változásoknál lépcsősnek tűnhet — próbáljon 800-1500 ms-et finomabb átmenethez.

A Gen1 Shelly eszközök sima MQTT-t használnak az 1883-as porton — nincs TLS támogatás. A TapHome sablon a bróker username / password mezőit sem teszi elérhetővé, ezért használjon hitelesítés nélküli brókert egy megbízható helyi hálózaton vagy VLAN-on.

Telepítés a TapHome-ban

Előfeltételek

  • Shelly eszköz csatlakoztatva a Wi-Fi-hez (ha még nem, lásd a HTTP kapcsolódási útmutatót)
  • MQTT broker fut a helyi hálózaton (pl. Mosquitto, Home Assistant vagy a TapHome beépített brokere)
  • TapHome CCU ugyanazon a hálózaton, mint a broker

A Gen1 eszközökön az MQTT engedélyezése letiltja a Shelly Cloudot. A kettő nem futhat egyszerre. A Gen2/Plus eszközökön ez a korlátozás nem érvényes.

1. lépés — MQTT engedélyezése a Shelly eszközön

Gen1 eszközök (Shelly 1, 1PM, 2.5, EM, 3EM, Plug S, RGBW2, Dimmer, TRV…)

  1. Nyissa meg a Shelly webes felületet: http://<device-ip>/
  2. Navigáljon az Internet & SecurityAdvanced — MQTT menüpontra
  3. Engedélyezze az MQTT-t
  4. Állítsa be az MQTT Server-t: <broker-ip>:<port> (pl. 192.168.1.10:1883)
  5. Opcionálisan állítsa be az MQTT User és MQTT Password mezőket, ha a broker hitelesítést igényel
  6. Kattintson a Save gombra — az eszköz újraindul és csatlakozik a brokerhez

Gen2 / Plus eszközök (Shelly Plus 1, Plus 1PM, Plus 2PM, Plus Plug S, Plus H&T, Pro 3EM…)

  1. Nyissa meg a Shelly webes felületet: http://<device-ip>/
  2. Navigáljon a SettingsMQTT menüpontra
  3. Engedélyezze az MQTT-t
  4. Állítsa be a Server-t: <broker-ip>:<port> (pl. 192.168.1.10:1883)
  5. A Client ID előre ki van töltve az eszköz azonosítójával (pl. shellyplus1pm-AABBCCDDEE) — hagyja így, hacsak nincs konkrét oka a változtatásra
  6. Kattintson a Save gombra és indítsa újra az eszközt

Az MQTT működésének ellenőrzéséhez használjon egy MQTT klienst (pl. MQTT Explorer), és iratkozzon fel a shellies/# (Gen1) vagy <device-id>/# (Gen2) topikra. Látnia kell az eszköz állapotüzeneteit.

2. lépés — Device ID / MQTT Client ID megkeresése

Egyes sablonok Device ID vagy MQTT Client ID paramétert igényelnek. Ez az egyedi azonosító, amelyet az MQTT topikokban használnak.

  • Gen1: a címkén MAC-címként található (pl. AABBCCDDEE). Device ID = shelly<model>-<mac>, pl. shelly1pm-AABBCCDDEE
  • Gen2/Plus: a Shelly webes felületén a SettingsDevice InfoDevice ID alatt található, vagy az eszköz címkéjén

3. lépés — Konfigurálás a TapHome-ban

  1. A TapHome-ban adjon hozzá egy új Packet Parser (MQTT) modult
  2. IP Address: adja meg az MQTT broker IP-címét (pl. 192.168.1.10)
  3. Port: 1883 (alapértelmezett; TLS esetén használjon 8883-at)
  4. Device ID / MQTT Client ID: adja meg a 2. lépésben kapott értéket (ha a sablon megköveteli)
  5. Importálja a sablont — a TapHome automatikusan feliratkozik az eszköz topikjaira

Elérhető eszközök

Shelly DUO MQTT Modul
Egyéni változók
bulb1topic (string) = ShellyBulbDuo-deviceid1Az első Shelly DUO izzó MQTT Device ID-ja — formátum: '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-deviceid2A második Shelly DUO izzó MQTT Device ID-ja
bulb3topic (string) = ShellyBulbDuo-deviceid3A harmadik Shelly DUO izzó MQTT Device ID-ja
bulb4topic (string) = ShellyBulbDuo-deviceid4A negyedik Shelly DUO izzó MQTT Device ID-ja
bulb5topic (string) = ShellyBulbDuo-deviceid5Az ötödik Shelly DUO izzó MQTT Device ID-ja
Elektromos mérő 1 Villanyóra Csak olvasható

Az 1. izzó pillanatnyi teljesítménye (kW) és kumulatív energiája (kWh) — a Settings → Device Model beállítását igényli a Shelly appban, különben mindkét érték 0 marad

numeric Egység: kW / kWh

Elektromos mérő 1

Figyelő
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
Fény 1 Fehér lámpa

1. állítható fehér izzó — be/ki, fényerő 0-100 % és színhőmérséklet 3000-6500 K finom átmenetekkel

json Egység: % / K json_path
Változó: transitionTimeIzzónkénti átmenet idő milliszekundumban (0-5000 ms), a TransitionTime import paramétertől örökölve

Fény 1

Figyelő
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
Fényerő írása
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
Színhőmérséklet írása
IF ISNAN(Ct)
    RETURN(0);
END

VAR topic := "shellies/" + bulb1topic + "/light/0/set";
MQTTPUBLISH(topic, "{\"transition\": " + transitionTime + ", \"temp\":" + Ct + "}");
Elektromos mérő 2 Villanyóra Csak olvasható

A 2. izzó pillanatnyi teljesítménye (kW) és kumulatív energiája (kWh) — a Settings → Device Model beállítását igényli a Shelly appban, különben mindkét érték 0 marad

numeric Egység: kW / kWh

Elektromos mérő 2

Figyelő
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
Fény 2 Fehér lámpa

2. állítható fehér izzó — be/ki, fényerő 0-100 % és színhőmérséklet 3000-6500 K finom átmenetekkel

json Egység: % / K json_path
Változó: transitionTimeIzzónkénti átmenet idő milliszekundumban (0-5000 ms), a TransitionTime import paramétertől örökölve

Fény 2

Figyelő
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
Fényerő írása
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
Színhőmérséklet írása
IF ISNAN(Ct)
    RETURN(0);
END

VAR topic := "shellies/" + bulb2topic + "/light/0/set";
MQTTPUBLISH(topic, "{\"transition\": " + transitionTime + ", \"temp\":" + Ct + "}");
Elektromos mérő 3 Villanyóra Csak olvasható

A 3. izzó pillanatnyi teljesítménye (kW) és kumulatív energiája (kWh) — a Settings → Device Model beállítását igényli a Shelly appban, különben mindkét érték 0 marad

numeric Egység: kW / kWh

Elektromos mérő 3

Figyelő
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
Fény 3 Fehér lámpa

3. állítható fehér izzó — be/ki, fényerő 0-100 % és színhőmérséklet 3000-6500 K finom átmenetekkel

json Egység: % / K json_path
Változó: transitionTimeIzzónkénti átmenet idő milliszekundumban (0-5000 ms), a TransitionTime import paramétertől örökölve

Fény 3

Figyelő
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
Fényerő írása
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
Színhőmérséklet írása
IF ISNAN(Ct)
    RETURN(0);
END

VAR topic := "shellies/" + bulb3topic + "/light/0/set";
MQTTPUBLISH(topic, "{\"transition\": " + transitionTime + ", \"temp\":" + Ct + "}");
Elektromos mérő 4 Villanyóra Csak olvasható

A 4. izzó pillanatnyi teljesítménye (kW) és kumulatív energiája (kWh) — a Settings → Device Model beállítását igényli a Shelly appban, különben mindkét érték 0 marad

numeric Egység: kW / kWh

Elektromos mérő 4

Figyelő
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
Fény 4 Fehér lámpa

4. állítható fehér izzó — be/ki, fényerő 0-100 % és színhőmérséklet 3000-6500 K finom átmenetekkel

json Egység: % / K json_path
Változó: transitionTimeIzzónkénti átmenet idő milliszekundumban (0-5000 ms), a TransitionTime import paramétertől örökölve

Fény 4

Figyelő
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
Fényerő írása
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
Színhőmérséklet írása
IF ISNAN(Ct)
    RETURN(0);
END

VAR topic := "shellies/" + bulb4topic + "/light/0/set";
MQTTPUBLISH(topic, "{\"transition\": " + transitionTime + ", \"temp\":" + Ct + "}");
Elektromos mérő 5 Villanyóra Csak olvasható

Az 5. izzó pillanatnyi teljesítménye (kW) és kumulatív energiája (kWh) — a Settings → Device Model beállítását igényli a Shelly appban, különben mindkét érték 0 marad

numeric Egység: kW / kWh

Elektromos mérő 5

Figyelő
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
Fény 5 Fehér lámpa

5. állítható fehér izzó — be/ki, fényerő 0-100 % és színhőmérséklet 3000-6500 K finom átmenetekkel

json Egység: % / K json_path
Változó: transitionTimeIzzónkénti átmenet idő milliszekundumban (0-5000 ms), a TransitionTime import paramétertől örökölve

Fény 5

Figyelő
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
Fényerő írása
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
Színhőmérséklet írása
IF ISNAN(Ct)
    RETURN(0);
END

VAR topic := "shellies/" + bulb5topic + "/light/0/set";
MQTTPUBLISH(topic, "{\"transition\": " + transitionTime + ", \"temp\":" + Ct + "}");
Kapcsolat: Packet Parser → MQTT
Lehetséges fejlesztések (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.

Források

Talált problémát ezzel az eszközsablonnal?

Írja meg, mi nem működik, mi hiányzik, vagy hogyan kellene a sablonnak viselkednie. Visszajelzése segít, hogy a katalógus pontos maradjon.

TapHome által hitelesítve

Használni szeretnéd ezt a TapHome Core-odban?

Nyisd meg ezt a sablont az ügyfélportálon, hogy alkalmazd az otthonaid egyikére, vagy készíts egy módosítást és küldd vissza a katalógusba.

Megnyitás a portálon