---
title: "Shelly DUO RGBW MQTT"
description: "Vezéreljen akár 5 Shelly DUO RGBW izzót MQTT-n keresztül — teljes RGB szín, állítható fehér 3000–6500 K, sima átmenetek és fogyasztásmérés."
url: "https://taphome.com/hu/compatibility/shelly-duo-rgbw-mqtt/"
language: hu
lastmod: 2026-03-30
generator: hugo
ai:
  topics: ["mqtt","lighting","wifi","rgbw","color-temperature","power-metering"]
  questions: ["Hogyan integrálható a Shelly DUO RGBW a TapHome-mal MQTT-n keresztül?","Mit vezérel a TapHome Shelly DUO RGBW MQTT sablon?","Hogyan csatlakoztatható több Shelly DUO RGBW izzó MQTT-n keresztül a TapHome-hoz?","Hogyan található meg a Shelly DUO RGBW MQTT Device ID-ja?","Miért mutat a Shelly DUO RGBW nulla fogyasztási értékeket?","Hogyan lehet váltani RGB és fehér mód között a Shelly DUO RGBW-n MQTT-n keresztül?"]
---

# Shelly DUO RGBW MQTT

Kommunikáció: Packet Parser → MQTT

- [Shelly DUO RGBW termékoldal](https://www.shelly.com/en/products/shop/shelly-duo-rgbw-gu10)

> Hálózati cím
> 
> A TapHome-ba épített MQTT bróker esetén a TapHome-ban brókercímként adja meg a `127.0.0.1` címet. Az eszközben a TapHome Core IP-címét adja meg, és a Core-nak állítson be IP-foglalást a routerben.
> 
> [A hálózat előkészítése](https://taphome.com/hu/docs/setup/network-preparation/)

## Integrációs útmutató

A Shelly DUO RGBW (modell SHCB-1) egy Gen1 Wi-Fi okos LED izzó, E27 és GU10 formátumban kapható. Teljes RGB színeket és állítható fehéret (CCT 3000–6500 K) támogat sima átmeneti effektusokkal. Ez a TapHome integráció **MQTT változata** — a sablon a helyi hálózaton lévő megosztott MQTT brokeren keresztül kommunikál az izzókkal. Egyetlen izzós összeállításokhoz [HTTP változat](https://taphome.com/hu/compatibility/shelly-duo-rgbw/) is elérhető.

A sablon modulonként akár **5 Shelly DUO RGBW izzót** támogat. Minden izzópéldányt egy `bulbNtopic` egyéni változó különböztet meg, amely az izzó MQTT Device ID-jára mutat. Minden izzó egy RGBW lámpát és egy villamos mérőt biztosít — összesen 10 eszköz.

## Konfiguráció

### Device ID

Minden Shelly DUO RGBW izzónak egyedi MQTT Device ID-ja van `shellycolorbulb-<DEVICEID>` formátumban, ahol a `<DEVICEID>` a MAC címből származik (pl. `shellycolorbulb-B929CC`).

A Device ID megtalálható:

- Az eszköz csomagolásán vagy címkéjén (MAC cím)
- A Shelly webes felületen: **Settings** → **Device Info**
- API-n keresztül: `GET http://<device-ip>/settings` → `mqtt.id` mező

### Modulváltozók

A sablon importálása után a TapHome-ban konfigurálja az izzó topic változókat:

| Változó | Alapértelmezett | Leírás |
|---------|----------------|--------|
| `bulb1topic` | `shellycolorbulb-deviceid1` | MQTT Device ID az 1. izzóhoz |
| `bulb2topic` | `shellycolorbulb-deviceid2` | MQTT Device ID a 2. izzóhoz |
| `bulb3topic` | `shellycolorbulb-deviceid3` | MQTT Device ID a 3. izzóhoz |
| `bulb4topic` | `shellycolorbulb-deviceid4` | MQTT Device ID a 4. izzóhoz |
| `bulb5topic` | `shellycolorbulb-deviceid5` | MQTT Device ID az 5. izzóhoz |

Cserélje le az alapértelmezett helyőrzőt az egyes izzók tényleges Device ID-jára (pl. `shellycolorbulb-B929CC`). Csak a ténylegesen használt slotokat konfigurálja — az alapértelmezett helyőrzővel rendelkező nem használt slotok hibaüzenetet jelenítenek meg a helyes topic beállítására.

A modul feliratkozik a `shellies/#` topicra (QoS 0, port 1883), és a listener szkriptek az egyes izzókhoz konfigurált topic prefix alapján szűrik az üzeneteket.

> [!WARNING]
> Gen1 Shelly eszközökön az MQTT engedélyezése **kikapcsolja a Shelly Cloudot**. A kettő nem futhat egyidejűleg.

## Eszközfunkciók

### Fényerő-szabályozás

Minden izzó HSB Light eszközként van leképezve a TapHome-ban. Az izzó két kölcsönösen kizáró módban működik:

- **Színes mód** — teljes RGB vezérlés piros, zöld és kék csatornán (egyenként 0–255) plusz gain (0–100 %). A TapHome az RGB-t belsőleg HSV-re konvertálja — az árnyalat (0–360°), telítettség és fényerő vezérlési tulajdonságként érhető el. Az árnyalat vagy telítettség beállítása `color/0/set` JSON payloadot küld `"mode":"color"` értékkel.
- **Fehér mód** — állítható fehér színhőmérséklet (3000–6500 K) és fényerő (0–100 %) révén. A CCT érték beállítása a TapHome-ban automatikusan fehér módra kapcsolja az izzót `"mode":"white"` publikálásával a hőmérséklettel és fényerővel.

Minden írási parancs konfigurálható átmeneti időt tartalmaz (alapértelmezett 300 ms) a sima halványítás érdekében. A debounce mechanizmus megakadályozza az elavult adatok olvasását az átmenetek során — a sablon figyelmen kívül hagyja a bejövő MQTT állapotüzeneteket `transitionTime + 3000 ms` időtartamra minden írási parancs után.

### Fogyasztásmérés

Minden izzópéldány tartalmaz egy villamos mérőt, amely két értéket olvas:

- **Pillanatnyi teljesítmény** — a `shellies/{id}/light/0/power` topicból, wattban jelentve, kW-ra konvertálva (payload / 1000)
- **Összes fogyasztás** — a `shellies/{id}/light/0/energy` topicból, wattperben jelentve, kWh-ra konvertálva (payload / 60 000)

> [!TIP]
> A fogyasztásmérés megköveteli az eszközmodell konfigurálását a Shelly alkalmazásban vagy webes felületen a **Settings** > **Device Model** alatt. E nélkül a fogyasztási értékek nullán maradnak.

### További funkciók

A Shelly DUO RGBW támogatja továbbá a fényeffektusokat (meteor shower, gradual change, breath, flash, on/off gradual, red/green change), egy dedikált fehér LED csatornát (0–255) színes módban, MQTT kapcsolat állapotot LWT topicon keresztül, és teljes JSON állapotjelentést (firmware ≥1.8.0) Wi-Fi RSSI, uptime és hőmérsékleti adatokkal. Ezek a funkciók egy jövőbeli sablonfrissítésben adhatók hozzá.

## Hibaelhárítás

### Az izzók nem reagálnak

1. Ellenőrizze, hogy az MQTT engedélyezve van minden izzó webes felületén (**Internet & Security** > **Advanced — MQTT**)
2. Győződjön meg arról, hogy a broker címe és portja helyes mind a Shelly eszközbeállításokban, mind a TapHome modulkonfigurációban
3. Ellenőrizze, hogy minden `bulbNtopic` egyéni változó pontosan megegyezik az izzó Device ID-jával (pl. `shellycolorbulb-B929CC`)
4. Használjon MQTT klienst (pl. MQTT Explorer), iratkozzon fel a `shellies/#` topicra és ellenőrizze, hogy minden izzó publikál üzeneteket

### A színek helytelenül jelennek meg

1. Ellenőrizze, hogy az izzó színes módban van — az RGB színek csak színes módban működnek, fehér módban nem
2. Győződjön meg arról, hogy a telítettség nagyobb mint nulla — a 0 telítettség az árnyalattól függetlenül fehér fényt produkál
3. Ellenőrizze, hogy a gain (fényerő színes módban) nincs nullára állítva

### A fogyasztási értékek nullát mutatnak

1. Győződjön meg arról, hogy az eszközmodell konfigurálva van a Shelly alkalmazásban vagy webes felületen (**Settings** > **Device Model**)
2. Ellenőrizze, hogy az izzó be van kapcsolva — a mérő csak akkor olvas, ha az izzó áramot vesz fel

> [!WARNING]
> A Gen1 Shelly eszközök **nem** támogatják az MQTT-t TLS-en keresztül. Az izzók és az MQTT broker közötti kommunikáció titkosítatlan (plain MQTT, port 1883). Győződjön meg arról, hogy az MQTT broker megbízható helyi hálózaton üzemel.

## Telepítés a TapHome-ban

### Előfeltételek

- Shelly eszköz csatlakoztatva a Wi-Fi-hez (2,4 GHz), pl. a Shelly alkalmazással vagy az eszköz saját hozzáférési pontján keresztül
- 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

> [!WARNING]
> 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 & Security** → **Advanced — 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 **Settings** → **MQTT** 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

A beépített TapHome broker esetén a `<broker-ip>` a TapHome Core IP-címe. Adjon a Core-nak IP-foglalást a routerben, különben az eszköz elveszíti a brokert, amikor a router megváltoztatja a címet → [A hálózat előkészítése](https://taphome.com/hu/docs/setup/network-preparation/).

> [!TIP]
> 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 **Settings** → **Device Info** → **Device 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:** a beépített TapHome brokerhez `127.0.0.1` (a vezérlőegység saját magához csatlakozik, a cím soha nem változik); külső broker esetén annak IP-címe (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 10

Ezek az eszközök az importálás után jelennek meg a TapHome-ban.

Shelly DUO RGBW MQTT Modul

Egyéni változók

|                                                   |                                                                                                                                                                             |
|---------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `bulb1topic` (string) = shellycolorbulb-deviceid1 | Az 1. izzó MQTT Device ID-ja, a shellies/&lt;Device ID&gt;/… topicban használva — formátum: 'shellycolorbulb-DEVICEID' (Device ID a Shelly web UI → Settings → Device Info) |
| `bulb2topic` (string) = shellycolorbulb-deviceid2 | A 2. izzó MQTT topic neve                                                                                                                                                   |
| `bulb3topic` (string) = shellycolorbulb-deviceid3 | A 3. izzó MQTT topic neve                                                                                                                                                   |
| `bulb4topic` (string) = shellycolorbulb-deviceid4 | A 4. izzó MQTT topic neve                                                                                                                                                   |
| `bulb5topic` (string) = shellycolorbulb-deviceid5 | Az 5. izzó MQTT topic neve                                                                                                                                                  |

Villamos mérő 1 Villanyóra Csak olvasható

Az 1. izzó fogyasztásmérése — pillanatnyi teljesítmény (kW) és kumulatív energia (kWh)

numeric Egység: kW / kWh

Figyelő

```taphome
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, "shellycolorbulb-deviceid") = 0)
    ADDERROR("Set correct 'bulb1topic' value in module variables. Topic format is 'shellycolorbulb-<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
```

RGBW lámpa 1 HSB lámpa Olvasás és írás

HSB lámpa kettős móddal — teljes RGB szín gainnel, vagy állítható fehér (3000–6500 K) fényerővel

json JSON (ison, mode, red, green, blue, white, gain, temp, brightness, effect)

Figyelő

```taphome
IF(INDEXOF(bulb1topic, "shellycolorbulb-deviceid") = 0)
    ADDERROR("Set correct 'bulb1topic' value in module variables. Topic format is 'shellycolorbulb-<deviceid>'. The Device ID can be found by opening url 'http://shellyIpAddress', in Settings -> Device info.");
    RETURN(-1);
END

VAR now := NOW();
IF now.Ticks < debounceTimestamp
    RETURN(0);
END

IF INDEXOF(RECEIVEDMSG.TOPIC, "shellies/" + bulb1topic + "/color/0/status") != 0
    RETURN(0);
END

IF RECEIVEDMSG.PAYLOAD.LENGTH = 0
    RETURN(0);
END

BOOL ison := PARSEJSON(RECEIVEDMSG.PAYLOAD, "$.ison", 1);
VAR mode := PARSEJSON(RECEIVEDMSG.PAYLOAD, "$.mode", 1);

IF ISNULL(mode)
    RETURN(0);
END

INT bright;

IF mode = "color"
    UINT8 red := PARSEJSON(RECEIVEDMSG.PAYLOADStatus, "$.red");
    UINT8 green := PARSEJSON(RECEIVEDMSG.PAYLOADStatus, "$.green");
    UINT8 blue := PARSEJSON(RECEIVEDMSG.PAYLOADStatus, "$.blue");
    bright := PARSEJSON(RECEIVEDMSG.PAYLOADStatus, "$.gain");
    
    VAR hsvColor := RGBTOHSV(red, green, blue);
    
    Hd := ROUND(hsvColor.Hue);
    Sa := ROUND(hsvColor.Saturation * 100.0) / 100.0;
    Ct := NaN;
ELSE
    Ct := PARSEJSON(RECEIVEDMSG.PAYLOADStatus, "$.temp");
    bright := PARSEJSON(RECEIVEDMSG.PAYLOADStatus, "$.brightness");
END

IF ison
    Hb:= bright / 100.0;
    St := isOn;
ELSE
    Hb := 0;
    St := 0;
END
```

Fényerő írása

```taphome
VAR now := NOW();
debounceTimestamp := now.Ticks + transitionTime + 3000;

IF St > 0.5
    VAR topic := "shellies/" + bulb1topic + "/color/0/set";
    
	IF ISNAN(Ct)
        MQTTPUBLISH(topic, "{\"turn\": \"on\", \"transition\": " + transitionTime + ", \"gain\": " + ROUND(Hb*100.0) + "}");
    ELSE
        MQTTPUBLISH(topic, "{\"turn\": \"on\", \"transition\": " + transitionTime + ", \"brightness\": " + ROUND(Hb*100.0) + "}");
        
    END
ELSE
    MQTTPUBLISH("shellies/" + bulb1topic + "/color/0/command", "off");
END
```

Színárnyalat írása

```taphome
IF !ISNAN(Ct)
    RETURN(0);
END

VAR now := NOW();
debounceTimestamp := now.Ticks + transitionTime + 3000;

VAR topic := "shellies/" + bulb1topic + "/color/0/set";
VAR rgbColor := HSVTORGB(Hd, Sa, 1);

VAR data := "{\"mode\": \"color\", \"gain\": " + ROUND(Hb*100.0) + ", \"transition\":" + transitionTime + ",\"red\":" + rgbColor.red + ",\"green\":" + rgbColor.green + ",\"blue\":" + rgbColor.blue + "}";

MQTTPUBLISH(topic, data);
```

Telítettség írása

```taphome
IF !ISNAN(Ct)
    RETURN(0);
END

VAR now := NOW();
debounceTimestamp := now.Ticks + transitionTime + 3000;

VAR topic := "shellies/" + bulb1topic + "/color/0/set";
VAR rgbColor := HSVTORGB(Hd, Sa, 1);

VAR data := "{\"mode\": \"color\", \"gain\": " + ROUND(Hb*100.0) + ", \"transition\":" + transitionTime + ",\"red\":" + rgbColor.red + ",\"green\":" + rgbColor.green + ",\"blue\":" + rgbColor.blue + "}";

MQTTPUBLISH(topic, data);
```

Színhőmérséklet írása

```taphome
IF ISNAN(Ct)
    RETURN(0);
END

VAR now := NOW();
debounceTimestamp := now.Ticks + transitionTime + 3000;

VAR topic := "shellies/" + bulb1topic + "/color/0/set";

MQTTPUBLISH(topic, "{\"mode\": \"white\", \"brightness\": " + ROUND(Hb*100.0) + ", \"transition\": " + transitionTime + ", \"temp\":" + Ct + "}");
```

Villamos mérő 2 Villanyóra Csak olvasható

A 2. izzó fogyasztásmérése — pillanatnyi teljesítmény (kW) és kumulatív energia (kWh)

numeric Egység: kW / kWh

Figyelő

```taphome
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, "shellycolorbulb-deviceid") = 0)
    ADDERROR("Set correct 'bulb2topic' value in module variables. Topic format is 'shellycolorbulb-<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
```

RGBW lámpa 2 HSB lámpa Olvasás és írás

HSB lámpa kettős móddal — teljes RGB szín gainnel, vagy állítható fehér (3000–6500 K) fényerővel

json JSON (ison, mode, red, green, blue, white, gain, temp, brightness, effect)

Figyelő

```taphome
IF(INDEXOF(bulb2topic, "shellycolorbulb-deviceid") = 0)
    ADDERROR("Set correct 'bulb2topic' value in module variables. Topic format is 'shellycolorbulb-<deviceid>'. The Device ID can be found by opening url 'http://shellyIpAddress', in Settings -> Device info.");
    RETURN(-1);
END

VAR now := NOW();
IF now.Ticks < debounceTimestamp
    RETURN(0);
END

IF INDEXOF(RECEIVEDMSG.TOPIC, "shellies/" + bulb2topic + "/color/0/status") != 0
    RETURN(0);
END

IF RECEIVEDMSG.PAYLOAD.LENGTH = 0
    RETURN(0);
END

BOOL ison := PARSEJSON(RECEIVEDMSG.PAYLOAD, "$.ison", 1);
VAR mode := PARSEJSON(RECEIVEDMSG.PAYLOAD, "$.mode", 1);

IF ISNULL(mode)
    RETURN(0);
END

INT bright;

IF mode = "color"
    UINT8 red := PARSEJSON(RECEIVEDMSG.PAYLOADStatus, "$.red");
    UINT8 green := PARSEJSON(RECEIVEDMSG.PAYLOADStatus, "$.green");
    UINT8 blue := PARSEJSON(RECEIVEDMSG.PAYLOADStatus, "$.blue");
    bright := PARSEJSON(RECEIVEDMSG.PAYLOADStatus, "$.gain");
    
    VAR hsvColor := RGBTOHSV(red, green, blue);
    
    Hd := ROUND(hsvColor.Hue);
    Sa := ROUND(hsvColor.Saturation * 100.0) / 100.0;
    Ct := NaN;
ELSE
    Ct := PARSEJSON(RECEIVEDMSG.PAYLOADStatus, "$.temp");
    bright := PARSEJSON(RECEIVEDMSG.PAYLOADStatus, "$.brightness");
END

IF ison
    Hb:= bright / 100.0;
    St := isOn;
ELSE
    Hb := 0;
    St := 0;
END
```

Fényerő írása

```taphome
VAR now := NOW();
debounceTimestamp := now.Ticks + transitionTime + 3000;

IF St > 0.5
    VAR topic := "shellies/" + bulb2topic + "/color/0/set";
    
	IF ISNAN(Ct)
        MQTTPUBLISH(topic, "{\"turn\": \"on\", \"transition\": " + transitionTime + ", \"gain\": " + ROUND(Hb*100.0) + "}");
    ELSE
        MQTTPUBLISH(topic, "{\"turn\": \"on\", \"transition\": " + transitionTime + ", \"brightness\": " + ROUND(Hb*100.0) + "}");
        
    END
ELSE
    MQTTPUBLISH("shellies/" + bulb2topic + "/color/0/command", "off");
END
```

Színárnyalat írása

```taphome
IF !ISNAN(Ct)
    RETURN(0);
END

VAR now := NOW();
debounceTimestamp := now.Ticks + transitionTime + 3000;

VAR topic := "shellies/" + bulb2topic + "/color/0/set";
VAR rgbColor := HSVTORGB(Hd, Sa, 1);

VAR data := "{\"mode\": \"color\", \"gain\": " + ROUND(Hb*100.0) + ", \"transition\":" + transitionTime + ",\"red\":" + rgbColor.red + ",\"green\":" + rgbColor.green + ",\"blue\":" + rgbColor.blue + "}";

MQTTPUBLISH(topic, data);
```

Telítettség írása

```taphome
IF !ISNAN(Ct)
    RETURN(0);
END

VAR now := NOW();
debounceTimestamp := now.Ticks + transitionTime + 3000;

VAR topic := "shellies/" + bulb2topic + "/color/0/set";
VAR rgbColor := HSVTORGB(Hd, Sa, 1);

VAR data := "{\"mode\": \"color\", \"gain\": " + ROUND(Hb*100.0) + ", \"transition\":" + transitionTime + ",\"red\":" + rgbColor.red + ",\"green\":" + rgbColor.green + ",\"blue\":" + rgbColor.blue + "}";

MQTTPUBLISH(topic, data);
```

Színhőmérséklet írása

```taphome
IF ISNAN(Ct)
    RETURN(0);
END

VAR now := NOW();
debounceTimestamp := now.Ticks + transitionTime + 3000;

VAR topic := "shellies/" + bulb2topic + "/color/0/set";

MQTTPUBLISH(topic, "{\"mode\": \"white\", \"brightness\": " + ROUND(Hb*100.0) + ", \"transition\": " + transitionTime + ", \"temp\":" + Ct + "}");
```

Villamos mérő 3 Villanyóra Csak olvasható

A 3. izzó fogyasztásmérése — pillanatnyi teljesítmény (kW) és kumulatív energia (kWh)

numeric Egység: kW / kWh

Figyelő

```taphome
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, "shellycolorbulb-deviceid") = 0)
    ADDERROR("Set correct 'bulb3topic' value in module variables. Topic format is 'shellycolorbulb-<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
```

RGBW lámpa 3 HSB lámpa Olvasás és írás

HSB lámpa kettős móddal — teljes RGB szín gainnel, vagy állítható fehér (3000–6500 K) fényerővel

json JSON (ison, mode, red, green, blue, white, gain, temp, brightness, effect)

Figyelő

```taphome
IF(INDEXOF(bulb3topic, "shellycolorbulb-deviceid") = 0)
    ADDERROR("Set correct 'bulb3topic' value in module variables. Topic format is 'shellycolorbulb-<deviceid>'. The Device ID can be found by opening url 'http://shellyIpAddress', in Settings -> Device info.");
    RETURN(-1);
END

VAR now := NOW();
IF now.Ticks < debounceTimestamp
    RETURN(0);
END

IF INDEXOF(RECEIVEDMSG.TOPIC, "shellies/" + bulb3topic + "/color/0/status") != 0
    RETURN(0);
END

IF RECEIVEDMSG.PAYLOAD.LENGTH = 0
    RETURN(0);
END

BOOL ison := PARSEJSON(RECEIVEDMSG.PAYLOAD, "$.ison", 1);
VAR mode := PARSEJSON(RECEIVEDMSG.PAYLOAD, "$.mode", 1);

IF ISNULL(mode)
    RETURN(0);
END

INT bright;

IF mode = "color"
    UINT8 red := PARSEJSON(RECEIVEDMSG.PAYLOADStatus, "$.red");
    UINT8 green := PARSEJSON(RECEIVEDMSG.PAYLOADStatus, "$.green");
    UINT8 blue := PARSEJSON(RECEIVEDMSG.PAYLOADStatus, "$.blue");
    bright := PARSEJSON(RECEIVEDMSG.PAYLOADStatus, "$.gain");
    
    VAR hsvColor := RGBTOHSV(red, green, blue);
    
    Hd := ROUND(hsvColor.Hue);
    Sa := ROUND(hsvColor.Saturation * 100.0) / 100.0;
    Ct := NaN;
ELSE
    Ct := PARSEJSON(RECEIVEDMSG.PAYLOADStatus, "$.temp");
    bright := PARSEJSON(RECEIVEDMSG.PAYLOADStatus, "$.brightness");
END

IF ison
    Hb:= bright / 100.0;
    St := isOn;
ELSE
    Hb := 0;
    St := 0;
END
```

Fényerő írása

```taphome
VAR now := NOW();
debounceTimestamp := now.Ticks + transitionTime + 3000;

IF St > 0.5
    VAR topic := "shellies/" + bulb3topic + "/color/0/set";
    
	IF ISNAN(Ct)
        MQTTPUBLISH(topic, "{\"turn\": \"on\", \"transition\": " + transitionTime + ", \"gain\": " + ROUND(Hb*100.0) + "}");
    ELSE
        MQTTPUBLISH(topic, "{\"turn\": \"on\", \"transition\": " + transitionTime + ", \"brightness\": " + ROUND(Hb*100.0) + "}");
        
    END
ELSE
    MQTTPUBLISH("shellies/" + bulb3topic + "/color/0/command", "off");
END
```

Színárnyalat írása

```taphome
IF !ISNAN(Ct)
    RETURN(0);
END

VAR now := NOW();
debounceTimestamp := now.Ticks + transitionTime + 3000;

VAR topic := "shellies/" + bulb3topic + "/color/0/set";
VAR rgbColor := HSVTORGB(Hd, Sa, 1);

VAR data := "{\"mode\": \"color\", \"gain\": " + ROUND(Hb*100.0) + ", \"transition\":" + transitionTime + ",\"red\":" + rgbColor.red + ",\"green\":" + rgbColor.green + ",\"blue\":" + rgbColor.blue + "}";

MQTTPUBLISH(topic, data);
```

Telítettség írása

```taphome
IF !ISNAN(Ct)
    RETURN(0);
END

VAR now := NOW();
debounceTimestamp := now.Ticks + transitionTime + 3000;

VAR topic := "shellies/" + bulb3topic + "/color/0/set";
VAR rgbColor := HSVTORGB(Hd, Sa, 1);

VAR data := "{\"mode\": \"color\", \"gain\": " + ROUND(Hb*100.0) + ", \"transition\":" + transitionTime + ",\"red\":" + rgbColor.red + ",\"green\":" + rgbColor.green + ",\"blue\":" + rgbColor.blue + "}";

MQTTPUBLISH(topic, data);
```

Színhőmérséklet írása

```taphome
IF ISNAN(Ct)
    RETURN(0);
END

VAR now := NOW();
debounceTimestamp := now.Ticks + transitionTime + 3000;

VAR topic := "shellies/" + bulb3topic + "/color/0/set";

MQTTPUBLISH(topic, "{\"mode\": \"white\", \"brightness\": " + ROUND(Hb*100.0) + ", \"transition\": " + transitionTime + ", \"temp\":" + Ct + "}");
```

Villamos mérő 4 Villanyóra Csak olvasható

A 4. izzó fogyasztásmérése — pillanatnyi teljesítmény (kW) és kumulatív energia (kWh)

numeric Egység: kW / kWh

Figyelő

```taphome
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, "shellycolorbulb-deviceid") = 0)
    ADDERROR("Set correct 'bulb4topic' value in module variables. Topic format is 'shellycolorbulb-<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
```

RGBW lámpa 4 HSB lámpa Olvasás és írás

HSB lámpa kettős móddal — teljes RGB szín gainnel, vagy állítható fehér (3000–6500 K) fényerővel

json JSON (ison, mode, red, green, blue, white, gain, temp, brightness, effect)

Figyelő

```taphome
IF(INDEXOF(bulb4topic, "shellycolorbulb-deviceid") = 0)
    ADDERROR("Set correct 'bulb4topic' value in module variables. Topic format is 'shellycolorbulb-<deviceid>'. The Device ID can be found by opening url 'http://shellyIpAddress', in Settings -> Device info.");
    RETURN(-1);
END

VAR now := NOW();
IF now.Ticks < debounceTimestamp
    RETURN(0);
END

IF INDEXOF(RECEIVEDMSG.TOPIC, "shellies/" + bulb4topic + "/color/0/status") != 0
    RETURN(0);
END

IF RECEIVEDMSG.PAYLOAD.LENGTH = 0
    RETURN(0);
END

BOOL ison := PARSEJSON(RECEIVEDMSG.PAYLOAD, "$.ison", 1);
VAR mode := PARSEJSON(RECEIVEDMSG.PAYLOAD, "$.mode", 1);

IF ISNULL(mode)
    RETURN(0);
END

INT bright;

IF mode = "color"
    UINT8 red := PARSEJSON(RECEIVEDMSG.PAYLOAD, "$.red");
    UINT8 green := PARSEJSON(RECEIVEDMSG.PAYLOAD, "$.green");
    UINT8 blue := PARSEJSON(RECEIVEDMSG.PAYLOAD, "$.blue");
    bright := PARSEJSON(RECEIVEDMSG.PAYLOAD, "$.gain");
    
    VAR hsvColor := RGBTOHSV(red, green, blue);
    
    Hd := ROUND(hsvColor.Hue);
    Sa := ROUND(hsvColor.Saturation * 100.0) / 100.0;
    Ct := NaN;
ELSE
    Ct := PARSEJSON(RECEIVEDMSG.PAYLOAD, "$.temp");
    bright := PARSEJSON(RECEIVEDMSG.PAYLOAD, "$.brightness");
END

IF ison
    Hb:= bright / 100.0;
    St := isOn;
ELSE
    Hb := 0;
    St := 0;
END
```

Fényerő írása

```taphome
VAR now := NOW();
debounceTimestamp := now.Ticks + transitionTime + 3000;

IF St > 0.5
    VAR topic := "shellies/" + bulb4topic + "/color/0/set";
    
	IF ISNAN(Ct)
        MQTTPUBLISH(topic, "{\"turn\": \"on\", \"transition\": " + transitionTime + ", \"gain\": " + ROUND(Hb*100.0) + "}");
    ELSE
        MQTTPUBLISH(topic, "{\"turn\": \"on\", \"transition\": " + transitionTime + ", \"brightness\": " + ROUND(Hb*100.0) + "}");
        
    END
ELSE
    MQTTPUBLISH("shellies/" + bulb4topic + "/color/0/command", "off");
END
```

Színárnyalat írása

```taphome
IF !ISNAN(Ct)
    RETURN(0);
END

VAR now := NOW();
debounceTimestamp := now.Ticks + transitionTime + 3000;

VAR topic := "shellies/" + bulb4topic + "/color/0/set";
VAR rgbColor := HSVTORGB(Hd, Sa, 1);

VAR data := "{\"mode\": \"color\", \"gain\": " + ROUND(Hb*100.0) + ", \"transition\":" + transitionTime + ",\"red\":" + rgbColor.red + ",\"green\":" + rgbColor.green + ",\"blue\":" + rgbColor.blue + "}";

MQTTPUBLISH(topic, data);
```

Telítettség írása

```taphome
IF !ISNAN(Ct)
    RETURN(0);
END

VAR now := NOW();
debounceTimestamp := now.Ticks + transitionTime + 3000;

VAR topic := "shellies/" + bulb4topic + "/color/0/set";
VAR rgbColor := HSVTORGB(Hd, Sa, 1);

VAR data := "{\"mode\": \"color\", \"gain\": " + ROUND(Hb*100.0) + ", \"transition\":" + transitionTime + ",\"red\":" + rgbColor.red + ",\"green\":" + rgbColor.green + ",\"blue\":" + rgbColor.blue + "}";

MQTTPUBLISH(topic, data);
```

Színhőmérséklet írása

```taphome
IF ISNAN(Ct)
    RETURN(0);
END

VAR now := NOW();
debounceTimestamp := now.Ticks + transitionTime + 3000;

VAR topic := "shellies/" + bulb4topic + "/color/0/set";

MQTTPUBLISH(topic, "{\"mode\": \"white\", \"brightness\": " + ROUND(Hb*100.0) + ", \"transition\": " + transitionTime + ", \"temp\":" + Ct + "}");
```

Villamos mérő 5 Villanyóra Csak olvasható

Az 5. izzó fogyasztásmérése — pillanatnyi teljesítmény (kW) és kumulatív energia (kWh)

numeric Egység: kW / kWh

Figyelő

```taphome
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, "shellycolorbulb-deviceid") = 0)
    ADDERROR("Set correct 'bulb5topic' value in module variables. Topic format is 'shellycolorbulb-<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
```

RGBW lámpa 5 HSB lámpa Olvasás és írás

HSB lámpa kettős móddal — teljes RGB szín gainnel, vagy állítható fehér (3000–6500 K) fényerővel

json JSON (ison, mode, red, green, blue, white, gain, temp, brightness, effect)

Figyelő

```taphome
IF(INDEXOF(bulb5topic, "shellycolorbulb-deviceid") = 0)
    ADDERROR("Set correct 'bulb5topic' value in module variables. Topic format is 'shellycolorbulb-<deviceid>'. The Device ID can be found by opening url 'http://shellyIpAddress', in Settings -> Device info.");
    RETURN(-1);
END

VAR now := NOW();
IF now.Ticks < debounceTimestamp
    RETURN(0);
END

IF INDEXOF(RECEIVEDMSG.TOPIC, "shellies/" + bulb5topic + "/color/0/status") != 0
    RETURN(0);
END

IF RECEIVEDMSG.PAYLOAD.LENGTH = 0
    RETURN(0);
END

BOOL ison := PARSEJSON(RECEIVEDMSG.PAYLOAD, "$.ison", 1);
VAR mode := PARSEJSON(RECEIVEDMSG.PAYLOAD, "$.mode", 1);

IF ISNULL(mode)
    RETURN(0);
END

INT bright;

IF mode = "color"
    UINT8 red := PARSEJSON(RECEIVEDMSG.PAYLOAD, "$.red");
    UINT8 green := PARSEJSON(RECEIVEDMSG.PAYLOAD, "$.green");
    UINT8 blue := PARSEJSON(RECEIVEDMSG.PAYLOAD, "$.blue");
    bright := PARSEJSON(RECEIVEDMSG.PAYLOAD, "$.gain");
    
    VAR hsvColor := RGBTOHSV(red, green, blue);

    Hd := ROUND(hsvColor.Hue);
    Sa := ROUND(hsvColor.Saturation * 100.0) / 100.0;
    Ct := NaN;
ELSE
    Ct := PARSEJSON(RECEIVEDMSG.PAYLOAD, "$.temp");
    bright := PARSEJSON(RECEIVEDMSG.PAYLOAD, "$.brightness");
END

IF ison
    Hb:= bright / 100.0;
    St := isOn;
ELSE
    Hb := 0;
    St := 0;
END
```

Fényerő írása

```taphome
VAR now := NOW();
debounceTimestamp := now.Ticks + transitionTime + 3000;

IF St > 0.5
    VAR topic := "shellies/" + bulb5topic + "/color/0/set";
    
	IF ISNAN(Ct)
        MQTTPUBLISH(topic, "{\"turn\": \"on\", \"transition\": " + transitionTime + ", \"gain\": " + ROUND(Hb*100.0) + "}");
    ELSE
        MQTTPUBLISH(topic, "{\"turn\": \"on\", \"transition\": " + transitionTime + ", \"brightness\": " + ROUND(Hb*100.0) + "}");
        
    END
ELSE
    MQTTPUBLISH("shellies/" + bulb5topic + "/color/0/command", "off");
END
```

Színárnyalat írása

```taphome
IF !ISNAN(Ct)
    RETURN(0);
END

VAR now := NOW();
debounceTimestamp := now.Ticks + transitionTime + 3000;

VAR topic := "shellies/" + bulb5topic + "/color/0/set";
VAR rgbColor := HSVTORGB(Hd, Sa, 1);

VAR data := "{\"mode\": \"color\", \"gain\": " + ROUND(Hb*100.0) + ", \"transition\":" + transitionTime + ",\"red\":" + rgbColor.red + ",\"green\":" + rgbColor.green + ",\"blue\":" + rgbColor.blue + "}";

MQTTPUBLISH(topic, data);
```

Telítettség írása

```taphome
IF !ISNAN(Ct)
    RETURN(0);
END

VAR now := NOW();
debounceTimestamp := now.Ticks + transitionTime + 3000;

VAR topic := "shellies/" + bulb5topic + "/color/0/set";
VAR rgbColor := HSVTORGB(Hd, Sa, 1);

VAR data := "{\"mode\": \"color\", \"gain\": " + ROUND(Hb*100.0) + ", \"transition\":" + transitionTime + ",\"red\":" + rgbColor.red + ",\"green\":" + rgbColor.green + ",\"blue\":" + rgbColor.blue + "}";

MQTTPUBLISH(topic, data);
```

Színhőmérséklet írása

```taphome
IF ISNAN(Ct)
    RETURN(0);
END

VAR now := NOW();
debounceTimestamp := now.Ticks + transitionTime + 3000;

VAR topic := "shellies/" + bulb5topic + "/color/0/set";

MQTTPUBLISH(topic, "{\"mode\": \"white\", \"brightness\": " + ROUND(Hb*100.0) + ", \"transition\": " + transitionTime + ", \"temp\":" + Ct + "}");
```

**Kapcsolat:** Packet Parser → MQTT • Hostname: `shellycolorbulb-{MAC}.local`

Lehetséges fejlesztések (4)

- Connection Status — LWT topic — true on connect, false on disconnect. Could detect offline bulbs.
- Full Status JSON — Complete /status as JSON (fw ≥1.8.0). Could parse wifi\_sta.rssi, uptime, temperature.
- Light Effects — Effect index 0–6: off, meteors, gradual change, breath, flash, on/off gradual, red/green change. Not exposed in template.
- White Channel (RGBW) — Separate white LED channel (0–255) in color mode. Template uses RGB+gain only, white channel not exposed.

## Importálási paraméterek

Ezeket az értékeket az XML importálásakor adja meg.

| Az alkalmazás kéri   | Alapérték     |
|----------------------|---------------|
| Mqtt Broker IP-cím   | `192.168.0.1` |
| Mqtt Broker port     | `1883`        |
| Transition time (ms) | `300`         |

## Források

- Shelly Gen1 API Reference
  
  [shelly-api-docs.shelly.cloud](https://shelly-api-docs.shelly.cloud/gen1/) 2026-03-12
- Home Assistant Shelly Integration
  
  [www.home-assistant.io](https://www.home-assistant.io/integrations/shelly/) 2026-03-12
- Shelly DUO RGBW — MQTT Color Bulb API
  
  [shelly-api-docs.shelly.cloud](https://shelly-api-docs.shelly.cloud/gen1/#shelly-color-bulb) 2026-03-30

## Kapcsolódó dokumentáció

- [MQTT Integration](https://taphome.com/hu/compatibility/mqtt-guide/)
- [Packet Parser (HTTP, TCP, UDP, FTP, MQTT)](https://taphome.com/hu/docs/integration/packet-parser/)
- [Packet parser függvények](https://taphome.com/hu/docs/script/packet-parser/)
- [Elemző függvények](https://taphome.com/hu/docs/script/parsing-functions/)
- [MQTT bróker](https://taphome.com/hu/docs/integration/packet-parser/mqtt-broker/)
- [Listener szkriptek](https://taphome.com/hu/docs/script/listener-scripts/)

