TapHome

Shelly 3EM

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

Lo Shelly 3EM è un contatore di energia trifase Wi-Fi con tre morsetti CT (trasformatori di corrente) da 120 A e un relè contattore integrato da 10 A. Misura potenza attiva, tensione, corrente, fattore di potenza ed energia cumulativa per ciascuna fase in modo indipendente. TapHome comunica con il dispositivo sulla rete locale — non è richiesta alcuna connessione cloud.

Per questo dispositivo sono disponibili due template TapHome: un template HTTP (predefinito, utilizza il polling dell’API REST) e un template MQTT (utilizza la sottoscrizione ai messaggi tramite broker). Entrambi i template forniscono lo stesso set di dispositivi — 3 contatori di energia (uno per fase) e 1 interruttore contattore. Scegli il protocollo in base ai requisiti dell’installazione.

Collegamento hardware

Lo Shelly 3EM richiede alimentazione di rete (110–230 V AC) collegata ai morsetti L e N. Ciascuno dei tre morsetti CT inclusi si collega ai morsetti CT1, CT2 e CT3 rispettivamente. L’uscita del relè contattore è sul morsetto O (max 10 A).

Installazione dei morsetti CT
  • Ogni morsetto CT si aggancia attorno al conduttore di fase del circuito da monitorare — non è necessario tagliare i cavi
  • La freccia sul morsetto CT deve puntare nella direzione del flusso di corrente (dalla sorgente al carico)
  • I morsetti CT possono monitorare un sistema trifase (L1, L2, L3) o tre circuiti monofase indipendenti

NON collegare il morsetto CT al conduttore di fase prima di averlo cablato allo Shelly 3EM. Sui cavi di collegamento del trasformatore può essere presente alta tensione anche se è collegato solo il trasformatore.

Controllo contattore

L’uscita relè (morsetto O) è dimensionata per 10 A e può commutare direttamente piccoli carichi o pilotare una bobina contattore esterna per la commutazione di carichi maggiori.

Configurazione

Impostazione template HTTP

Durante l’importazione del template, inserisci l’indirizzo IP del dispositivo. Il template interroga tre endpoint separati (/emeter/0, /emeter/1, /emeter/2) per i dati energetici per fase e /relay/0 per lo stato del contattore. La risposta di ciascuna fase viene memorizzata in una variabile personalizzata (emeter0, emeter1, emeter2) per minimizzare le chiamate HTTP per ciclo di polling.

Impostazione template MQTT

Il template MQTT richiede tre parametri di importazione:

ParametroDescrizioneEsempio
MQTT Broker IPIndirizzo del broker MQTT192.168.1.10
MQTT Broker PortPorta del broker (predefinita 1883)1883
Device IDSuffisso MAC address usato nei topic MQTTB929CC

Il Device ID (dID) sono gli ultimi 6 caratteri dell’indirizzo MAC in formato esadecimale maiuscolo. Si trova nell’interfaccia web Shelly in SettingsDevice Info, oppure tramite GET http://{ip}/settings → campo mqtt.id.

Il modulo si sottoscrive a shellies/shellyem3-{dID}/# e gli script listener indirizzano i messaggi emeter e relay per fase ai dispositivi corrispondenti.

Il template MQTT usa il prefisso topic shellyem3-{dID}, mentre la documentazione ufficiale dell’API fa riferimento a shelly3em-{id}. Entrambi i formati funzionano — la variabile dID è configurabile. Verifica il prefisso topic effettivo sottoscrivendoti a shellies/# con un client MQTT.

Sui dispositivi Shelly Gen1, l’abilitazione di MQTT disabilita Shelly Cloud. Entrambi non possono funzionare contemporaneamente. Questa è una limitazione del firmware.

Funzionalità del dispositivo

Misurazione energia per fase

Il template crea tre contatori di energia — uno per ciascuna fase. Ogni contatore misura:

  • Potenza attiva — potenza istantanea in W, convertita in kW dal template (÷ 1000)
  • Energia totale consumata — energia cumulativa in Wh, convertita in kWh dal template (÷ 1000)

Nel template HTTP, ogni fase viene letta dall’endpoint /emeter/{i}. Nel template MQTT, i valori arrivano sui topic shellies/shellyem3-{dID}/emeter/{i}/power e .../total.

Parametri elettrici per fase

Ogni contatore espone quattro attributi di servizio:

  • Tensione — tensione efficace (V)
  • Corrente — corrente efficace (A)
  • Fattore di potenza — rapporto tra potenza attiva e apparente (0,00–1,00)
  • Energia totale restituita — energia immessa in rete in Wh, utile per impianti solari/FV con misurazione bidirezionale
Reset contatore energia

Ogni fase ha un’azione di servizio Reset total che azzera i contatori energetici per quella specifica fase. In modalità HTTP chiama /emeter/{i}?reset_totals; in modalità MQTT pubblica reset_totals sul topic shellies/shellyem3-{dID}/emeter/{i}/command.

Interruttore contattore

Il template espone il relè contattore come interruttore. Lo stato del relè viene letto da /relay/0ison (HTTP) o dal topic shellies/shellyem3-{dID}/relay/0 (MQTT) e controllato tramite /relay/0?turn=on|off (HTTP) o il topic .../relay/0/command (MQTT).

Funzionalità aggiuntive

Lo Shelly 3EM fornisce anche potenza reattiva (VAR), un flag di validità della misurazione per fase (is_valid), la somma della potenza totale trifase (total_power da /status), intensità del segnale Wi-Fi, uptime del dispositivo, stato aggiornamento firmware, soglie di sovrapotenza per fase ed esportazione dati energetici storici (CSV). Sul relè contattore è disponibile un timer di spegnimento automatico. Queste funzionalità possono essere aggiunte in un futuro aggiornamento del template.

Risoluzione dei problemi

Il dispositivo non risponde (HTTP)
  1. Verifica che lo Shelly 3EM sia connesso al Wi-Fi e abbia un indirizzo IP valido
  2. Apri http://{device-ip}/shelly nel browser — se risponde, il dispositivo è raggiungibile
  3. Controlla che TapHome Core e Shelly 3EM siano nella stessa rete / VLAN
Nessun messaggio MQTT ricevuto
  1. Conferma che MQTT è abilitato nell’interfaccia web Shelly (Internet & SecurityAdvanced — MQTT)
  2. Verifica che indirizzo e porta del broker siano corretti sia nel dispositivo Shelly che nel template TapHome
  3. Controlla che la variabile dID corrisponda all’ID effettivo del dispositivo — sottoscriviti a shellies/# con un client MQTT per verificare il prefisso topic
  4. Assicurati che il broker MQTT sia in esecuzione e raggiungibile sia dallo Shelly che dal TapHome Core
I valori di energia mostrano zero o NaN
  1. Conferma che i morsetti CT sono correttamente collegati ai terminali dello Shelly 3EM (CT1, CT2, CT3) e agganciati attorno ai conduttori di fase
  2. Verifica che la freccia sul morsetto CT punti nella direzione corretta (dalla sorgente al carico)
  3. Interroga manualmente /emeter/0, /emeter/1, /emeter/2 e controlla che i campi power e total contengano valori diversi da zero

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 3EM Modulo
Variabili personalizzate
Contatore elettrico (Fase 1) Contatore elettrico Solo lettura

Monitoraggio energia fase 1 — potenza attiva (kW), energia cumulativa (kWh), tensione, corrente, fattore di potenza ed energia restituita

numeric Unità: W / kWh
Attributi di servizio
Fattore di potenza
Corrente [A]
Tensione [V]
Energia totale restituita [Wh]Energia immessa in rete — rilevante per impianti solari/FV con misurazione bidirezionale
Azioni di servizio
Azzera contatore

Contatore elettrico (Fase 1)

Lettura consumo totale
RETURN(todouble(PARSEjson(emeter0, "total"))/1000);
Lettura domanda
RETURN(todouble(PARSEjson(emeter0, "power"))/1000);
Lettura (modulo)
VAR response := SENDHTTPREQUEST("/emeter/0");
IF response.IsSuccess
 emeter0 := response.Content;
ELSE
 ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
 RETURN(NaN);
END
Attributi di servizio
power factor
RETURN(todouble(PARSEjson(emeter0, "pf")));
Current [A]
RETURN(PARSEjson(emeter0, "current"));
voltage [V]
RETURN(PARSEjson(emeter0, "voltage"));
Total returned energy [Wh]
RETURN(PARSEjson(emeter0, "total_returned"));
Azioni di servizio
Reset total
sendhttprequest("/emeter/0?reset_totals");
Contatore elettrico (Fase 2) Contatore elettrico Solo lettura

Monitoraggio energia fase 2 — potenza attiva (kW), energia cumulativa (kWh), tensione, corrente, fattore di potenza ed energia restituita

numeric Unità: W / kWh
Attributi di servizio
Fattore di potenza
Corrente [A]
Tensione [V]
Energia totale restituita [Wh]Energia immessa in rete — rilevante per impianti solari/FV con misurazione bidirezionale
Azioni di servizio
Azzera contatore

Contatore elettrico (Fase 2)

Lettura consumo totale
RETURN(todouble(PARSEjson(emeter1, "total"))/1000);
Lettura domanda
RETURN(todouble(PARSEjson(emeter1, "power"))/1000);
Lettura (modulo)
VAR response := SENDHTTPREQUEST("/emeter/1");
IF response.IsSuccess
 emeter1 := response.Content;
ELSE
 ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
 RETURN(NaN);
END
Attributi di servizio
power factor
RETURN(PARSEjson(emeter1, "pf"));
current [A[
RETURN(PARSEjson(emeter1, "current"));
voltage [V]
RETURN(PARSEjson(emeter1, "voltage"));
total returned energy [Wh]
RETURN(PARSEjson(emeter1, "total_returned"));
Azioni di servizio
reset total
sendhttprequest("/emeter/1?reset_totals");
Contatore elettrico (Fase 3) Contatore elettrico Solo lettura

Monitoraggio energia fase 3 — potenza attiva (kW), energia cumulativa (kWh), tensione, corrente, fattore di potenza ed energia restituita

numeric Unità: W / kWh
Attributi di servizio
Fattore di potenza
Corrente [A]
Tensione [V]
Energia totale restituita [Wh]Energia immessa in rete — rilevante per impianti solari/FV con misurazione bidirezionale
Azioni di servizio
Azzera contatore

Contatore elettrico (Fase 3)

Lettura consumo totale
RETURN(todouble(PARSEjson(emeter2, "total"))/1000);
Lettura domanda
RETURN(todouble(PARSEjson(emeter2, "power"))/1000);
Lettura (modulo)
var response := SENDHTTPREQUEST("/emeter/2");
IF response.IsSuccess
 emeter2 := response.Content;
ELSE
 ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
 RETURN(NaN);
END
Attributi di servizio
power factor
RETURN(PARSEjson(emeter2, "pf"));
current [A]
RETURN(PARSEjson(emeter2, "current"));
voltage [V]
RETURN(PARSEjson(emeter2, "voltage"));
Total returned energy [Wh]
RETURN(PARSEjson(emeter2, "total_returned"));
Azioni di servizio
reset total
sendhttprequest("/emeter/2?reset_totals");
Interruttore contattore Interruttore

Relè contattore integrato da 10 A per la commutazione di carichi o il controllo di un contattore esterno

boolean
Valori / Stati: ON · OFF

Interruttore contattore

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 response := SENDHTTPREQUEST("/relay/0?turn=" + switch(St,1,"on","off"));
IF response.IsSuccess = false
 ADDERROR(response.StatusCode);
END
Connessione: Packet Parser → HTTP
Possibili miglioramenti (10)
  • Reactive Power — Per-phase reactive power in VAR; available in /emeter/ response and via MQTT topic .../emeter/{i}/reactive_power
  • Measurement Validity — Boolean flag indicating whether CT clamp measurement is valid; useful for detecting disconnected CT
  • Total Power (3-phase sum) — Sum of active power across all 3 phases in W; available in /status but not in per-phase /emeter/ endpoints
  • WiFi Signal Strength — WiFi RSSI in dBm
  • Uptime — Device uptime in seconds; available in /status but template only polls /emeter/ endpoints, not /status
  • FW Update Available — Firmware update flag from /status
  • Auto-off Timer — Auto-off timer in seconds on contactor relay
  • Per-phase Power Protection — Per-phase overpower threshold; could be exposed as service attribute + action
  • Historical Energy Data (CSV) — Per-phase historical data export as CSV; not applicable for real-time integration
  • Reset All Energy History — Clears ALL stored energy history across all 3 phases; more destructive than per-phase reset_totals

Fonti