---
title: "Shelly Plus RGBW PM"
description: "Shelly Plus RGBW PM, sterownik LED RGBW Wi-Fi Gen2+ z pomiarem mocy. Trzy profile (light, rgb, rgbw), energia, napięcie, prąd i temperatura na kanał."
url: "https://taphome.com/pl/compatibility/shelly-plus-rgbw-pm/"
language: pl
lastmod: 2026-10-08
generator: hugo
ai:
  topics: ["http","lighting","wifi","rgbw","rgb","dimmer","power-metering","gen2plus","profiles"]
  questions: ["Jak zintegrować Shelly Plus RGBW PM z TapHome?","Jakie profile obsługuje Shelly Plus RGBW PM w TapHome?","Jak przełączać między profilami light, rgb i rgbw na Shelly Plus RGBW PM?","Jak sterować kolorami RGB na Shelly Plus RGBW PM przez TapHome?","Jaka jest różnica między profilami rgb i rgbw na Shelly Plus RGBW PM?","Jak używać trybu 4-kanałowego ściemniacza na Shelly Plus RGBW PM?","Dlaczego Shelly Plus RGBW PM pokazuje błąd profilu w TapHome?","Jakie dane pomiarowe mocy są dostępne dla Shelly Plus RGBW PM w TapHome?"]
---

# Shelly Plus RGBW PM

Komunikacja: Packet Parser → HTTP

- [Strona produktu Shelly Plus RGBW PM](https://www.shelly.com/en/products/shop/shelly-plus-rgbw-pm)
- [Dokumentacja API Shelly Plus RGBW PM](https://shelly-api-docs.shelly.cloud/gen2/Devices/Gen2/ShellyPlusRGBWPM/)

> Adres w sieci
> 
> TapHome łączy się z urządzeniem pod adresem podanym przy imporcie. Nadaj urządzeniu stały adres — rezerwację IP w routerze albo jego nazwę mDNS, jeśli ją obsługuje — inaczej integracja przestanie działać, gdy router zmieni adres.
> 
> [Przygotowanie sieci](https://taphome.com/pl/docs/setup/network-preparation/)

## Poradnik integracji

Shelly Plus RGBW PM to sterownik LED RGBW Wi-Fi Gen2+ z wbudowanym pomiarem mocy na każdym kanale wyjściowym. Napędza taśmy LED lub pojedyncze kanały LED przy 12/24 VDC z maksymalnie 4 A na kanał (łącznie 10 A). Urządzenie obsługuje trzy przełączalne profile — **light** (4 niezależne ściemniacze), **rgb** (3-kanałowy kolor) i **rgbw** (3-kanałowy kolor + biały) — każdy udostępnia różne urządzenia w TapHome. TapHome komunikuje się z urządzeniem lokalnie przez Wi-Fi za pomocą Gen2+ RPC API — połączenie z chmurą nie jest wymagane.

Szablon TapHome to **szablon HTTP**, który odpytuje endpointy RPC urządzenia. Jeden szablon obsługuje wszystkie trzy profile; TapHome wykrywa aktywny profil w czasie działania i aktywuje odpowiednie urządzenia.

## Konfiguracja

### Parametry importu

Szablon wymaga jedynie adresu IP urządzenia (domyślny placeholder `192.168.0.1`). TapHome łączy się na porcie 80 i odpytuje wiele endpointów RPC dla stanu systemu i danych urządzenia.

Na poziomie modułu TapHome odpytuje `/rpc/Sys.GetStatus`, `/rpc/Sys.GetConfig`, `/rpc/WiFi.GetStatus` i `/rpc/PlusRGBWPM.GetConfig` w 3-sekundowym interwale. Odpowiedź `Sys.GetConfig` podaje aktualny profil (`device.profile`), który określa, które endpointy na poziomie urządzenia są aktywne.

### Wybór profilu

Shelly Plus RGBW PM pracuje w jednym z trzech profili naraz. Profil można zmienić bezpośrednio z TapHome za pomocą akcji serwisowej **Set Profile** na module lub z interfejsu web Shelly.

| Profil | Urządzenia w TapHome | Zastosowanie |
|--------|---------------------|--------------|
| **light** | 4 niezależne ściemniacze (O1–O4) | Jednokolorowe taśmy LED, 4 oddzielne strefy oświetlenia |
| **rgb** | 1 światło RGB | Taśmy LED RGB (3-kanałowe mieszanie kolorów) |
| **rgbw** | 1 światło RGBW | Taśmy LED RGBW (RGB + dedykowany kanał biały) |

Po przełączeniu profilu urządzenie restartuje się, a TapHome automatycznie wykrywa nowy profil. Urządzenia należące do nieaktywnego profilu będą zgłaszać błąd ("Profile is not set to ...") — to jest oczekiwane i można to zignorować.

## Funkcje urządzenia

### Światło RGB (profil = rgb)

Gdy urządzenie jest ustawione na profil **rgb**, TapHome udostępnia jedno urządzenie światła HSB. Szablon odczytuje `/rpc/RGB.GetStatus?id=0` dla stanu wł./wył., jasności (0–100%) i wartości kolorów RGB, a zapisuje przez `/rpc/RGB.Set?id=0` do sterowania światłem.

Sterowanie kolorem używa HSB (Hue-Saturation-Brightness):
- **Hue** (0–360 stopni) i **Saturation** (0,0–1,0) są konwertowane wewnętrznie między HSB i RGB
- **Brightness** (0,0–1,0) jest mapowany na zakres Shelly 0–100%
- Ustawienie jasności na 0 wyłącza światło; każda niezerowa jasność je włącza

Światło RGB udostępnia pięć atrybutów serwisowych:

| Atrybut | Jednostka | Opis |
|---------|-----------|------|
| Temperatura | C | Wewnętrzna temperatura urządzenia |
| Zużycie energii | Wh | Skumulowana energia dla wyjścia RGB |
| Moc | W | Chwilowy pobór mocy |
| Napięcie | V | Napięcie skuteczne |
| Prąd | A | Pobór prądu |

### Światło RGBW (profil = rgbw)

Gdy ustawiony jest profil **rgbw**, TapHome udostępnia jedno światło HSB z dodatkowym kanałem białym. Szablon odczytuje `/rpc/RGBW.GetStatus?id=0` i zapisuje przez `/rpc/RGBW.Set?id=0`.

Profil RGBW dodaje **kanał biały** (0–255) sterowany przez CCT (skorelowana temperatura barwowa) przy stałych 4500 K:
- Gdy kanał biały jest aktywny (`white != 0`), jasność jest wyprowadzana z poziomu bieli (liniowo 0–255 mapowane na 0,0–1,0)
- Gdy kanał biały jest nieaktywny, jasność pochodzi ze standardowego pola brightness (0–100%)
- Przełączenie na tryb temperatury barwowej w TapHome aktywuje kanał biały; przełączenie na tryb RGB go dezaktywuje

Światło RGBW udostępnia te same pięć atrybutów serwisowych co światło RGB (temperatura, energia, moc, napięcie, prąd), odczytywanych z odpowiedzi RGBW.GetStatus.

### Ściemnialne wyjścia LED (profil = light)

Gdy ustawiony jest profil **light**, TapHome udostępnia **4 niezależne kanały ściemniaczy** (O1–O4), z których każdy steruje jednym wyjściem LED. Każdy kanał odczytuje z `/rpc/Light.GetStatus?id={0-3}` i zapisuje przez `/rpc/Light.Set?id={0-3}`.

Jasność jest mapowana z zakresu TapHome 0,0–1,0 na zakres Shelly 0–100%. Ustawienie poziomu na 0 wyłącza wyjście; każdy niezerowy poziom włącza je i ustawia jasność.

Każdy kanał ściemniacza udostępnia sześć atrybutów serwisowych:

| Atrybut | Jednostka | Opis |
|---------|-----------|------|
| Temperatura | C | Wewnętrzna temperatura urządzenia |
| Zużycie energii | Wh | Skumulowana energia dla tego kanału |
| Moc | W | Chwilowy pobór mocy |
| Napięcie | V | Napięcie skuteczne |
| Prąd | A | Pobór prądu |
| Flagi | — | Wewnętrzne flagi statusu |

Każdy kanał ściemniacza udostępnia również akcję serwisową **Kalibracja**, która wysyła `/rpc/Light.Calibrate?id={N}` w celu kalibracji wyjścia dla podłączonego obciążenia LED.

### Diagnostyka i akcje modułu

Moduł udostępnia pięć atrybutów serwisowych do diagnostyki urządzenia:

| Atrybut | Opis |
|---------|------|
| WiFi | Nazwa połączonej sieci bezprzewodowej |
| Adres IP | Adres IP urządzenia |
| Siła sygnału (dB) | WiFi RSSI |
| MAC | Adres sprzętowy urządzenia |
| Profil | Aktualnie aktywny profil (light, rgb lub rgbw) |

Na poziomie modułu dostępne są trzy akcje serwisowe:

| Akcja | Opis |
|-------|------|
| Aktualizacja firmware | Uruchamia aktualizację OTA do stabilnego kanału firmware |
| Restart | Restartuje urządzenie |
| Ustaw profil | Przełącza między profilami light, rgb i rgbw (urządzenie restartuje się) |

Skrypt modułu sprawdza również dostępne aktualizacje firmware i oczekujące wymagania restartu, wyświetlając ostrzeżenia w TapHome, gdy zostanie wykryty którykolwiek z tych warunków.

### Dodatkowe funkcje

Shelly Plus RGBW PM przez swoje RPC API udostępnia również stan wejścia fizycznego, konfigurację trybu nocnego z limitami jasności i harmonogramem, czas trwania przejścia dla zmian koloru/jasności oraz minimalną jasność przy włączeniu. Te funkcje mogą zostać dodane w przyszłej aktualizacji szablonu.

## Rozwiązywanie problemów

### Urządzenie nie odpowiada

1. Sprawdź, czy Shelly jest podłączony do Wi-Fi i ma prawidłowy adres IP
2. Spróbuj użyć nazwy hosta mDNS (`shellyplusrgbwpm-AABBCCDDEE.local`) zamiast adresu IP — IP mógł się zmienić po odnowieniu DHCP
3. Otwórz `http://{device-ip}/rpc/Shelly.GetDeviceInfo` w przeglądarce — jeśli odpowiada JSON, urządzenie jest dostępne
4. Sprawdź, czy TapHome CCU i Shelly są w tej samej sieci / VLAN
5. Upewnij się, że HTTP Digest Authentication jest wyłączone w interfejsie web Shelly — TapHome nie obsługuje uwierzytelnionych żądań

### Błąd profilu na urządzeniach

Jeśli urządzenie pokazuje "Profile is not set to rgb/rgbw/light" — to jest oczekiwane. Szablon zawiera urządzenia dla wszystkich trzech profili, ale działać będą tylko urządzenia odpowiadające aktualnie aktywnemu profilowi. Pozostałe urządzenia będą zgłaszać ten błąd i można je zignorować.

Aby przełączyć aktywny profil, użyj akcji serwisowej **Set Profile** na module lub zmień go w interfejsie web Shelly. Urządzenie zrestartuje się, a TapHome wykryje nowy profil w ciągu jednego cyklu odpytywania.

### Kolory wyświetlają się nieprawidłowo w trybie RGB/RGBW

1. Sprawdź, czy okablowanie taśmy LED odpowiada kolejności zacisków wyjściowych (R, G, B, W) — zamienione przewody dają nieprawidłowe kolory
2. Szablon konwertuje wewnętrznie między przestrzeniami kolorów HSB i RGB. Jeśli kolory wyglądają na wyblakłe, sprawdź wartość nasycenia — niskie nasycenie daje odcienie pastelowe
3. W trybie RGBW kanał biały i kanały RGB są sterowane niezależnie. Przy przełączaniu z białego na kolor lub odwrotnie TapHome wysyła odpowiednie polecenie do wyzerowania drugiego trybu

### Wyjścia ściemniacza nie reagują w trybie light

1. Potwierdź, że profil jest ustawiony na **light** — urządzenia ściemniaczy działają tylko w trybie light
2. Sprawdź, czy każdy kanał ma podłączone obciążenie LED — kanały bez obciążenia mogą nie raportować prawidłowego stanu
3. Spróbuj uruchomić akcję **Kalibracja** na kanale — optymalizuje to krzywą ściemniania dla podłączonego obciążenia LED
4. Urządzenia Gen2+ obsługują do 6 jednoczesnych połączeń HTTP — unikaj jednoczesnego odpytywania z wielu systemów

### Pomiar mocy pokazuje zero

1. Potwierdź, że obciążenie LED jest podłączone i kanał jest włączony
2. Odpytaj ręcznie odpowiedni endpoint (`/rpc/Light.GetStatus?id=0`, `/rpc/RGB.GetStatus?id=0` lub `/rpc/RGBW.GetStatus?id=0`) i zweryfikuj, że `apower` zwraca wartość różną od zera
3. Obciążenia LED o bardzo niskiej mocy mogą raportować 0 W ze względu na rozdzielczość pomiaru — to jest normalne dla małych diod sygnalizacyjnych

## Jak zainstalować w TapHome

### Wymagania wstępne

- Urządzenie Shelly zainstalowane i włączone
- Lokalna sieć Wi-Fi (2,4 GHz)
- TapHome CCU w tej samej sieci

### Krok 1 — Podłącz Shelly do Wi-Fi

**Opcja A — Aplikacja Shelly (zalecana):**

1. Pobierz [aplikację Shelly](https://www.shelly.com/en/support/shelly-app) (iOS / Android)
2. Dotknij **+** → **Add Device** i postępuj zgodnie z kreatorem parowania Bluetooth
3. Wprowadź dane logowania Wi-Fi, gdy zostaniesz o to poproszony

**Opcja B — Tryb AP (bez aplikacji):**

1. Przy pierwszym uruchomieniu urządzenie tworzy hotspot: `ShellyXXX-AABBCCDDEE`
2. Połącz telefon/PC z tym hotspotem
3. Otwórz `http://192.168.33.1` → **Internet & Security** → **Wi-Fi Mode - Client**
4. Wprowadź SSID i hasło → **Save**

> [!NOTE]
> Shelly obsługuje tylko sieci **2,4 GHz**. Sieci 5 GHz nie pojawią się podczas skanowania.

### Krok 2 — Znajdź adres IP

Po połączeniu z Wi-Fi znajdź przypisany adres IP za pomocą jednej z poniższych metod:

- **Aplikacja Shelly:** Szczegóły urządzenia → **Device info** → Adres IP
- **Interfejs webowy Shelly:** Połącz się z AP urządzenia przed konfiguracją Wi-Fi — IP zostanie wyświetlone po zapisaniu
- **Tabela DHCP routera:** Szukaj nazwy hosta takiej jak `shelly1pm-AABBCCDDEE`
- **mDNS:** Pinguj `shelly<model>-<mac>.local` (np. `shelly1pm-AABBCCDDEE.local`) z tej samej sieci

> [!TIP]
> Przypisz urządzeniu Shelly **statyczny IP** (rezerwację DHCP) w routerze, aby adres nie zmieniał się po ponownym uruchomieniu routera.

### Krok 3 — Konfiguracja w TapHome

1. W TapHome dodaj nowy moduł **Packet Parser (HTTP)**
2. **IP Address:** wprowadź IP z kroku 2 (np. `192.168.1.50`)
3. **Port:** `80` (domyślny, nie wymaga zmiany)
4. Zaimportuj szablon — TapHome będzie okresowo odpytywać `/status` w celu odczytu stanu urządzenia

> [!NOTE]
> Uwierzytelnianie HTTP jest domyślnie wyłączone na urządzeniach Shelly. Jeśli włączyłeś ochronę logowaniem, TapHome obecnie nie obsługuje HTTP Basic Auth — pozostaw uwierzytelnianie wyłączone dla integracji z TapHome.

## Dostępne urządzenia 6

Te urządzenia pojawią się w TapHome po imporcie.

Shelly Plus RGBW PM Moduł

Atrybuty serwisowe

|              |
|--------------|
| WiFi         |
| Adres IP     |
| Siła sygnału |
| MAC          |
| Profil       |

Akcje serwisowe

|                       |
|-----------------------|
| Aktualizacja firmware |
| Restart               |
| Ustaw profil          |

Zmienne niestandardowe

Odczyt (moduł)

```taphome
VAR response := SENDHTTPREQUEST("/rpc/Sys.GetStatus");
IF response.IsSuccess
    Sys.GetStatus := response.Content;
END

response := SENDHTTPREQUEST("/rpc/Sys.GetConfig");
IF response.IsSuccess
    Sys.GetConfig := response.Content;
END

response := SENDHTTPREQUEST("/rpc/WiFi.GetStatus");
IF response.IsSuccess
    WiFi.GetStatus := response.Content;
END

response := SENDHTTPREQUEST("/rpc/PlusRGBWPM.GetConfig");
IF response.IsSuccess
    PlusRGBWPM.GetConfig := response.Content;
END

if ! ISNULL(parsejson(Sys.GetStatus, "available_updates.stable", true))
    addwarning("New firmware update is available");
end

if parsejson(Sys.GetStatus, "restart_required", true)
    addwarning("Restart required");
end
```

Atrybuty serwisowe

Wifi

```taphome
PARSEJSON(WiFi.GetStatus, "ssid")
```

${ipAddress}

```taphome
PARSEJSON(WiFi.GetStatus, "sta_ip")
```

${xml\_signal\_strength} \[dB]

```taphome
PARSEJSON(WiFi.GetStatus, "rssi")
```

MAC

```taphome
PARSEJSON(Sys.GetStatus, "mac")
```

Profile

```taphome
PARSEJSON(Sys.GetConfig, "$.device.profile");
```

Akcje serwisowe

${xml\_update\_fw}

```taphome
VAR response := SENDHTTPREQUEST("/rpc/Shelly.Update?stage=\"stable\"");
IF response.IsSuccess
    return("OK");
else
    return("Error");
END

```

${restart}

```taphome
VAR response := SENDHTTPREQUEST("/rpc/Shelly.Reboot");
IF response.IsSuccess
    return("OK");
else
    return("Error");
END
```

Set Profile

Parametry: Profile

```taphome
VAR response := SENDHTTPREQUEST("/rpc/Shelly.SetProfile?name=\"" + 
switch(prof,
0, "light",
1, "rgb",
2, "rgbw",
"")
+ "\"");
IF response.IsSuccess
    return("OK");
else
    return("Error");
END
```

Światło RGB Światło HSB Odczyt i zapis

Światło kolorowe HSB (profil rgb) ze sterowaniem jasnością, odcieniem, nasyceniem i pomiarem mocy na kanał

HSB

Atrybuty serwisowe

|                 |
|-----------------|
| Temperatura     |
| Zużycie energii |
| Moc             |
| Napięcie        |
| Prąd            |

Odczyt (moduł)

```taphome
if PARSEJSON(Sys.GetConfig, "$.device.profile") != "rgb"
	adderror("Profile is not set to rgb (" + PARSEJSON(Sys.GetConfig, "$.device.profile") + ")");
end

VAR response := SENDHTTPREQUEST("/rpc/RGB.GetStatus?id=" + ID);
IF response.IsSuccess
    RGB.GetStatus := response.Content;
	R := PARSEJSON(RGB.GetStatus, "$.rgb[0]", true);
	G := PARSEJSON(RGB.GetStatus, "$.rgb[1]", true);
	B := PARSEJSON(RGB.GetStatus, "$.rgb[2]", true);    
END

response := SENDHTTPREQUEST("/rpc/RGB.GetConfig?id=" + ID);
IF response.IsSuccess
    RGB.GetConfig := response.Content;
END

if ! ISNULL(parsejson(RGB.GetStatus, "errors", true))
    adderror("Error: " + parsejson(RGB.GetStatus, "errors"));
end
```

Odczyt jasności

```taphome
bool output := PARSEJSON(RGB.GetStatus, "$.output", true);
var brightness := PARSEJSON(RGB.GetStatus, "$.brightness", true);

if output
    return(brightness / 100);
else
    return(0);
end
```

Zapis jasności

```taphome
SENDHTTPREQUEST("/rpc/RGB.Set?id=" + ID + "&on=" + if(St, "true", "false") + "&brightness=" + round(Hb*100.0));
```

Odczyt odcienia

```taphome
VAR HSVColor := RGBTOHSV(R, G, B);
ROUND(HSVColor.Hue);
```

Zapis odcienia

```taphome
VAR color := HSVTORGB(Hd, Sa, 1);
SENDHTTPREQUEST("/rpc/RGB.Set?id=" + ID + "&rgb=[" + color.RED + "," + color.GREEN + "," + color.BLUE + "]");
```

Odczyt nasycenia

```taphome
VAR HSVColor := RGBTOHSV(R, G, B);
ROUND(HSVColor.Saturation * 100.0) / 100.0;
```

Zapis nasycenia

```taphome
VAR color := HSVTORGB(Hd, Sa, 1);
SENDHTTPREQUEST("/rpc/RGB.Set?id=" + ID + "&rgb=[" + color.RED + "," + color.GREEN + "," + color.BLUE + "]");
```

Atrybuty serwisowe

${device\_variable\_realtemperature} \[°C]

```taphome
parsejson(RGB.GetStatus, "$.temperature.tC", true)
```

${device\_variable\_electricityconsumption} \[Wh]

```taphome
parsejson(RGB.GetStatus, "$.aenergy.total", true)
```

${device\_variable\_electricitydemand} \[W]

```taphome
parsejson(RGB.GetStatus, "$.apower", true)
```

${valueLogType\_ElectricVoltage} \[V]

```taphome
parsejson(RGB.GetStatus, "$.voltage", true)
```

${valueLogType\_ElectricCurrent} \[A]

```taphome
parsejson(RGB.GetStatus, "$.current", true)
```

Światło RGBW Światło HSB Odczyt i zapis

Światło kolorowe+białe HSB (profil rgbw) z RGB, kanałem białym (CCT przy 4500K) i pomiarem mocy na kanał

HSB

Atrybuty serwisowe

|                 |
|-----------------|
| Temperatura     |
| Zużycie energii |
| Moc             |
| Napięcie        |
| Prąd            |

Odczyt (moduł)

```taphome
if PARSEJSON(Sys.GetConfig, "$.device.profile") != "rgbw"
	adderror("Profile is not set to rgbw (" + PARSEJSON(Sys.GetConfig, "$.device.profile") + ")");
end

VAR response := SENDHTTPREQUEST("/rpc/RGBW.GetStatus?id=" + ID);
IF response.IsSuccess
    RGBW.GetStatus := response.Content;
	R := PARSEJSON(RGBW.GetStatus, "$.rgb[0]", true);
	G := PARSEJSON(RGBW.GetStatus, "$.rgb[1]", true);
	B := PARSEJSON(RGBW.GetStatus, "$.rgb[2]", true);    
END

response := SENDHTTPREQUEST("/rpc/RGBW.GetConfig?id=" + ID);
IF response.IsSuccess
    RGBW.GetConfig := response.Content;
END

if ! ISNULL(parsejson(RGBW.GetStatus, "errors", true))
    adderror("Error: " + parsejson(RGBW.GetStatus, "errors"));
end
```

Odczyt jasności

```taphome
bool output := PARSEJSON(RGBW.GetStatus, "$.output", true);
var brightness := PARSEJSON(RGBW.GetStatus, "$.brightness", true);
var white := PARSEJSON(RGBW.GetStatus, "$.white", true);

if output
	if white != 0
		return(linear(white, 0, 0, 255, 1));
	else
    	return(brightness / 100);
    end
else
    return(0);
end
```

Zapis jasności

```taphome
if isnan(Ct)
	SENDHTTPREQUEST("/rpc/RGBW.Set?id=" + ID + "&on=" + if(St, "true", "false") + "&white=0&brightness=" + round(Hb*100.0));
else
	SENDHTTPREQUEST("/rpc/RGBW.Set?id=" + ID + "&on=" + if(St, "true", "false") + "&brightness=0&white=" + round(linear(Hb, 0, 0, 1, 255)));
end
```

Odczyt odcienia

```taphome
VAR HSVColor := RGBTOHSV(R, G, B);
ROUND(HSVColor.Hue);
```

Zapis odcienia

```taphome
VAR color := HSVTORGB(Hd, Sa, 1);
SENDHTTPREQUEST("/rpc/RGBW.Set?id=" + ID + "&rgb=[" + color.RED + "," + color.GREEN + "," + color.BLUE + "]");
```

Odczyt nasycenia

```taphome
VAR HSVColor := RGBTOHSV(R, G, B);
ROUND(HSVColor.Saturation * 100.0) / 100.0;
```

Zapis nasycenia

```taphome
VAR color := HSVTORGB(Hd, Sa, 1);
SENDHTTPREQUEST("/rpc/RGBW.Set?id=" + ID + "&rgb=[" + color.RED + "," + color.GREEN + "," + color.BLUE + "]");
```

Odczyt temperatury barwowej

```taphome
var white := PARSEJSON(RGBW.GetStatus, "$.white", true);
if white != 0 or !isnan(Ct)
	return(4500);
else
	return(NaN);
end
```

Zapis temperatury barwowej

```taphome
IF !isnan(Ct)
	SENDHTTPREQUEST("/rpc/RGBW.Set?id=" + ID + "&on=" + if(St, "true", "false") + "&brightness=0&white=" + round(linear(Hb, 0, 0, 1, 255)));
end
```

Atrybuty serwisowe

${device\_variable\_realtemperature} \[°C]

```taphome
parsejson(RGBW.GetStatus, "$.temperature.tC", true)
```

${device\_variable\_electricityconsumption} \[Wh]

```taphome
parsejson(RGBW.GetStatus, "$.aenergy.total", true)
```

${device\_variable\_electricitydemand} \[W]

```taphome
parsejson(RGBW.GetStatus, "$.apower", true)
```

${valueLogType\_ElectricVoltage} \[V]

```taphome
parsejson(RGBW.GetStatus, "$.voltage", true)
```

${valueLogType\_ElectricCurrent} \[A]

```taphome
parsejson(RGBW.GetStatus, "$.current", true)
```

Ściemnialne wyjście LED 2 Ściemniacz Odczyt i zapis

Niezależny kanał ściemniacza 2 (profil light, id=1) ze sterowaniem jasnością, kalibracją i pomiarem mocy na kanał

numeric

Atrybuty serwisowe

|                 |
|-----------------|
| Temperatura     |
| Zużycie energii |
| Moc             |
| Napięcie        |
| Prąd            |
| Flagi           |

Akcje serwisowe

|            |
|------------|
| Kalibracja |

Odczyt (moduł)

```taphome
if PARSEJSON(Sys.GetConfig, "$.device.profile") != "light"
	adderror("Profile is not set to light (" + PARSEJSON(Sys.GetConfig, "$.device.profile") + ")");
end

VAR response := SENDHTTPREQUEST("/rpc/Light.GetStatus?id=" + ID);
IF response.IsSuccess
    Light.GetStatus := response.Content;
END

response := SENDHTTPREQUEST("/rpc/Light.GetConfig?id=" + ID);
IF response.IsSuccess
    Light.GetConfig := response.Content;
END

if ! ISNULL(parsejson(Light.GetStatus, "errors", true))
    adderror("Error: " + parsejson(Light.GetStatus, "errors"));
end
```

Odczyt poziomu

```taphome
bool output := PARSEJSON(Light.GetStatus, "$.output");
var brightness := PARSEJSON(Light.GetStatus, "$.brightness");

if output
    return(brightness / 100);
else
    return(0);
end
```

Zapis poziomu

```taphome
SENDHTTPREQUEST("/rpc/Light.Set?id=" + ID + "&on=" + if(St, "true", "false") + "&brightness=" + round(Le*100.0));
```

Atrybuty serwisowe

${device\_variable\_realtemperature} \[°C]

```taphome
parsejson(Light.GetStatus, "$.temperature.tC", true)
```

${device\_variable\_electricityconsumption} \[Wh]

```taphome
parsejson(Light.GetStatus, "$.aenergy.total", true)
```

${device\_variable\_electricitydemand} \[W]

```taphome
parsejson(Light.GetStatus, "$.apower", true)
```

${valueLogType\_ElectricVoltage} \[V]

```taphome
parsejson(Light.GetStatus, "$.voltage", true)
```

${valueLogType\_ElectricCurrent} \[A]

```taphome
parsejson(Light.GetStatus, "$.current", true)
```

Flags

```taphome
parsejson(Light.GetStatus, "$.flags", true)
```

Akcje serwisowe

${detail\_deviceSettings\_TemperatureSensor\_categoryCalibration}

```taphome
VAR response := SENDHTTPREQUEST("/rpc/Light.Calibrate?id=" + ID);
IF response.IsSuccess
    return("OK");
else
    return("Error");
END
```

Ściemnialne wyjście LED 1 Ściemniacz Odczyt i zapis

Niezależny kanał ściemniacza 1 (profil light, id=0) ze sterowaniem jasnością, kalibracją i pomiarem mocy na kanał

numeric

Atrybuty serwisowe

|                 |
|-----------------|
| Temperatura     |
| Zużycie energii |
| Moc             |
| Napięcie        |
| Prąd            |
| Flagi           |

Akcje serwisowe

|            |
|------------|
| Kalibracja |

Odczyt (moduł)

```taphome
if PARSEJSON(Sys.GetConfig, "$.device.profile") != "light"
	adderror("Profile is not set to light (" + PARSEJSON(Sys.GetConfig, "$.device.profile") + ")");
end

VAR response := SENDHTTPREQUEST("/rpc/Light.GetStatus?id=" + ID);
IF response.IsSuccess
    Light.GetStatus := response.Content;
END

response := SENDHTTPREQUEST("/rpc/Light.GetConfig?id=" + ID);
IF response.IsSuccess
    Light.GetConfig := response.Content;
END

if ! ISNULL(parsejson(Light.GetStatus, "errors", true))
    adderror("Error: " + parsejson(Light.GetStatus, "errors"));
end
```

Odczyt poziomu

```taphome
bool output := PARSEJSON(Light.GetStatus, "$.output");
var brightness := PARSEJSON(Light.GetStatus, "$.brightness");

if output
    return(brightness / 100);
else
    return(0);
end
```

Zapis poziomu

```taphome
SENDHTTPREQUEST("/rpc/Light.Set?id=" + ID + "&on=" + if(St, "true", "false") + "&brightness=" + round(Le*100.0));
```

Atrybuty serwisowe

${device\_variable\_realtemperature} \[°C]

```taphome
parsejson(Light.GetStatus, "$.temperature.tC", true)
```

${device\_variable\_electricityconsumption} \[Wh]

```taphome
parsejson(Light.GetStatus, "$.aenergy.total", true)
```

${device\_variable\_electricitydemand} \[W]

```taphome
parsejson(Light.GetStatus, "$.apower", true)
```

${valueLogType\_ElectricVoltage} \[V]

```taphome
parsejson(Light.GetStatus, "$.voltage", true)
```

${valueLogType\_ElectricCurrent} \[A]

```taphome
parsejson(Light.GetStatus, "$.current", true)
```

Flags

```taphome
parsejson(Light.GetStatus, "$.flags", true)
```

Akcje serwisowe

${detail\_deviceSettings\_TemperatureSensor\_categoryCalibration}

```taphome
VAR response := SENDHTTPREQUEST("/rpc/Light.Calibrate?id=" + ID);
IF response.IsSuccess
    return("OK");
else
    return("Error");
END
```

Ściemnialne wyjście LED 3 Ściemniacz Odczyt i zapis

Niezależny kanał ściemniacza 3 (profil light, id=2) ze sterowaniem jasnością, kalibracją i pomiarem mocy na kanał

numeric

Atrybuty serwisowe

|                 |
|-----------------|
| Temperatura     |
| Zużycie energii |
| Moc             |
| Napięcie        |
| Prąd            |
| Flagi           |

Akcje serwisowe

|            |
|------------|
| Kalibracja |

Odczyt (moduł)

```taphome
if PARSEJSON(Sys.GetConfig, "$.device.profile") != "light"
	adderror("Profile is not set to light (" + PARSEJSON(Sys.GetConfig, "$.device.profile") + ")");
end

VAR response := SENDHTTPREQUEST("/rpc/Light.GetStatus?id=" + ID);
IF response.IsSuccess
    Light.GetStatus := response.Content;
END

response := SENDHTTPREQUEST("/rpc/Light.GetConfig?id=" + ID);
IF response.IsSuccess
    Light.GetConfig := response.Content;
END

if ! ISNULL(parsejson(Light.GetStatus, "errors", true))
    adderror("Error: " + parsejson(Light.GetStatus, "errors"));
end
```

Odczyt poziomu

```taphome
bool output := PARSEJSON(Light.GetStatus, "$.output");
var brightness := PARSEJSON(Light.GetStatus, "$.brightness");

if output
    return(brightness / 100);
else
    return(0);
end
```

Zapis poziomu

```taphome
SENDHTTPREQUEST("/rpc/Light.Set?id=" + ID + "&on=" + if(St, "true", "false") + "&brightness=" + round(Le*100.0));
```

Atrybuty serwisowe

${device\_variable\_realtemperature} \[°C]

```taphome
parsejson(Light.GetStatus, "$.temperature.tC", true)
```

${device\_variable\_electricityconsumption} \[Wh]

```taphome
parsejson(Light.GetStatus, "$.aenergy.total", true)
```

${device\_variable\_electricitydemand} \[W]

```taphome
parsejson(Light.GetStatus, "$.apower", true)
```

${valueLogType\_ElectricVoltage} \[V]

```taphome
parsejson(Light.GetStatus, "$.voltage", true)
```

${valueLogType\_ElectricCurrent} \[A]

```taphome
parsejson(Light.GetStatus, "$.current", true)
```

Flags

```taphome
parsejson(Light.GetStatus, "$.flags", true)
```

Akcje serwisowe

${detail\_deviceSettings\_TemperatureSensor\_categoryCalibration}

```taphome
VAR response := SENDHTTPREQUEST("/rpc/Light.Calibrate?id=" + ID);
IF response.IsSuccess
    return("OK");
else
    return("Error");
END
```

Ściemnialne wyjście LED 4 Ściemniacz Odczyt i zapis

Niezależny kanał ściemniacza 4 (profil light, id=3) ze sterowaniem jasnością, kalibracją i pomiarem mocy na kanał

numeric

Atrybuty serwisowe

|                 |
|-----------------|
| Temperatura     |
| Zużycie energii |
| Moc             |
| Napięcie        |
| Prąd            |
| Flagi           |

Akcje serwisowe

|            |
|------------|
| Kalibracja |

Odczyt (moduł)

```taphome
if PARSEJSON(Sys.GetConfig, "$.device.profile") != "light"
	adderror("Profile is not set to light (" + PARSEJSON(Sys.GetConfig, "$.device.profile") + ")");
end

VAR response := SENDHTTPREQUEST("/rpc/Light.GetStatus?id=" + ID);
IF response.IsSuccess
    Light.GetStatus := response.Content;
END

response := SENDHTTPREQUEST("/rpc/Light.GetConfig?id=" + ID);
IF response.IsSuccess
    Light.GetConfig := response.Content;
END

if ! ISNULL(parsejson(Light.GetStatus, "errors", true))
    adderror("Error: " + parsejson(Light.GetStatus, "errors"));
end
```

Odczyt poziomu

```taphome
bool output := PARSEJSON(Light.GetStatus, "$.output");
var brightness := PARSEJSON(Light.GetStatus, "$.brightness");

if output
    return(brightness / 100);
else
    return(0);
end
```

Zapis poziomu

```taphome
SENDHTTPREQUEST("/rpc/Light.Set?id=" + ID + "&on=" + if(St, "true", "false") + "&brightness=" + round(Le*100.0));
```

Atrybuty serwisowe

${device\_variable\_realtemperature} \[°C]

```taphome
parsejson(Light.GetStatus, "$.temperature.tC", true)
```

${device\_variable\_electricityconsumption} \[Wh]

```taphome
parsejson(Light.GetStatus, "$.aenergy.total", true)
```

${device\_variable\_electricitydemand} \[W]

```taphome
parsejson(Light.GetStatus, "$.apower", true)
```

${valueLogType\_ElectricVoltage} \[V]

```taphome
parsejson(Light.GetStatus, "$.voltage", true)
```

${valueLogType\_ElectricCurrent} \[A]

```taphome
parsejson(Light.GetStatus, "$.current", true)
```

Flags

```taphome
parsejson(Light.GetStatus, "$.flags", true)
```

Akcje serwisowe

${detail\_deviceSettings\_TemperatureSensor\_categoryCalibration}

```taphome
VAR response := SENDHTTPREQUEST("/rpc/Light.Calibrate?id=" + ID);
IF response.IsSuccess
    return("OK");
else
    return("Error");
END
```

**Połączenie:** Packet Parser → HTTP • Hostname: `shellyplusrgbwpm-{MAC}.local`

Możliwe ulepszenia (13)

- Input State — Physical switch/button input state, available via /rpc/Input.GetStatus?id=0
- WiFi SSID — Already exposed as module-level service attribute, not as standalone device
- WiFi Signal Strength — Already exposed as module-level service attribute, not as standalone device
- IP Address — Already exposed as module-level service attribute, not as standalone device
- MAC Address — Already exposed as module-level service attribute, not as standalone device
- Uptime — Seconds since last reboot, available in Sys.GetStatus response
- RAM Usage — Total and free RAM in bytes, available in Sys.GetStatus response
- Device Time — Current device time in HH:MM format, available in Sys.GetStatus response
- Firmware Update — Already implemented as module-level service action
- Reboot — Already implemented as module-level service action
- Night Mode — Night mode configuration with brightness limits and schedule, available in component GetConfig
- Transition Duration — Color/brightness transition time in ms, available as parameter in RGB.Set and RGBW.Set
- Minimum Brightness on Toggle — Minimum brightness percentage when toggling on, available in Light component config

## Parametry importu

Te wartości podajesz podczas importu pliku XML.

| Pytanie w aplikacji | Domyślnie     |
|---------------------|---------------|
| Adres IP            | `192.168.0.1` |

## Źródła

- Shelly Gen2+/Gen3 RPC API Reference
  
  [shelly-api-docs.shelly.cloud](https://shelly-api-docs.shelly.cloud/gen2/) 2026-03-30
- Shelly Gen2+ Switch Component API
  
  [shelly-api-docs.shelly.cloud](https://shelly-api-docs.shelly.cloud/gen2/ComponentsAndServices/Switch/) 2026-03-30
- Shelly Gen2+ System (Sys) Component API
  
  [shelly-api-docs.shelly.cloud](https://shelly-api-docs.shelly.cloud/gen2/ComponentsAndServices/Sys/) 2026-03-30
- Shelly Gen2+ WiFi Component API
  
  [shelly-api-docs.shelly.cloud](https://shelly-api-docs.shelly.cloud/gen2/ComponentsAndServices/WiFi/) 2026-03-30
- Shelly Gen2+ MQTT Component API
  
  [shelly-api-docs.shelly.cloud](https://shelly-api-docs.shelly.cloud/gen2/ComponentsAndServices/Mqtt/) 2026-03-30
- Home Assistant Shelly Integration
  
  [www.home-assistant.io](https://www.home-assistant.io/integrations/shelly/) 2026-03-30
- Shelly Plus RGBW PM Knowledge Base — specs, wiring, terminals
  
  [kb.shelly.cloud](https://kb.shelly.cloud/knowledge-base/shelly-plus-rgbw-pm) 2026-03-30
- Shelly Plus RGBW PM API Device Page — profiles, components
  
  [shelly-api-docs.shelly.cloud](https://shelly-api-docs.shelly.cloud/gen2/Devices/Gen2/ShellyPlusRGBWPM/) 2026-03-30
- Shelly Gen2+ Light Component API — light profile dimmers
  
  [shelly-api-docs.shelly.cloud](https://shelly-api-docs.shelly.cloud/gen2/ComponentsAndServices/Light/) 2026-03-30
- Shelly Gen2+ RGB Component API — rgb profile color control
  
  [shelly-api-docs.shelly.cloud](https://shelly-api-docs.shelly.cloud/gen2/ComponentsAndServices/RGB/) 2026-03-30
- Shelly Gen2+ RGBW Component API — rgbw profile color+white control
  
  [shelly-api-docs.shelly.cloud](https://shelly-api-docs.shelly.cloud/gen2/ComponentsAndServices/RGBW/) 2026-03-30

## Powiązana dokumentacja

- [Integracja Packet Parser](https://taphome.com/pl/compatibility/packet-parser-guide/)
- [Packet Parser (HTTP, TCP, UDP, FTP, MQTT)](https://taphome.com/pl/docs/integration/packet-parser/)
- [Funkcje Packet parser](https://taphome.com/pl/docs/script/packet-parser/)
- [Funkcje parsowania](https://taphome.com/pl/docs/script/parsing-functions/)

