TapHome

Shelly 2.5

Packet Parser → HTTP
Inviato da
Ultimo aggiornamento: 03. 2026
Shelly 2.5

Lo Shelly 2.5 è un compatto relè Wi-Fi a doppio canale con misurazione della potenza integrata su entrambi i canali. Si inserisce dietro un interruttore a parete standard e può controllare due circuiti indipendenti, ciascuno dimensionato fino a 10 A (2300 W a 230 V), con un massimo combinato di 20 A. Il dispositivo supporta due modalità operative — relè (due interruttori indipendenti) e tapparella (controllo motore coordinato) — ma il template TapHome implementa solo la modalità relè. TapHome comunica con il dispositivo via HTTP sulla rete locale — non è richiesta alcuna connessione cloud.

Il template fornisce due interruttori relè e due contatori di energia (uno per canale), più un’azione di servizio per commutare tra modalità relè e tapparella.

Configurazione

Lo Shelly 2.5 si connette tramite Wi-Fi. Durante l’importazione del template TapHome, inserisci l’indirizzo IP del dispositivo (segnaposto predefinito 192.168.0.1).

La modalità operativa corrente è esposta come attributo di servizio a livello modulo (“Mode”) e può essere modificata tramite l’azione di servizio “Mode”. Il passaggio tra modalità relè e tapparella richiede un riavvio del dispositivo.

Funzionalità del dispositivo

Controllo relè

Il template espone due canali relè indipendenti. Lo stato di ogni relè viene letto dal rispettivo endpoint /relay/ (campo ison) e controllato tramite turn=on o turn=off.

  • Canale 1 — lettura e controllo /relay/0
  • Canale 2 — lettura e controllo /relay/1

Ogni relè ha tre attributi di servizio:

  • Overpower — se è stata rilevata una condizione di sovrapotenza sul canale
  • Overtemperature — se il dispositivo ha superato la temperatura operativa sicura
  • Power Meter — validità della misurazione (OK o Guasto)
Misurazione della potenza

Ogni canale ha un contatore di energia dedicato che legge due valori dall’endpoint /meter/:

  • Potenza in tempo realepower in watt, convertita in kW dal template
  • Consumo totaletotal in watt-minuti, convertito in kWh dal template

Ogni contatore espone un attributo di servizio “Overpower” che mostra il valore soglia di sovrapotenza (in watt, diviso per 1000).

I contatori sono di sola lettura — si aggiornano automaticamente ad ogni ciclo di polling (intervallo di 15 secondi).

Problema noto — il valore energetico del canale 1 è 10× troppo alto. Il template divide total per 6000 per il canale 1 invece di 60000 (che il canale 2 usa correttamente). Ciò significa che il valore energetico cumulativo per il canale 1 sarà circa 10 volte superiore al consumo effettivo. Si tratta di un bug nella formula di conversione del template.

Funzionalità aggiuntive

Lo Shelly 2.5 supporta nativamente il controllo completo delle tapparelle (apertura/chiusura/stop con posizione 0–100% dopo calibrazione), medie di potenza mobili di un minuto per canale, stati degli ingressi fisici degli interruttori, temperatura interna del dispositivo, intensità del segnale Wi-Fi e timer di spegnimento automatico per canale. Il dispositivo può anche memorizzare fino a quattro posizioni preferite delle tapparelle. Queste funzionalità possono essere aggiunte in un futuro aggiornamento del template.

Rispetto al template Shelly 1PM, il template Shelly 2.5 non espone diagnostica del dispositivo come hostname, indirizzo MAC, uptime, utilizzo RAM, stato cloud/MQTT, disponibilità aggiornamento firmware o temperatura interna. Manca anche l’azione di servizio protezione potenza (limite potenza massima) e l’azione di riavvio.

Risoluzione dei problemi

Il dispositivo non risponde
  1. Verifica che lo Shelly sia connesso al Wi-Fi e abbia un indirizzo IP valido
  2. Prova a usare l’hostname mDNS (shellyswitch25-AABBCCDDEE.local) invece dell’indirizzo IP — l’IP potrebbe essere cambiato dopo un rinnovo DHCP
  3. Apri http://{device-ip}/shelly nel browser — se risponde, il dispositivo è raggiungibile
  4. Controlla che TapHome CCU e Shelly siano nella stessa rete / VLAN
I valori di potenza mostrano zero
  1. Conferma che il carico è collegato attraverso il relè Shelly (non bypassato)
  2. Verifica che il relè sia acceso — il contatore misura solo quando la corrente fluisce attraverso il relè
  3. Interroga manualmente /meter/0 o /meter/1 e verifica che power restituisca un valore diverso da zero
Il totale energia del canale 1 sembra errato

Il template divide il totale del canale 1 per 6000 invece del corretto 60000 (usato dal canale 2). Di conseguenza, il valore energetico cumulativo per il canale 1 è 10× superiore al reale. Attualmente non esiste una soluzione nel template — il fattore di conversione è incorporato nello script di polling.

I dispositivi Shelly Gen1 supportano solo 2 connessioni HTTP simultanee. Se TapHome e un altro sistema (es. Home Assistant) interrogano contemporaneamente lo stesso dispositivo, la comunicazione potrebbe diventare inaffidabile. Gli endpoint relè vengono interrogati ogni 2,5 secondi e gli endpoint dei contatori ogni 15 secondi.

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 2.5 Modulo
Attributi di servizio
Modalità
Azioni di servizio
Modalità

Shelly2.5

Attributi di servizio
Mode
 VAR response := SENDHTTPREQUEST("/settings");
 IF response.IsSuccess
  VAR content := response.Content;
  VAR responseHeaders := response.Headers;
  RETURN(PARSEJSON(content, "mode"));
 END
Azioni di servizio
Mode
Parametri: Mode
var St := SWITCH(mo, 1, "roller", "relay");
 VAR response := SENDHTTPREQUEST("/settings?mode=" + St);
Contatore elettrico — Canale 1 Contatore elettrico Solo lettura

Misurazione di potenza ed energia per il canale 1 — potenza istantanea (kW) ed energia cumulativa (kWh). Nota: il valore energetico è 10× troppo alto a causa di un bug del divisore nel template (/6000 invece di /60000)

numeric Unità: W / kWh
Attributi di servizio
Sovrapotenza

Contatore elettrico — Canale 1

Lettura consumo totale
VAR response := SENDHTTPREQUEST("/meter/0");
 IF response.IsSuccess
  VAR content := response.Content;
 VAR responseHeaders := response.Headers;
 RETURN(PARSEJSON(content, "total")/6000);
 ELSE 
 ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
  RETURN(NaN);
 END
Lettura domanda
VAR response := SENDHTTPREQUEST("/meter/0");
 IF response.IsSuccess
  VAR content := response.Content;
 VAR responseHeaders := response.Headers;
 RETURN(PARSEJSON(content, "power")/1000);
 ELSE 
 ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
  RETURN(NaN);
 END
Attributi di servizio
Overpower
 VAR response := SENDHTTPREQUEST("/meter/0");
 IF response.IsSuccess
  VAR content := response.Content;
 RETURN((PARSEJSON(content, "overpower")/1000) + " W");
 END
Contatore elettrico — Canale 2 Contatore elettrico Solo lettura

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

numeric Unità: W / kWh
Attributi di servizio
Sovrapotenza

Contatore elettrico — Canale 2

Lettura consumo totale
VAR response := SENDHTTPREQUEST("/meter/1");
 IF response.IsSuccess
  VAR content := response.Content;
 VAR responseHeaders := response.Headers;
 RETURN(PARSEJSON(content, "total")/60000);
 ELSE 
 ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
  RETURN(NaN);
 END
Lettura domanda
VAR response := SENDHTTPREQUEST("/meter/1");
 IF response.IsSuccess
  VAR content := response.Content;
 VAR responseHeaders := response.Headers;
 RETURN(PARSEJSON(content, "power")/1000);
 ELSE 
 ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
  RETURN(NaN);
 END
Attributi di servizio
Overpower
 VAR response := SENDHTTPREQUEST("/meter/1");
 IF response.IsSuccess
  VAR content := response.Content;
 VAR responseHeaders := response.Headers;
 RETURN((PARSEJSON(content, "overpower")/1000) + " W");
 END
Relè — Canale 1 Interruttore
boolean
Valori / Stati: ON · OFF

Relè — Canale 1

Lettura stato interruttore
VAR response := SENDHTTPREQUEST("/relay/0");
 IF response.IsSuccess
  VAR content := response.Content;
  VAR responseHeaders := response.Headers;
  RETURN(PARSEJSON(content, "ison"));
 ELSE
  ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
  RETURN(NaN);
 END
Scrittura stato interruttore
var turn := Switch(St, 1, "on", "off");
 VAR response := SENDHTTPREQUEST("/relay/0?turn=" + turn);
 IF response.IsSuccess = false
  ADDERROR(response.StatusCode);
 END
Attributi di servizio
Overpower
 VAR response := SENDHTTPREQUEST("/relay/0");
 IF response.IsSuccess
  VAR content := response.Content;
  RETURN(IF(PARSEJSON(content, "overpower"),"Yes", "No"));
 END
Overtemperature
 VAR response := SENDHTTPREQUEST("/relay/0");
 IF response.IsSuccess
  VAR content := response.Content;
  RETURN(IF(PARSEJSON(content, "overtemperature"),"Yes", "No"));
 END
Power Meter
 VAR response := SENDHTTPREQUEST("/relay/0");
 IF response.IsSuccess
  VAR content := response.Content;
  RETURN(IF(PARSEJSON(content, "is_valid"),"OK","Fault"));
 END
Relè — Canale 2 Interruttore
boolean
Valori / Stati: ON · OFF

Relè — Canale 2

Lettura stato interruttore
VAR response := SENDHTTPREQUEST("/relay/1");
 IF response.IsSuccess
  VAR content := response.Content;
  VAR responseHeaders := response.Headers;
  RETURN(PARSEJSON(content, "ison"));
 ELSE
  ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
  RETURN(NaN);
 END
Scrittura stato interruttore
var turn := Switch(St, 1, "on", "off");
 VAR response := SENDHTTPREQUEST("/relay/1?turn=" + turn);
 IF response.IsSuccess = false
  ADDERROR(response.StatusCode);
 END
Attributi di servizio
Overpower
 VAR response := SENDHTTPREQUEST("/relay/1");
 IF response.IsSuccess
  VAR content := response.Content;
  RETURN(IF(PARSEJSON(content, "overpower"),"Yes", "No"));
 END
Overtemperature
 VAR response := SENDHTTPREQUEST("/relay/1");
 IF response.IsSuccess
  VAR content := response.Content;
  RETURN(IF(PARSEJSON(content, "overtemperature"),"Yes", "No"));
 END
Power Meter
 VAR response := SENDHTTPREQUEST("/relay/1");
 IF response.IsSuccess
  VAR content := response.Content;
  RETURN(IF(PARSEJSON(content, "is_valid"),"OK","Fault"));
 END
Connessione: Packet Parser → HTTP
Possibili miglioramenti (9)
  • Roller Shutter Control — Full roller shutter control (open/close/stop/position 0-100%) — the Shelly 2.5's key dual-mode feature. Template only implements relay mode.
  • Roller Position — Current roller position 0-100% (requires calibration). Not available without /roller/ endpoint.
  • Roller Calibration — Initiates travel-time calibration procedure for position control.
  • Rolling Power Averages — 3 rolling one-minute power averages per channel, available in /meter/ response
  • Input States — Physical switch input states (0/1) for both channels, available in /status response
  • Internal Device Temperature — Internal temperature in C available in /status response (not exposed as a device, only as relay SA)
  • Auto-off Timer — Per-channel auto-off timer in seconds, could be added as service action parameter
  • WiFi Signal Strength — WiFi RSSI in dBm, available in /status response
  • Favorite Positions (Roller Mode) — Up to 4 saved roller shutter positions — only relevant if roller mode is implemented

Fonti