---
title: "Shelly Plus RGBW PM"
description: "Shelly Plus RGBW PM Gen2+, controller LED RGBW Wi-Fi con misura potenza. Profili light, rgb, rgbw; energia, tensione, corrente e temperatura per canale."
url: "https://taphome.com/it/compatibility/shelly-plus-rgbw-pm/"
language: it
lastmod: 2026-10-08
generator: hugo
ai:
  topics: ["http","lighting","wifi","rgbw","rgb","dimmer","power-metering","gen2plus","profiles"]
  questions: ["Come integrare lo Shelly Plus RGBW PM con TapHome?","Quali profili supporta lo Shelly Plus RGBW PM in TapHome?","Come passare tra i profili light, rgb e rgbw sullo Shelly Plus RGBW PM?","Come controllare i colori RGB sullo Shelly Plus RGBW PM tramite TapHome?","Qual è la differenza tra i profili rgb e rgbw sullo Shelly Plus RGBW PM?","Come utilizzare la modalità dimmer a 4 canali sullo Shelly Plus RGBW PM?","Perché lo Shelly Plus RGBW PM mostra un errore di profilo in TapHome?","Quali dati di misurazione potenza sono disponibili per lo Shelly Plus RGBW PM in TapHome?"]
---

# Shelly Plus RGBW PM

Comunicazione: Packet Parser → HTTP

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

> Indirizzo di rete
> 
> TapHome raggiunge il dispositivo all'indirizzo inserito durante l'importazione. Assegna al dispositivo un indirizzo fisso — una prenotazione IP nel router, oppure il suo nome mDNS se lo supporta —, altrimenti l'integrazione smette di funzionare quando il router cambia l'indirizzo.
> 
> [Preparazione della rete](https://taphome.com/it/docs/setup/network-preparation/)

## Guida all'integrazione

Lo Shelly Plus RGBW PM è un controller LED RGBW Wi-Fi Gen2+ con misurazione della potenza integrata su ogni canale di uscita. Pilota strisce LED o singoli canali LED a 12/24 VDC con un massimo di 4 A per canale (10 A totali). Il dispositivo supporta tre profili commutabili — **light** (4 dimmer indipendenti), **rgb** (colore a 3 canali) e **rgbw** (colore a 3 canali + bianco) — ciascuno espone dispositivi diversi in TapHome. TapHome comunica con il dispositivo localmente via Wi-Fi utilizzando l'API RPC Gen2+ — non è necessaria alcuna connessione cloud.

Il template TapHome è un **template HTTP** che interroga gli endpoint RPC del dispositivo. Un singolo template gestisce tutti e tre i profili; TapHome rileva il profilo attivo a runtime e attiva i dispositivi corrispondenti.

## Configurazione

### Parametri di importazione

Il template richiede solo l'indirizzo IP del dispositivo (placeholder predefinito `192.168.0.1`). TapHome si connette alla porta 80 e interroga più endpoint RPC per lo stato del sistema e i dati del dispositivo.

A livello di modulo, TapHome interroga `/rpc/Sys.GetStatus`, `/rpc/Sys.GetConfig`, `/rpc/WiFi.GetStatus` e `/rpc/PlusRGBWPM.GetConfig` con intervallo di 3 secondi. La risposta `Sys.GetConfig` fornisce il profilo corrente (`device.profile`) che determina quali endpoint a livello di dispositivo sono attivi.

### Selezione del profilo

Lo Shelly Plus RGBW PM opera in uno dei tre profili alla volta. È possibile cambiare il profilo direttamente da TapHome utilizzando l'azione di servizio **Set Profile** sul modulo, o dall'interfaccia web Shelly.

| Profilo | Dispositivi in TapHome | Caso d'uso |
|---------|----------------------|------------|
| **light** | 4 dimmer indipendenti (O1–O4) | Strisce LED monocolore, 4 zone di illuminazione separate |
| **rgb** | 1 luce RGB | Strisce LED RGB (miscelazione colori a 3 canali) |
| **rgbw** | 1 luce RGBW | Strisce LED RGBW (RGB + canale bianco dedicato) |

Dopo il cambio del profilo, il dispositivo si riavvia e TapHome rileva automaticamente il nuovo profilo. I dispositivi appartenenti al profilo inattivo segnaleranno un errore ("Profile is not set to ...") — questo è previsto e può essere ignorato.

## Funzionalità del dispositivo

### Luce RGB (profilo = rgb)

Quando il dispositivo è impostato sul profilo **rgb**, TapHome espone un singolo dispositivo luce HSB. Il template legge `/rpc/RGB.GetStatus?id=0` per lo stato on/off, luminosità (0–100%) e valori colore RGB, e scrive tramite `/rpc/RGB.Set?id=0` per controllare la luce.

Il controllo colore utilizza HSB (Hue-Saturation-Brightness):
- **Hue** (0–360 gradi) e **Saturation** (0,0–1,0) vengono convertiti internamente tra HSB e RGB
- **Brightness** (0,0–1,0) viene mappato sul range 0–100% dello Shelly
- Impostare la luminosità a 0 spegne la luce; qualsiasi luminosità diversa da zero la accende

La luce RGB espone cinque attributi di servizio:

| Attributo | Unità | Descrizione |
|-----------|-------|-------------|
| Temperatura | C | Temperatura interna del dispositivo |
| Consumo energetico | Wh | Energia cumulativa per l'uscita RGB |
| Potenza | W | Assorbimento di potenza istantaneo |
| Tensione | V | Tensione efficace |
| Corrente | A | Assorbimento di corrente |

### Luce RGBW (profilo = rgbw)

Quando è impostato il profilo **rgbw**, TapHome espone una singola luce HSB con un canale bianco aggiuntivo. Il template legge `/rpc/RGBW.GetStatus?id=0` e scrive tramite `/rpc/RGBW.Set?id=0`.

Il profilo RGBW aggiunge un **canale bianco** (0–255) controllato tramite CCT (temperatura di colore correlata) a 4500 K fissi:
- Quando il canale bianco è attivo (`white != 0`), la luminosità viene derivata dal livello di bianco (lineare 0–255 mappato su 0,0–1,0)
- Quando il canale bianco è inattivo, la luminosità proviene dal campo brightness standard (0–100%)
- Passare alla modalità temperatura colore in TapHome attiva il canale bianco; passare alla modalità RGB lo disattiva

La luce RGBW espone gli stessi cinque attributi di servizio della luce RGB (temperatura, energia, potenza, tensione, corrente), letti dalla risposta RGBW.GetStatus.

### Uscite LED dimmerabili (profilo = light)

Quando è impostato il profilo **light**, TapHome espone **4 canali dimmer indipendenti** (O1–O4), ciascuno controlla un'uscita LED. Ogni canale legge da `/rpc/Light.GetStatus?id={0-3}` e scrive tramite `/rpc/Light.Set?id={0-3}`.

La luminosità viene mappata dal range TapHome 0,0–1,0 al range Shelly 0–100%. Impostare il livello a 0 spegne l'uscita; qualsiasi livello diverso da zero la accende e imposta la luminosità.

Ogni canale dimmer espone sei attributi di servizio:

| Attributo | Unità | Descrizione |
|-----------|-------|-------------|
| Temperatura | C | Temperatura interna del dispositivo |
| Consumo energetico | Wh | Energia cumulativa per questo canale |
| Potenza | W | Assorbimento di potenza istantaneo |
| Tensione | V | Tensione efficace |
| Corrente | A | Assorbimento di corrente |
| Flag | — | Flag di stato interni |

Ogni canale dimmer espone anche un'azione di servizio **Calibrazione** che invia `/rpc/Light.Calibrate?id={N}` per calibrare l'uscita per il carico LED collegato.

### Diagnostica e azioni del modulo

Il modulo espone cinque attributi di servizio per la diagnostica del dispositivo:

| Attributo | Descrizione |
|-----------|-------------|
| WiFi | Nome della rete wireless connessa |
| Indirizzo IP | Indirizzo IP del dispositivo |
| Intensità segnale (dB) | WiFi RSSI |
| MAC | Indirizzo hardware del dispositivo |
| Profilo | Profilo attualmente attivo (light, rgb o rgbw) |

A livello di modulo sono disponibili tre azioni di servizio:

| Azione | Descrizione |
|--------|-------------|
| Aggiornamento firmware | Avvia l'aggiornamento OTA al canale firmware stabile |
| Riavvio | Riavvia il dispositivo |
| Imposta profilo | Commuta tra i profili light, rgb e rgbw (il dispositivo si riavvia) |

Lo script del modulo controlla anche la disponibilità di aggiornamenti firmware e requisiti di riavvio in sospeso, visualizzando avvisi in TapHome quando viene rilevata una di queste condizioni.

### Funzionalità aggiuntive

Lo Shelly Plus RGBW PM tramite la sua API RPC espone anche lo stato dell'ingresso fisico, la configurazione della modalità notturna con limiti di luminosità e pianificazione, la durata di transizione per le modifiche di colore/luminosità e la luminosità minima all'accensione. Queste funzionalità potranno essere aggiunte in un futuro aggiornamento del template.

## Risoluzione dei problemi

### Il dispositivo non risponde

1. Verificare che lo Shelly sia connesso al Wi-Fi e abbia un indirizzo IP valido
2. Provare a usare l'hostname mDNS (`shellyplusrgbwpm-AABBCCDDEE.local`) invece dell'indirizzo IP — l'IP potrebbe essere cambiato dopo un rinnovo DHCP
3. Aprire `http://{device-ip}/rpc/Shelly.GetDeviceInfo` nel browser — se risponde con un JSON, il dispositivo è raggiungibile
4. Verificare che TapHome CCU e Shelly siano sulla stessa rete / VLAN
5. Assicurarsi che l'HTTP Digest Authentication sia disabilitata nell'interfaccia web Shelly — TapHome non supporta richieste autenticate

### Errore di profilo sui dispositivi

Se un dispositivo mostra "Profile is not set to rgb/rgbw/light" — questo è previsto. Il template contiene dispositivi per tutti e tre i profili, ma solo i dispositivi corrispondenti al profilo attualmente attivo funzioneranno. Gli altri dispositivi segnaleranno questo errore e possono essere ignorati.

Per cambiare il profilo attivo, utilizzare l'azione di servizio **Set Profile** sul modulo o modificarlo nell'interfaccia web Shelly. Il dispositivo si riavvierà e TapHome rileverà il nuovo profilo entro un ciclo di polling.

### I colori appaiono errati in modalità RGB/RGBW

1. Verificare che il cablaggio della striscia LED corrisponda all'ordine dei morsetti di uscita (R, G, B, W) — fili invertiti producono colori errati
2. Il template converte internamente tra gli spazi colore HSB e RGB. Se i colori appaiono sbiaditi, controllare il valore di saturazione — bassa saturazione produce toni pastello
3. In modalità RGBW, il canale bianco e i canali RGB sono controllati indipendentemente. Quando si passa da bianco a colore o viceversa, TapHome invia il comando appropriato per azzerare l'altra modalità

### Le uscite dimmer non rispondono in modalità light

1. Confermare che il profilo è impostato su **light** — i dispositivi dimmer funzionano solo in modalità light
2. Verificare che ogni canale abbia un carico LED collegato — canali senza carico potrebbero non riportare lo stato corretto
3. Provare ad eseguire l'azione **Calibrazione** sul canale — questo ottimizza la curva di dimmeraggio per il carico LED collegato
4. I dispositivi Gen2+ supportano fino a 6 connessioni HTTP simultanee — evitare il polling simultaneo da più sistemi

### La misurazione potenza mostra zero

1. Confermare che il carico LED è collegato e il canale è acceso
2. Interrogare manualmente l'endpoint appropriato (`/rpc/Light.GetStatus?id=0`, `/rpc/RGB.GetStatus?id=0` o `/rpc/RGBW.GetStatus?id=0`) e verificare che `apower` restituisca un valore diverso da zero
3. Carichi LED a potenza molto bassa possono riportare 0 W a causa della risoluzione di misurazione — questo è normale per piccoli LED indicatori

## Come installare in TapHome

### Prerequisiti

- Dispositivo Shelly installato e acceso
- Rete Wi-Fi locale (2,4 GHz)
- TapHome CCU sulla stessa rete

### Passaggio 1 — Collegare Shelly al Wi-Fi

**Opzione A — App Shelly (consigliata):**

1. Scarica l'[app Shelly](https://www.shelly.com/en/support/shelly-app) (iOS / Android)
2. Tocca **+** → **Add Device** e segui la procedura guidata di associazione Bluetooth
3. Inserisci le credenziali Wi-Fi quando richiesto

**Opzione B — Modalità AP (senza app):**

1. Al primo avvio il dispositivo crea un hotspot: `ShellyXXX-AABBCCDDEE`
2. Collega il tuo telefono/PC a questo hotspot
3. Apri `http://192.168.33.1` → **Internet & Security** → **Wi-Fi Mode - Client**
4. Inserisci SSID e password → **Save**

> [!NOTE]
> Shelly supporta solo reti a **2,4 GHz**. Le reti a 5 GHz non appariranno nella scansione.

### Passaggio 2 — Trovare l'indirizzo IP

Dopo la connessione al Wi-Fi, trova l'indirizzo IP assegnato tramite uno di questi metodi:

- **App Shelly:** Dettaglio dispositivo → **Device info** → Indirizzo IP
- **Interfaccia web Shelly:** Connettiti all'AP del dispositivo prima della configurazione Wi-Fi — l'IP viene mostrato dopo il salvataggio
- **Tabella DHCP del router:** Cerca un hostname come `shelly1pm-AABBCCDDEE`
- **mDNS:** Esegui il ping di `shelly<model>-<mac>.local` (es. `shelly1pm-AABBCCDDEE.local`) dalla stessa rete

> [!TIP]
> Assegna un **IP statico** (prenotazione DHCP) nel tuo router per il dispositivo Shelly per evitare che l'indirizzo cambi dopo un riavvio del router.

### Passaggio 3 — Configurazione in TapHome

1. In TapHome, aggiungi un nuovo modulo **Packet Parser (HTTP)**
2. **IP Address:** inserisci l'IP dal passaggio 2 (es. `192.168.1.50`)
3. **Port:** `80` (predefinito, nessuna modifica necessaria)
4. Importa il template — TapHome interrogherà periodicamente `/status` per leggere lo stato del dispositivo

> [!NOTE]
> L'autenticazione HTTP è disabilitata per impostazione predefinita sui dispositivi Shelly. Se hai abilitato la protezione con accesso, TapHome attualmente non supporta HTTP Basic Auth — mantieni l'autenticazione disabilitata per l'integrazione con TapHome.

## Dispositivi disponibili 6

Questi dispositivi compaiono in TapHome dopo l'importazione.

Shelly Plus RGBW PM Modulo

Attributi di servizio

|                     |
|---------------------|
| WiFi                |
| Indirizzo IP        |
| Potenza del segnale |
| MAC                 |
| Profilo             |

Azioni di servizio

|                        |
|------------------------|
| Aggiornamento firmware |
| Riavvio                |
| Imposta profilo        |

Variabili personalizzate

Lettura (modulo)

```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
```

Attributi di servizio

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");
```

Azioni di servizio

${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

Parametri: 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
```

Luce RGB Luce HSB Lettura e scrittura

Luce colore HSB (profilo rgb) con controllo luminosità, tonalità, saturazione e misurazione potenza per canale

HSB

Attributi di servizio

|                    |
|--------------------|
| Temperatura        |
| Consumo energetico |
| Potenza            |
| Tensione           |
| Corrente           |

Lettura (modulo)

```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
```

Lettura luminosità

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

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

Scrittura luminosità

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

Lettura tonalità

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

Scrittura tonalità

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

Lettura saturazione

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

Scrittura saturazione

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

Attributi di servizio

${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)
```

Luce RGBW Luce HSB Lettura e scrittura

Luce colore+bianco HSB (profilo rgbw) con RGB, canale bianco (CCT a 4500K) e misurazione potenza per canale

HSB

Attributi di servizio

|                    |
|--------------------|
| Temperatura        |
| Consumo energetico |
| Potenza            |
| Tensione           |
| Corrente           |

Lettura (modulo)

```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
```

Lettura luminosità

```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
```

Scrittura luminosità

```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
```

Lettura tonalità

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

Scrittura tonalità

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

Lettura saturazione

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

Scrittura saturazione

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

Lettura temperatura colore

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

Scrittura temperatura colore

```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
```

Attributi di servizio

${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)
```

Uscita LED dimmerabile 2 Dimmer Lettura e scrittura

Canale dimmer indipendente 2 (profilo light, id=1) con controllo luminosità, calibrazione e misurazione potenza per canale

numeric

Attributi di servizio

|                    |
|--------------------|
| Temperatura        |
| Consumo energetico |
| Potenza            |
| Tensione           |
| Corrente           |
| Flag               |

Azioni di servizio

|              |
|--------------|
| Calibrazione |

Lettura (modulo)

```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
```

Lettura livello

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

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

Scrittura livello

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

Attributi di servizio

${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)
```

Azioni di servizio

${detail\_deviceSettings\_TemperatureSensor\_categoryCalibration}

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

Uscita LED dimmerabile 1 Dimmer Lettura e scrittura

Canale dimmer indipendente 1 (profilo light, id=0) con controllo luminosità, calibrazione e misurazione potenza per canale

numeric

Attributi di servizio

|                    |
|--------------------|
| Temperatura        |
| Consumo energetico |
| Potenza            |
| Tensione           |
| Corrente           |
| Flag               |

Azioni di servizio

|              |
|--------------|
| Calibrazione |

Lettura (modulo)

```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
```

Lettura livello

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

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

Scrittura livello

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

Attributi di servizio

${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)
```

Azioni di servizio

${detail\_deviceSettings\_TemperatureSensor\_categoryCalibration}

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

Uscita LED dimmerabile 3 Dimmer Lettura e scrittura

Canale dimmer indipendente 3 (profilo light, id=2) con controllo luminosità, calibrazione e misurazione potenza per canale

numeric

Attributi di servizio

|                    |
|--------------------|
| Temperatura        |
| Consumo energetico |
| Potenza            |
| Tensione           |
| Corrente           |
| Flag               |

Azioni di servizio

|              |
|--------------|
| Calibrazione |

Lettura (modulo)

```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
```

Lettura livello

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

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

Scrittura livello

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

Attributi di servizio

${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)
```

Azioni di servizio

${detail\_deviceSettings\_TemperatureSensor\_categoryCalibration}

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

Uscita LED dimmerabile 4 Dimmer Lettura e scrittura

Canale dimmer indipendente 4 (profilo light, id=3) con controllo luminosità, calibrazione e misurazione potenza per canale

numeric

Attributi di servizio

|                    |
|--------------------|
| Temperatura        |
| Consumo energetico |
| Potenza            |
| Tensione           |
| Corrente           |
| Flag               |

Azioni di servizio

|              |
|--------------|
| Calibrazione |

Lettura (modulo)

```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
```

Lettura livello

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

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

Scrittura livello

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

Attributi di servizio

${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)
```

Azioni di servizio

${detail\_deviceSettings\_TemperatureSensor\_categoryCalibration}

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

**Connessione:** Packet Parser → HTTP • Hostname: `shellyplusrgbwpm-{MAC}.local`

Possibili miglioramenti (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

## Parametri di importazione

Inserisci questi valori quando importi l'XML.

| Richiesto nell'app | Predefinito   |
|--------------------|---------------|
| Indirizzo IP       | `192.168.0.1` |

## Fonti

- 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

## Documentazione correlata

- [Integrazione Packet Parser](https://taphome.com/it/compatibility/packet-parser-guide/)
- [Packet Parser (HTTP, TCP, UDP, FTP, MQTT)](https://taphome.com/it/docs/integration/packet-parser/)
- [Funzioni Packet parser](https://taphome.com/it/docs/script/packet-parser/)
- [Funzioni di parsing](https://taphome.com/it/docs/script/parsing-functions/)

