TapHome

Shelly RGBW2

Packet Parser → HTTP
Přidal
Poslední aktualizace: 03. 2026
Shelly RGBW2

Shelly RGBW2 je Wi-Fi RGBW LED pásový ovladač se čtyřmi PWM výstupy (12/24 V DC). Podporuje dva vzájemně výlučné provozní režimy — Color a White — přičemž každý vyžaduje vlastní TapHome šablonu. TapHome komunikuje se zařízením přes HTTP v lokální síti; cloudové připojení není potřeba.

V režimu Color čtyři výstupy ovládají RGBW LED pás jako jedno barevné světlo s odstínem, sytostí, jasem a volitelným bílým (CCT) kanálem. V režimu White čtyři výstupy fungují jako nezávislé stmívače, přičemž každý ovládá samostatný bílý LED pás nebo zónu.

Provozní režim musíte zvolit ve webovém rozhraní Shelly (nebo přes API) před importem odpovídající šablony. Každá šablona validuje aktuální režim při každém dotazování a zobrazí chybu, pokud je zařízení nastaveno na nesprávný režim.

Konfigurace

Obě šablony se připojují přes Wi-Fi. Během importu TapHome šablony zadejte IP adresu zařízení (výchozí placeholder 192.168.0.1) a volitelný čas přechodu v milisekundách (výchozí 300).

Parametr čas přechodu ovládá, jak rychle světlo přechází mezi úrovněmi jasu. Vztahuje se na všechny příkazy zápisu (zapnutí/vypnutí, jas, změny barev) a ovlivňuje debounce okno — šablona ignoruje dotazované hodnoty po dobu transitionTime + 500 ms po každém zápisu, aby zabránila zastaralým čtením během přechodů.

Šablona režimu Color

Barevné světlo

Šablona vystavuje RGBW pás jako jedno HSB barevné světlo se dvěma podrežimy:

  • RGB barva — odstín a sytost ovládají barvu pásu. Šablona konvertuje mezi RGB hodnotami Shelly API (červená, zelená, modrá 0-255) a HSB modelem TapHome. Jas se ovládá parametrem gain (0-100).
  • Bílá (CCT) — když se nastaví korelovaná teplota chromatičnosti, šablona přepne na ovládání bílého kanálu. Rozsah CCT je 3000-6500 K. Jas se ovládá parametrem white (0-100).

Stav světla se čte z odpovědi /status (lights[0]) a ovládá přes endpoint /light/0. Zapnutí odešle turn=on s aktuálními hodnotami barvy nebo bílé; vypnutí odešle turn=off. Všechny příkazy zápisu obsahují parametr čas přechodu.

Měření spotřeby (Color)

Šablona Color obsahuje jeden elektroměr, který čte z meters[0]:

  • Okamžitý výkonmeters[0].power ve wattech, konvertovaný na kW
  • Celková spotřebameters[0].total ve watt-minutách, konvertovaný na kWh

Pokud je světlo zapnuté, ale výkon ukazuje nulu, šablona zobrazí varování s návrhem nakonfigurovat model zařízení v nastavení aplikace Shelly.

Šablona režimu White

Čtyři nezávislé stmívače

Šablona White vystavuje čtyři nezávislé stmívací kanály, jeden na každý PWM výstup:

KanálVýstupEndpointInterval dotazování
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ý stmívač čte lights[N].ison a lights[N].brightness (0-100, normalizované na 0-1) z odpovědi /status. Příkazy zápisu používají /light/N?turn=on|off&brightness=VALUE. Všechny kanály používají stejný čas přechodu a debounce logiku.

Měření spotřeby (White)

Každý kanál má vlastní elektroměr, který čte z meters[0]meters[3]. První kanál dotazuje každé 2,5 sekundy; kanály 2-4 dotazují v 15sekundových intervalech. Každý elektroměr poskytuje okamžitý výkon (W na kW) a kumulativní energii (watt-minuty na kWh).

Servisní diagnostika

Obě šablony vystavují 10 servisních atributů pro monitorování zařízení:

  • Síťové info — IP adresa, MAC adresa (formátovaná s dvojtečkami), síla Wi-Fi signálu (dB)
  • Připojitelnost — cloud povolen/připojen, MQTT připojen
  • Info o zařízení — čas zařízení, doba provozu (formátovaná jako dny/hodiny/minuty), využití RAM
  • Firmware — dostupná aktualizace firmwaru

Servisní akce

Obě šablony sdílejí tři servisní akce:

  • Povolit cloud — zapne nebo vypne připojení Shelly Cloud
  • Restart — spustí restart zařízení
  • Nastavit režim — šablona Color obsahuje „Set mode Color" (/settings?mode=color) a šablona White obsahuje „Set mode White" (/settings?mode=white). Tyto akce přepínají provozní režim zařízení přes API.
Další funkce

Shelly RGBW2 také vystavuje světelné efekty (režim Color, index efektu 0-3), stav fyzického vstupu, interní teplotu, příznak přehřátí a nastavení ochrany výkonu ve svém API. Tyto funkce mohou být přidány v budoucí aktualizaci šablony.

Řešení problémů

Zařízení neodpovídá
  1. Ověřte, že Shelly je připojen k Wi-Fi a má platnou IP adresu
  2. Zkuste použít mDNS hostname (shellyrgbw2-AABBCCDDEE.local) místo IP adresy — IP se mohla změnit po obnovení DHCP
  3. Otevřete http://{device-ip}/shelly v prohlížeči — pokud odpovídá, zařízení je dostupné
  4. Zkontrolujte, že TapHome CCU a Shelly jsou ve stejné síti / VLAN
Chyba „Mode White/Color is not supported"

Tato chyba znamená, že zařízení je nastaveno na nesprávný provozní režim pro importovanou šablonu. Řešení:

  1. Otevřete webové rozhraní Shelly na http://{device-ip}
  2. Přepněte provozní režim tak, aby odpovídal šabloně (Color nebo White)
  3. Případně použijte servisní akci „Set mode Color" nebo „Set mode White" z druhé šablony pro přepnutí režimu přes API, poté reimportujte správnou šablonu
Výkon ukazuje nulu
  1. Potvrďte, že LED jsou připojeny k výstupům Shelly RGBW2
  2. Otevřete aplikaci Shelly nebo webové rozhraní a ověřte, že model zařízení je nakonfigurován v části Settings -> Device Model
  3. Zkontrolujte, že světlo je zapnuté — elektroměr měří pouze když protéká proud výstupy
  4. Dotažte /status manuálně a ověřte, že meters[0].power vrací nenulovou hodnotu
Barevné světlo se nemění
  1. Ověřte, že zařízení je v režimu Color (zkontrolujte odpověď /statusmode by mělo být "color")
  2. Ujistěte se, že světlo je zapnuté před změnou odstínu nebo sytosti
  3. Pokud jsou gain i white nenulové, šablona je automaticky vynuluje a vypne světlo — tím se zabrání nedefinovanému chování, kdy RGB a bílé kanály soutěží

Zařízení Shelly Gen1 podporují pouze 2 souběžná HTTP připojení. Pokud TapHome a jiný systém (např. Home Assistant) dotazují stejné zařízení současně, komunikace může být nespolehlivá. Použijte interval dotazování 10-30 sekund.

Jak nainstalovat v TapHome

Předpoklady

  • Zařízení Shelly nainstalované a zapnuté
  • Lokální Wi-Fi síť (2,4 GHz)
  • TapHome CCU ve stejné síti

Krok 1 — Připojte Shelly k Wi-Fi

Možnost A — Aplikace Shelly (doporučeno):

  1. Stáhněte si aplikaci Shelly (iOS / Android)
  2. Klepněte na +Add Device a postupujte podle průvodce Bluetooth párováním
  3. Po výzvě zadejte své Wi-Fi přihlašovací údaje

Možnost B — AP režim (bez aplikace):

  1. Při prvním zapnutí zařízení vytvoří hotspot: ShellyXXX-AABBCCDDEE
  2. Připojte telefon/PC k tomuto hotspotu
  3. Otevřete http://192.168.33.1Internet & SecurityWi-Fi Mode - Client
  4. Zadejte SSID a heslo → Save

Shelly podporuje pouze 2,4 GHz sítě. 5 GHz sítě se při skenování nezobrazí.

Krok 2 — Zjistěte IP adresu

Po připojení k Wi-Fi zjistěte přiřazenou IP adresu jedním z následujících způsobů:

  • Aplikace Shelly: Detail zařízení → Device info → IP adresa
  • Webové rozhraní Shelly: Připojte se k AP zařízení před nastavením Wi-Fi — IP se zobrazí po uložení
  • DHCP tabulka routeru: Hledejte hostname jako shelly1pm-AABBCCDDEE
  • mDNS: Pingněte shelly<model>-<mac>.local (např. shelly1pm-AABBCCDDEE.local) ze stejné sítě

Přiřaďte zařízení Shelly statickou IP (DHCP rezervaci) ve vašem routeru, aby se adresa nezměnila po restartu routeru.

Krok 3 — Konfigurace v TapHome

  1. V TapHome přidejte nový modul Packet Parser (HTTP)
  2. IP Address: zadejte IP z kroku 2 (např. 192.168.1.50)
  3. Port: 80 (výchozí, není potřeba měnit)
  4. Importujte šablonu — TapHome bude pravidelně číst /status pro zjištění stavu zařízení

HTTP autentifikace je na zařízeních Shelly standardně vypnutá. Pokud jste povolili ochranu přihlášením, TapHome momentálně nepodporuje HTTP Basic Auth — pro integraci s TapHome ponechte autentifikaci vypnutou.

Dostupná zařízení

Shelly RGBW2 Color Modul
Servisní atributy
IP adresa
MAC adresa
WiFi signál
Cloud povolen
Cloud připojen
MQTT připojen
Čas zařízení
Dostupná aktualizace FW
Doba provozu
RAM
Servisní akce
Povolit cloud
Restart
Nastavit režim Color
Vlastní proměnné
transitionTime (numeric) = TransitionTimeLight transition duration in milliseconds (import parameter, default 300ms)

Shelly RGBW2 Color

Čtení (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í atributy
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í akce
Enable cloud
Parametry: 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");
Elektroměr Elektroměr Pouze ke čtení

Měření spotřeby energie — okamžitý výkon (kW) a celková spotřeba (kWh)

numeric Jednotka: W / kWh

Elektroměr

Čtení celkové spotřeby
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
Čtení odběru
IF LENGTH(jsonStatus) = 0
    RETURN(NaN);
END

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

IF ISNULL(power)
    RETURN(NaN);
END

power / 1000.0
Barevné světlo HSB světlo

RGBW barevné světlo s HSB ovládáním — odstín, sytost, jas a volitelný CCT bílý kanál (3000–6500 K)

hsb

Barevné světlo

Čtení (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
Čtení 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;
Čtení odstínu
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 odstínu
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;
Čtení saturace
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 saturace
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;
Čtení barevné 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 barevné 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;
Připojení: Packet Parser → HTTP
Možná vylepšení (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