TapHome

Shelly RGBW2

Packet Parser → HTTP
Pridal
Posledná aktualizácia: 03. 2026
Shelly RGBW2

Shelly RGBW2 je Wi-Fi RGBW LED pásový ovládač so štyrmi PWM výstupmi (12/24 V DC). Podporuje dva vzájomne výlučné prevádzkové režimy — Color a White — pričom každý vyžaduje vlastnú TapHome šablónu. TapHome komunikuje so zariadením cez HTTP v lokálnej sieti; cloudové pripojenie nie je potrebné.

V režime Color štyri výstupy ovládajú RGBW LED pás ako jedno farebné svetlo s odtieňom, sýtosťou, jasom a voliteľným bielym (CCT) kanálom. V režime White štyri výstupy fungujú ako nezávislé stmievače, pričom každý ovláda samostatný biely LED pás alebo zónu.

Prevádzkový režim musíte zvoliť vo webovom rozhraní Shelly (alebo cez API) pred importom zodpovedajúcej šablóny. Každá šablóna validuje aktuálny režim pri každom dopytovaní a zobrazí chybu, ak je zariadenie nastavené na nesprávny režim.

Konfigurácia

Obe šablóny sa pripájajú cez Wi-Fi. Počas importu TapHome šablóny zadajte IP adresu zariadenia (predvolený zástupný znak 192.168.0.1) a voliteľný čas prechodu v milisekundách (predvolené 300).

Parameter čas prechodu ovláda, ako rýchlo svetlo prechádza medzi úrovňami jasu. Vzťahuje sa na všetky príkazy zápisu (zapnutie/vypnutie, jas, zmeny farieb) a ovplyvňuje debounce okno — šablóna ignoruje dopytované hodnoty počas transitionTime + 500 ms po každom zápise, aby zabránila zastaralým čítaniam počas prechodov.

Šablóna režimu Color

Farebné svetlo

Šablóna exponuje RGBW pás ako jedno HSB farebné svetlo s dvoma podrežimami:

  • RGB farba — odtieň a sýtosť ovládajú farbu pásu. Šablóna konvertuje medzi RGB hodnotami Shelly API (červená, zelená, modrá 0-255) a HSB modelom TapHome. Jas sa ovláda parametrom gain (0-100).
  • Biela (CCT) — keď sa nastaví korelovaná teplota chromatickosti, šablóna prepne na ovládanie bieleho kanálu. Rozsah CCT je 3000-6500 K. Jas sa ovláda parametrom white (0-100).

Stav svetla sa číta z odpovede /status (lights[0]) a ovláda cez endpoint /light/0. Zapnutie odošle turn=on s aktuálnymi hodnotami farby alebo bielej; vypnutie odošle turn=off. Všetky príkazy zápisu obsahujú parameter čas prechodu.

Meranie spotreby (Color)

Šablóna Color obsahuje jeden elektromer, ktorý číta z meters[0]:

  • Okamžitý výkonmeters[0].power vo wattoch, konvertovaný na kW
  • Celková spotrebameters[0].total vo watt-minútach, konvertovaný na kWh

Ak je svetlo zapnuté, ale výkon ukazuje nulu, šablóna zobrazí varovanie s návrhom nakonfigurovať model zariadenia v nastaveniach aplikácie Shelly.

Šablóna režimu White

Štyri nezávislé stmievače

Šablóna White exponuje štyri nezávislé stmievacie kanály, jeden na každý PWM výstup:

KanálVýstupEndpointInterval dopytovania
Ch1R (Red)/light/02,5 s
Ch2G (Green)/light/12,5 s
Ch3B (Blue)/light/22,5 s
Ch4W (White)/light/32,5 s

Každý stmievač číta lights[N].ison a lights[N].brightness (0-100, normalizované na 0-1) z odpovede /status. Príkazy zápisu používajú /light/N?turn=on|off&brightness=VALUE. Všetky kanály používajú rovnaký čas prechodu a debounce logiku.

Meranie spotreby (White)

Každý kanál má vlastný elektromer, ktorý číta z meters[0]meters[3]. Prvý kanál dopytuje každých 2,5 sekundy; kanály 2-4 dopytujú v 15-sekundových intervaloch. Každý elektromer poskytuje okamžitý výkon (W na kW) a kumulatívnu energiu (watt-minúty na kWh).

Servisná diagnostika

Obe šablóny exponujú 10 servisných atribútov na monitorovanie zariadenia:

  • Sieťové info — IP adresa, MAC adresa (formátovaná s dvojbodkami), sila Wi-Fi signálu (dB)
  • Pripojiteľnosť — cloud povolený/pripojený, MQTT pripojený
  • Info o zariadení — čas zariadenia, doba prevádzky (formátovaná ako dni/hodiny/minúty), využitie RAM
  • Firmware — dostupná aktualizácia firmvéru

Servisné akcie

Obe šablóny zdieľajú tri servisné akcie:

  • Povoliť cloud — zapne alebo vypne pripojenie Shelly Cloud
  • Reštart — spustí reštart zariadenia
  • Nastaviť režim — šablóna Color obsahuje „Set mode Color" (/settings?mode=color) a šablóna White obsahuje „Set mode White" (/settings?mode=white). Tieto akcie prepínajú prevádzkový režim zariadenia cez API.
Ďalšie funkcie

Shelly RGBW2 tiež exponuje svetelné efekty (režim Color, index efektu 0-3), stav fyzického vstupu, internú teplotu, príznak prehriatia a nastavenia ochrany výkonu vo svojom API. Tieto funkcie môžu byť pridané v budúcej aktualizácii šablóny.

Riešenie problémov

Zariadenie neodpovedá
  1. Overte, že Shelly je pripojený k Wi-Fi a má platnú IP adresu
  2. Skúste použiť mDNS hostname (shellyrgbw2-AABBCCDDEE.local) namiesto IP adresy — IP sa mohla zmeniť po obnovení DHCP
  3. Otvorte http://{device-ip}/shelly v prehliadači — ak odpovedá, zariadenie je dostupné
  4. Skontrolujte, že TapHome CCU a Shelly sú v rovnakej sieti / VLAN
Chyba „Mode White/Color is not supported"

Táto chyba znamená, že zariadenie je nastavené na nesprávny prevádzkový režim pre importovanú šablónu. Riešenie:

  1. Otvorte webové rozhranie Shelly na http://{device-ip}
  2. Prepnite prevádzkový režim tak, aby zodpovedal šablóne (Color alebo White)
  3. Prípadne použite servisnú akciu „Set mode Color" alebo „Set mode White" z druhej šablóny na prepnutie režimu cez API, potom reimportujte správnu šablónu
Výkon ukazuje nulu
  1. Potvrďte, že LED sú pripojené k výstupom Shelly RGBW2
  2. Otvorte aplikáciu Shelly alebo webové rozhranie a overte, že model zariadenia je nakonfigurovaný v časti Settings -> Device Model
  3. Skontrolujte, že svetlo je zapnuté — elektromer meria len keď preteká prúd cez výstupy
  4. Dopytajte /status manuálne a overte, že meters[0].power vracia nenulovú hodnotu
Farebné svetlo sa nemení
  1. Overte, že zariadenie je v režime Color (skontrolujte odpoveď /statusmode by malo byť "color")
  2. Uistite sa, že svetlo je zapnuté pred zmenou odtieňa alebo sýtosti
  3. Ak sú gain aj white nenulové, šablóna ich automaticky vynuluje a vypne svetlo — tým sa zabráni nedefinovanému správaniu, keď RGB a biele kanály súťažia

Zariadenia Shelly Gen1 podporujú len 2 súčasné HTTP pripojenia. Ak TapHome a iný systém (napr. Home Assistant) dopytujú rovnaké zariadenie súčasne, komunikácia môže byť nespoľahlivá. Použite interval dopytovania 10-30 sekúnd.

Ako nainštalovať v TapHome

Predpoklady

  • Zariadenie Shelly nainštalované a zapnuté
  • Lokálna Wi-Fi sieť (2,4 GHz)
  • TapHome CCU v rovnakej sieti

Krok 1 — Pripojte Shelly k Wi-Fi

Možnosť A — Aplikácia Shelly (odporúčané):

  1. Stiahnite si aplikáciu Shelly (iOS / Android)
  2. Klepnite na +Add Device a postupujte podľa sprievodcu Bluetooth párovaním
  3. Po výzve zadajte svoje Wi-Fi prihlasovacie údaje

Možnosť B — AP režim (bez aplikácie):

  1. Pri prvom zapnutí zariadenie vytvorí hotspot: ShellyXXX-AABBCCDDEE
  2. Pripojte telefón/PC k tomuto hotspotu
  3. Otvorte http://192.168.33.1Internet & SecurityWi-Fi Mode - Client
  4. Zadajte SSID a heslo → Save

Shelly podporuje iba 2,4 GHz siete. 5 GHz siete sa pri skenovaní nezobrazia.

Krok 2 — Zistite IP adresu

Po pripojení k Wi-Fi zistite priradenú IP adresu jedným z nasledujúcich spôsobov:

  • Aplikácia Shelly: Detail zariadenia → Device info → IP adresa
  • Webové rozhranie Shelly: Pripojte sa k AP zariadenia pred nastavením Wi-Fi — IP sa zobrazí po uložení
  • DHCP tabuľka routera: Hľadajte hostname ako shelly1pm-AABBCCDDEE
  • mDNS: Pingnite shelly<model>-<mac>.local (napr. shelly1pm-AABBCCDDEE.local) z rovnakej siete

Priraďte zariadeniu Shelly statickú IP (DHCP rezerváciu) vo vašom routeri, aby sa adresa nezmenila po reštarte routera.

Krok 3 — Konfigurácia v TapHome

  1. V TapHome pridajte nový modul Packet Parser (HTTP)
  2. IP Address: zadajte IP z kroku 2 (napr. 192.168.1.50)
  3. Port: 80 (predvolený, nie je potrebné meniť)
  4. Importujte šablónu — TapHome bude pravidelne čítať /status pre zistenie stavu zariadenia

HTTP autentifikácia je na zariadeniach Shelly štandardne vypnutá. Ak ste povolili ochranu prihlásením, TapHome momentálne nepodporuje HTTP Basic Auth — pre integráciu s TapHome ponechajte autentifikáciu vypnutú.

Dostupné zariadenia

Shelly RGBW2 Color Modul
Servisné atribúty
IP adresa
MAC adresa
WiFi signál
Cloud povolený
Cloud pripojený
MQTT pripojený
Čas zariadenia
Dostupná aktualizácia FW
Doba prevádzky
RAM
Servisné akcie
Povoliť cloud
Reštart
Nastaviť režim Color
Vlastné premenné
transitionTime (numeric) = TransitionTimeLight transition duration in milliseconds (import parameter, default 300ms)

Shelly RGBW2 Color

Čítanie (modul)
VAR now := NOW();

IF now.Ticks < debounceTimestamp
    RETURN(0);
END

VAR response := SENDHTTPREQUEST("/status");

IF response.IsSuccess
    jsonStatus := response.Content;
    
    if PARSEJSON(jsonStatus, "$.mode", 1) = "white"
    adderror("Mode White is not supported");
    end
ELSE
    jsonStatus := NULL;
END
Servisné atribúty
IP Address
VAR response := SENDHTTPREQUEST("/status");

IF response.IsSuccess
    jsonStatus := response.Content;
ELSE
    jsonStatus := NULL;
END

VAR address := PARSEJSON(jsonStatus, "$.wifi_sta.ip", 1);
IF (ISNULL(address), "-", address)
MAC Address
VAR value := PARSEJSON(jsonStatus, "$.mac", 1);
IF ISNULL(value)
    RETURN("-");
END;

STRING mac;
INT i := 0;
INT len := LENGTH(value);

WHILE i < len
    mac += GETAT(value, i);
    i += 1;
    
    IF MOD(i, 2) = 0 AND i < len
        mac += ":";
    END
LOOP

mac
WIFI signal
VAR signal := PARSEJSON(jsonStatus, "$.wifi_sta.rssi", 1);
IF (ISNULL(signal), "-", signal + "db");
Cloud enabled
VAR value := PARSEJSON(jsonStatus, "$.cloud.enabled", 1);
IF (ISNULL(value), "-", value)
Cloud connected
VAR value := PARSEJSON(jsonStatus, "$.cloud.connected", 1);
IF (ISNULL(value), "-", value)
MQTT connected
VAR value := PARSEJSON(jsonStatus, "$.mqtt.connected", 1);
IF (ISNULL(value), "-", value)
Device time
VAR value := PARSEJSON(jsonStatus, "$.time", 1);
IF (ISNULL(value), "-", value)
FW update available
VAR value := PARSEJSON(jsonStatus, "$.has_update");
IF (ISNULL(value), "-", value)
Uptime
VAR value := PARSEJSON(jsonStatus, "$.uptime", 1);
IF ISNULL(value)
    RETURN("-");
END

VAR days := FLOOR(value/86400, 1);
value := MOD(value, 86400);
VAR hours := FLOOR(value/3600, 1);
value := MOD(value, 3600);
VAR minutes := FLOOR(value/60, 1);

days + "day(s) " + hours + "h " + minutes + "m"
RAM
VAR ramFree := PARSEJSON(jsonStatus, "$.ram_free", 1);
VAR ramTotal := PARSEJSON(jsonStatus, "$.ram_total", 1);

IF ISNULL(ramFree) OR ISNULL(ramTotal)
    RETURN("-");
END

ramFree + " bytes free of " + ramTotal
Servisné akcie
Enable cloud
Parametre: Enable (Enable / Disable)
VAR response := SENDHTTPREQUEST("/settings/cloud?enabled=" + enable);
VAR contentJson := response.Content;
VAR wasEnabled := PARSEJSON(contentJson, "enabled");

IF(wasEnabled, "Cloud enabled", "Cloud disabled");
Reboot
VAR response := SENDHTTPREQUEST("/reboot");
VAR contentJson := response.Content;
VAR wasRebooted := PARSEJSON(contentJson, "ok");

IF(wasRebooted, "Reboot successful", "Error");
Set mode Color
VAR response := SENDHTTPREQUEST("/settings?mode=color");
IF(response.isSuccess, "Color mode is set", "Error");
Elektromer Elektromer Len na čítanie

Meranie spotreby energie — okamžitý výkon (kW) a celková spotreba (kWh)

numeric Jednotka: W / kWh

Elektromer

Čítanie celkovej spotreby
IF LENGTH(jsonStatus) = 0
    RETURN(NaN);
END

VAR power := PARSEJSON(jsonStatus, "$.meters[0].power");
VAR total := PARSEJSON(jsonStatus, "$.meters[0].total");
BOOL isOn := PARSEJSON(jsonStatus, "$.lights[0].ison");

IF ISNULL(power) OR ISNULL(total) OR (ison AND power=0)
	ADDWARNING("To enable power monitoring, open device settings in Shelly app or web browser and configure device model in Settings->Device Model");
	
    RETURN(NaN);
END

total / 60000.0
Čítanie odberu
IF LENGTH(jsonStatus) = 0
    RETURN(NaN);
END

VAR power := PARSEJSON(jsonStatus, "$.meters[0].power", 1);

IF ISNULL(power)
    RETURN(NaN);
END

power / 1000.0
Farebné svetlo HSB svetlo

RGBW farebné svetlo s HSB ovládaním — odtieň, sýtosť, jas a voliteľný CCT biely kanál (3000–6500 K)

hsb

Farebné svetlo

Čítanie (modul)
if PARSEJSON(jsonStatus, "$.lights[0].white", 1) > 0 and PARSEJSON(jsonStatus, "$.lights[0].gain", 1)
    SENDHTTPREQUEST("light/0?gain=0&white=0");
    SENDHTTPREQUEST("light/0?turn=off");
end
Čítanie jasu
VAR now := NOW();

IF now.Ticks < debounceTimestamp
    RETURN(Hb);
END

INT value;
IF !ISNAN(Ct)
    value := PARSEJSON(jsonStatus, "$.lights[0].white", 1);
ELSE
    value := PARSEJSON(jsonStatus, "$.lights[0].gain", 1);
END

IF ISNULL(value)
    RETURN(NaN);
END

BOOL isOn := PARSEJSON(jsonStatus, "$.lights[0].ison", 1);

IF ISNULL(isOn)
    RETURN(NaN);
END

IF(isOn, value/100.0, 0);
Zápis jasu
IF St > 0.5
    IF !ISNAN(Ct)
    SENDHTTPREQUEST("light/0?turn=on&transition=" + transitionTime + "&gain=0&white=" + ROUND(Hb*100.0));
    ELSE
    SENDHTTPREQUEST("light/0?turn=on&transition=" + transitionTime + "&white=0&gain=" + ROUND(Hb*100.0));
    END
ELSE
    SENDHTTPREQUEST("light/0?turn=off&transition=" + transitionTime);
END

VAR now := NOW();
debounceTimestamp := now.Ticks + transitionTime + 500;
Čítanie odtieňa
VAR now := NOW();

IF now.Ticks < debounceTimestamp
    RETURN(Hd);
END

INT r := PARSEJSON(jsonStatus, "$.lights[0].red", 1);
INT g := PARSEJSON(jsonStatus, "$.lights[0].green", 1);
INT b := PARSEJSON(jsonStatus, "$.lights[0].blue", 1);

VAR HSVColor := RGBTOHSV(r, g, b);
ROUND(HSVColor.Hue);
Zápis odtieňa
IF !ISNAN(Ct)
    RETURN(0);
END

VAR color := HSVTORGB(Hd, Sa, 1);

SENDHTTPREQUEST("light/0?mode=color&transition=" + transitionTime + "&gain=" + ROUND(Hb*100) + "&red=" + color.RED + "&green=" + color.GREEN + "&blue=" + color.BLUE + "&white=0");


VAR now := NOW();
debounceTimestamp := now.Ticks + transitionTime + 500;
Čítanie saturácie
VAR now := NOW();

IF now.Ticks < debounceTimestamp
    RETURN(Sa);
END

INT r := PARSEJSON(jsonStatus, "$.lights[0].red", 1);
INT g := PARSEJSON(jsonStatus, "$.lights[0].green", 1);
INT b := PARSEJSON(jsonStatus, "$.lights[0].blue", 1);
 
VAR HSVColor := RGBTOHSV(r, g, b);
ROUND(HSVColor.Saturation * 100.0) / 100.0;
Zápis saturácie
IF !ISNAN(Ct)
    RETURN(0);
END

VAR color := HSVTORGB(Hd, Sa, 1);

SENDHTTPREQUEST("light/0?mode=color&transition=" + transitionTime + "&gain=" + ROUND(Hb*100) + "&red=" + color.RED + "&green=" + color.GREEN + "&blue=" + color.BLUE + "&white=0");


VAR now := NOW();
debounceTimestamp := now.Ticks + transitionTime + 500;
Čítanie farebnej teploty
VAR now := NOW();

IF now.Ticks < debounceTimestamp
    RETURN(Ct);
END

INT value := PARSEJSON(jsonStatus, "$.lights[0].temp", 1);
IF PARSEJSON(jsonStatus, "$.lights[0].white", 1) = 0
    RETURN(NaN);
END
 
Ct
Zápis farebnej teploty
IF Ct = NaN
    RETURN(0);
END

VAR temp := MIN(Ct, 6500);
temp := MAX(temp, 3000);

SENDHTTPREQUEST("light/0?transition=" + transitionTime + "&white=" + ROUND(Hb*100) + "&gain=0");

VAR now := NOW();
debounceTimestamp := now.Ticks + transitionTime + 500;
Pripojenie: Packet Parser → HTTP
Možné vylepšenia (7)
  • Light effect — Color mode: effect index (0=off, 1–3=predefined effects), settable via /light/0?effect=N
  • Input State — Physical input state (0/1), available in /status response
  • WiFi RSSI (numeric) — WiFi RSSI in dBm as numeric value — template reads it as string with 'db' suffix
  • Power protection — Max power setting in Watts, available in /settings; read + write possible via /settings?max_power=N
  • OTA firmware update — Trigger OTA firmware update via /ota?update=true
  • Internal device temperature — Internal temperature in C, available in /status response (Gen1 devices)
  • Overheated — Overtemperature flag, boolean, available in /status response

Zdroje