TapHome

Shelly Pro 4PM

Packet Parser → HTTP
Inviato da
Ultimo aggiornamento: 03. 2026
Shelly Pro 4PM

Lo Shelly Pro 4PM è un relè smart a 4 canali per montaggio su guida DIN con misurazione della potenza integrata per canale. Ciascuna delle quattro uscite indipendenti può commutare fino a 16 A (totale 40 A), rendendolo adatto al controllo di circuiti di illuminazione, apparecchi o carichi del quadro elettrico con monitoraggio energetico individuale per canale. TapHome comunica con il dispositivo via HTTP sulla rete locale — non è richiesta alcuna connessione cloud.

Il template utilizza un approccio API misto: endpoint RPC Gen2+ (/rpc/Switch.GetStatus?id=N) per la lettura delle misurazioni energetiche, ed endpoint Gen1 (/relay/N?turn=on|off) per il controllo dei relè. Entrambe le generazioni API sono supportate dal Pro 4PM per compatibilità retroattiva. Il dispositivo si connette tramite WiFi o Ethernet (RJ45) e dispone di un display LCD a colori da 1,8 pollici per il monitoraggio locale dello stato.

Configurazione

Lo Shelly Pro 4PM si connette tramite WiFi o Ethernet. Durante l’importazione del template TapHome, inserisci l’indirizzo IP del dispositivo (segnaposto predefinito 192.168.0.1).

L’autenticazione deve essere disabilitata sul dispositivo Shelly per l’integrazione con TapHome. TapHome non supporta l’HTTP Digest Auth utilizzata dai dispositivi Gen2. Apri l’interfaccia web Shelly (http://{ip-dispositivo}) → Settings → Authentication e assicurati che sia disattivata.

Il cavo LAN deve essere collegato o scollegato solo quando il dispositivo è spento. L’inserimento a caldo del cavo Ethernet può causare problemi.

Se la modalità ECO è abilitata sul dispositivo Shelly, può causare timeout di comunicazione a causa degli intervalli di polling rapidi utilizzati dal template (2,5–15 secondi). Disabilita la modalità ECO nell’interfaccia web Shelly se riscontri problemi di connettività intermittenti.

Funzionalità del dispositivo

Misurazione dell’energia

Il template espone quattro dispositivi contatore di energia indipendenti, uno per canale. Ogni contatore legge da /rpc/Switch.GetStatus?id=N (dove N è 0–3):

  • Potenza in tempo realeapower in watt, convertita in kW dal template
  • Consumo totaleaenergy.total in wattora, convertito in kWh dal template

Il canale 1 effettua il polling ogni 2,5 secondi per un feedback più rapido. I canali 2–4 effettuano il polling ogni 15 secondi.

I contatori sono di sola lettura — si aggiornano automaticamente ad ogni ciclo di polling.

Controllo relè

Il template espone quattro dispositivi interruttore relè, uno per canale. Ogni relè è controllato tramite l’endpoint Gen1 /relay/N?turn=on|off (dove N è 0–3).

Gli interruttori relè sono di sola scrittura — il template non legge lo stato del relè dal dispositivo. Lo stato attuale del relè può essere dedotto dal contatore di energia corrispondente: se il canale riporta un consumo diverso da zero, il relè è acceso. Un futuro aggiornamento del template potrebbe aggiungere il feedback dello stato del relè utilizzando il campo Gen2+ /rpc/Switch.GetStatus?id=Noutput.

Sensore di potenza

Un dispositivo sensore di potenza autonomo espone la potenza attiva grezza in watt per il canale 1 (letta da /rpc/Switch.GetStatus?id=0apower). A differenza del contatore di energia che converte in kW, questo sensore riporta il valore in watt senza conversione, utile per automazioni che necessitano di precisione a livello di watt.

Diagnostica di servizio

Il template espone 13 attributi di servizio per il monitoraggio del dispositivo:

  • Informazioni dispositivo — hostname, indirizzo MAC, ora del dispositivo, uptime, utilizzo RAM
  • Protezione termica — temperatura interna (°C), stato temperatura (Normal / High / Very High), flag sovratemperatura
  • Connettività — cloud abilitato/connesso, MQTT connesso, aggiornamento firmware disponibile
  • Protezione potenza — limite massimo di potenza attuale (letto da /settings)
Azioni di servizio

Sono disponibili tre azioni di servizio:

  • Imposta protezione potenza — imposta il limite massimo di potenza (1–3500 W). Il relè si spegne automaticamente se il consumo supera questo valore.
  • Abilita cloud — abilita o disabilita la connettività Shelly Cloud
  • Riavvio — avvia un riavvio del dispositivo
Funzionalità aggiuntive

Lo Shelly Pro 4PM espone anche tensione, corrente, fattore di potenza, frequenza e temperatura interna per canale nella sua risposta /rpc/Switch.GetStatus. Stati degli ingressi fisici interruttore/pulsante (S1–S4), stato Ethernet, WiFi RSSI e controllo relè nativo Gen2+ con timer di spegnimento automatico sono disponibili tramite l’API RPC. Queste funzionalità potranno essere aggiunte in un futuro aggiornamento del template.

Risoluzione dei problemi

Il dispositivo non risponde
  1. Verifica che lo Shelly sia connesso al WiFi o Ethernet e abbia un indirizzo IP valido
  2. Prova a utilizzare l’hostname mDNS (shellypro4pm-AABBCCDDEE.local) invece dell’indirizzo IP — l’IP potrebbe essere cambiato dopo un rinnovo DHCP
  3. Apri http://{ip-dispositivo}/rpc/Shelly.GetDeviceInfo nel browser — se risponde con JSON, il dispositivo è raggiungibile
  4. Verifica che TapHome Core e Shelly siano sulla stessa rete / VLAN
  5. Assicurati che l’autenticazione sia disabilitata sul dispositivo Shelly
Le letture di potenza mostrano zero
  1. Conferma che il carico sia collegato attraverso l’uscita relè Shelly (O1–O4), non bypassato
  2. Verifica che il relè sia acceso — il contatore misura solo quando la corrente scorre attraverso il relè
  3. Interroga manualmente /rpc/Switch.GetStatus?id=0 e verifica che apower restituisca un valore diverso da zero
  4. Verifica l’ID canale corretto (id=0 per Uscita 1, id=1 per Uscita 2, ecc.)
Stato relè sconosciuto

Gli interruttori relè in questo template sono di sola scrittura — inviano comandi on/off ma non leggono lo stato del relè. Per verificare lo stato effettivo del relè:

  1. Controlla il contatore di energia corrispondente — potenza diversa da zero significa che il relè è acceso
  2. Osserva gli indicatori LED dei relè sul pannello frontale del dispositivo
  3. Testa manualmente tramite browser: http://{ip-dispositivo}/relay/0 restituisce lo stato attuale del relè in JSON
Avviso sovratemperatura

Lo Shelly Pro 4PM dispone di protezione termica interna. Se la temperatura del dispositivo supera i limiti di sicurezza, temperature_status cambia in “High” o “Very High” e overtemperature diventa true. Assicura una ventilazione adeguata nel quadro elettrico, specialmente quando si commutano carichi elevati su più canali contemporaneamente.

Hardware V1 vs V2

Entrambe le versioni utilizzano lo stesso firmware e API. La V2 (SPSW-104PE16EU) ha connettori migliorati — cinque morsetti a vite individuali invece di quattro blocchi a 2 morsetti — e migliore isolamento elettrico LAN. Non sono necessarie modifiche al template tra le versioni.

I dispositivi Shelly Gen2 supportano fino a 6 connessioni HTTP simultanee. Il template Shelly Pro 4PM utilizza fino a 5 endpoint simultanei per ciclo di polling (4 contatori energia + stato modulo), lasciando margine limitato. Evita il polling simultaneo da troppi sistemi.

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 (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.1Internet & SecurityWi-Fi Mode - Client
  4. Inserisci SSID e password → Save

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

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

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

Shelly Pro 4PM Modulo
Azioni di servizio
Imposta protezione potenzaImposta limite massimo di potenza (1–3500 W) — il relè si spegne automaticamente se il consumo supera questo valore
Abilita cloudAbilita o disabilita la connettività Shelly Cloud
RiavvioAvvia un riavvio del dispositivo
Variabili personalizzate
StatusJson (string)
SettingsJson (string)
status (string) = 0

Shelly 4 Pro

Lettura (modulo)
VAR response := SENDHTTPREQUEST("/status", "GET");
StatusJson := response.Content;
Azioni di servizio
Set power protection
Parametri: Maximum power (1–3500 Watts)
VAR response := SENDHTTPREQUEST("settings?max_power=" + Watts);
VAR contentJson := response.Content;
VAR limitSet := PARSEJSON(contentJson, "max_power");

"Power limit set to " + limitSet + "W"
Enable cloud
Parametri: 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");
Contatore energia canale 1 Contatore elettrico Solo lettura

Misurazione potenza ed energia per canale per uscita 1 — potenza istantanea (kW) ed energia cumulativa (kWh)

numeric Unità: W / kWh

Contatore energia canale 1

Lettura consumo totale
return(parsejson(parsejson(status,"aenergy"), "total")/1000);
Lettura domanda
return(parsejson(status,"apower")/1000);
Lettura (modulo)
var x := (sendhttprequest("/rpc/Switch.GetStatus?id=0"));
status := x.Content;
Contatore energia canale 2 Contatore elettrico Solo lettura

Misurazione potenza ed energia per canale per uscita 2 — potenza istantanea (kW) ed energia cumulativa (kWh)

numeric Unità: W / kWh

Contatore energia canale 2

Lettura consumo totale
return(parsejson(parsejson(status,"aenergy"), "total")/1000);
Lettura domanda
return(parsejson(status,"apower")/1000);
Lettura (modulo)
var x := (sendhttprequest("/rpc/Switch.GetStatus?id=1"));
status := x.Content;
Contatore energia canale 3 Contatore elettrico Solo lettura

Misurazione potenza ed energia per canale per uscita 3 — potenza istantanea (kW) ed energia cumulativa (kWh)

numeric Unità: W / kWh

Contatore energia canale 3

Lettura consumo totale
return(parsejson(parsejson(status,"aenergy"), "total")/1000);
Lettura domanda
return(parsejson(status,"apower")/1000);
Lettura (modulo)
var x := (sendhttprequest("/rpc/Switch.GetStatus?id=2"));
status := x.Content;
Contatore energia canale 4 Contatore elettrico Solo lettura

Misurazione potenza ed energia per canale per uscita 4 — potenza istantanea (kW) ed energia cumulativa (kWh)

numeric Unità: W / kWh

Contatore energia canale 4

Lettura consumo totale
return(parsejson(parsejson(status,"aenergy"), "total")/1000);
Lettura domanda
return(parsejson(status,"apower")/1000);
Lettura (modulo)
var x := (sendhttprequest("/rpc/Switch.GetStatus?id=3"));
status := x.Content;
Relè canale 2 Interruttore

Controllo relè solo scrittura per uscita 2 — stato non leggibile, desumere dal contatore energia

boolean
Valori / Stati: ON · OFF

Relè canale 2

Scrittura stato interruttore
VAR path := "relay/1?turn=" + SWITCH(St, 0, "off", 1, "on","off");
SENDHTTPREQUEST(path);
Relè canale 1 Interruttore

Controllo relè solo scrittura per uscita 1 — stato non leggibile, desumere dal contatore energia

boolean
Valori / Stati: ON · OFF

Relè canale 1

Scrittura stato interruttore
VAR path := "relay/0?turn=" + SWITCH(St, 0, "off", 1, "on","off");
SENDHTTPREQUEST(path);
Sensore potenza canale 1 Variabile Solo lettura

Potenza attiva grezza in watt per canale 1 — valore sensore autonomo senza conversione kW

numeric Unità: W

Sensore potenza canale 1

Lettura
return(parsejson(status,"apower"));
Lettura (modulo)
var x := (sendhttprequest("/rpc/Switch.GetStatus?id=0"));
status := x.Content;
Relè canale 3 Interruttore

Controllo relè solo scrittura per uscita 3 — stato non leggibile, desumere dal contatore energia

boolean
Valori / Stati: ON · OFF

Relè canale 3

Scrittura stato interruttore
VAR path := "relay/2?turn=" + SWITCH(St, 0, "off", 1, "on","off");
SENDHTTPREQUEST(path);
Relè canale 4 Interruttore

Controllo relè solo scrittura per uscita 4 — stato non leggibile, desumere dal contatore energia

boolean
Valori / Stati: ON · OFF

Relè canale 4

Scrittura stato interruttore
VAR path := "relay/3?turn=" + SWITCH(St, 0, "off", 1, "on","off");
SENDHTTPREQUEST(path);
Connessione: Packet Parser → HTTP
Possibili miglioramenti (10)
  • Relay State Read — Switches have no readswitchstate script — relay state is not read back. Gen2+ /rpc/Switch.GetStatus?id=N provides output (boolean) for state feedback.
  • Voltage — Per-channel line voltage in V, available in /rpc/Switch.GetStatus response
  • Current — Per-channel load current in A, available in /rpc/Switch.GetStatus response
  • Power Factor — Per-channel power factor, available in /rpc/Switch.GetStatus response
  • Frequency — Network frequency in Hz, available in /rpc/Switch.GetStatus response
  • Per-Channel Temperature — Internal temperature in °C per switch component, available in /rpc/Switch.GetStatus response
  • Input States (S1-S4) — 4 physical switch/button inputs, available via /rpc/Input.GetStatus?id=0..3
  • Gen2+ Relay Control — Native Gen2+ relay control with toggle_after timer support. Template uses Gen1 /relay/N instead.
  • WiFi Status (SSID, IP, RSSI) — WiFi status including signal strength, available via Gen2+ RPC
  • Ethernet Status — Pro 4PM has RJ45 LAN port; Ethernet status (IP, link) available via /rpc/Ethernet.GetStatus

Fonti