TapHome

Shelly EM

Packet Parser → HTTP
Trimis de
Ultima actualizare: 03. 2026

Acest dispozitiv acceptă mDNS

În loc să folosiți o adresă IP, puteți accesa dispozitivul la:

shellyem-{MAC}.local

Înlocuiți {MAC} cu adresa MAC a dispozitivului dvs. (majuscule, fără două puncte).

TapHome acceptă mDNS — folosirea unui nume de gazdă este mai fiabilă decât un IP static.

Shelly EM

Shelly EM este un contor electric monofazat cu două canale de măsurare independente și o ieșire de releu de 2 A pentru comanda unui contactor. Fiecare canal se conectează la un clește CT (transformator de curent) extern — disponibil în variantele de 50 A și 120 A —, ceea ce permite monitorizarea neinvazivă a două circuite separate în același timp. TapHome se integrează local cu dispozitivul, prin Wi-Fi, folosind fie API-ul HTTP REST, fie MQTT. Nu este necesară conexiunea la cloud.

Sunt disponibile două șabloane TapHome: un șablon HTTP, care interoghează endpointurile REST ale dispozitivului, și un șablon MQTT, care primește datele printr-un broker MQTT. Ambele oferă aceleași trei dispozitive — două contoare electrice (câte unul pe canal) și un întrerupător pentru contactor.

Configurare

Șablonul HTTP

Șablonul HTTP necesită doar adresa IP a dispozitivului (sau numele de gazdă mDNS). TapHome interoghează trei endpointuri la fiecare 15 secunde:

  • /emeter/0/ — datele de energie ale canalului 1
  • /emeter/1/ — datele de energie ale canalului 2
  • settings/relay/0 — starea releului și verificarea programării

Scriptul de citire de la nivelul modulului salvează fiecare răspuns într-o variabilă personalizată (emeterZero, emeterOne, status), astfel încât scripturile fiecărui dispozitiv să poată analiza datele fără apeluri HTTP redundante.

Șablonul verifică și starea programării releului din settings/relay/0. Dacă pe dispozitivul Shelly este activată programarea internă, șablonul generează o eroare — dezactivați programarea în interfața web Shelly pentru a evita conflictele cu automatizarea TapHome.

Șablonul MQTT

Șablonul MQTT necesită adresa IP și portul brokerului, precum și ID-ul dispozitivului Shelly (format: shellyem-XXXXXXXXXXXX, unde X = cifrele hexazecimale ale adresei MAC). ID-ul dispozitivului se găsește în interfața web Shelly, la Settings > Device Info.

După activarea MQTT pe Shelly EM (Internet & Security > Advanced — MQTT), TapHome se abonează la topicurile shellies/shellyem-{deviceID}/ și primește datele prin scripturi de ascultare.

La dispozitivele Shelly Gen1, activarea MQTT dezactivează Shelly Cloud. Cele două nu pot funcționa simultan.

Funcțiile dispozitivului

Contorizarea energiei (pe fiecare canal)

Fiecare canal apare în TapHome ca dispozitiv independent de tip contor electric și oferă:

  • Putere instantanee — puterea activă în kW (convertită din W prin împărțire la 1000)
  • Energie cumulată — energia totală consumată în kWh (HTTP: convertită din Wh; MQTT: folosește topicul persistent total în Wh)

Șablonul HTTP citește câmpurile power și total din răspunsul JSON /emeter/{i}/. Șablonul MQTT ascultă topicul emeter/{i}/energy (wați-minut; valoarea se împarte la 60 000 pentru kWh) și topicul emeter/{i}/total (wați-oră, persistent după repornire).

Topicul MQTT energy se resetează la zero la repornirea dispozitivului. Pentru urmărirea persistentă a energiei, șablonul citește și topicul total, care se păstrează după repornire.

Fiecare canal oferă și trei atribute de service:

AtributUnitateDescriere
TensiuneVTensiunea RMS a liniei
Energie returnatăWhEnergia totală returnată în rețea — pentru contorizarea solară/bidirecțională
Putere reactivăVARPuterea reactivă instantanee

Șablonul MQTT oferă pe fiecare canal doar tensiunea ca atribut de service. Puterea reactivă și energia returnată sunt disponibile doar în șablonul HTTP.

Întrerupătorul pentru contactor

Ieșirea releului apare în TapHome ca dispozitiv de tip întrerupător. Releul are un curent nominal de 2 A la 230 V AC — este destinat doar comenzii unui contactor, nu comutării directe a sarcinii.

  • HTTP: citește ison din settings/relay/0 și comandă prin /relay/0?turn=on sau /relay/0?turn=off
  • MQTT: citește din topicul shellies/shellyem-{id}/relay/0 și publică on/off pe shellies/shellyem-{id}/relay/0/command

Releul are un curent nominal de doar 2 A. Pentru sarcinile care depășesc această valoare folosiți întotdeauna un contactor extern. Conectarea directă a sarcinilor de putere mare va deteriora releul.

Funcții suplimentare

Shelly EM oferă și factorul de putere (0,00–1,00) și un indicator de validitate a măsurării pe fiecare canal, configurarea fiecărui canal (raportul CT, limita maximă de putere), resetarea contorului electric, un temporizator de oprire automată pentru releu și puterea semnalului Wi-Fi. Prin MQTT sunt disponibile și topicuri suplimentare pentru puterea în timp real, puterea reactivă și energia returnată pe fiecare canal. Aceste funcții pot fi adăugate într-o actualizare viitoare a șablonului.

Rezolvarea problemelor

Dispozitivul nu răspunde (HTTP)
  1. Verificați dacă Shelly EM este conectat la Wi-Fi și are o adresă IP validă
  2. Deschideți http://{device-ip}/shelly într-un browser — dacă răspunde cu un JSON care conține "type":"SHEM", dispozitivul este accesibil
  3. Verificați dacă unitatea de control TapHome (CCU) și Shelly EM se află în aceeași rețea / VLAN
Lipsesc datele pe un canal
  1. Verificați dacă cleștele CT este conectat la mufa jack de 3,5 mm corectă (canalul 0 sau canalul 1)
  2. Verificați dacă prin conductorul monitorizat trece curent — cleștele CT trebuie să cuprindă un singur conductor, nu întregul cablu
  3. Interogați manual /emeter/0/ și /emeter/1/ pentru a confirma valori power diferite de zero
Mesajele MQTT nu sosesc
  1. Verificați dacă MQTT este activat în interfața web Shelly (Internet & Security > Advanced — MQTT)
  2. Verificați dacă adresa și portul brokerului sunt corecte atât în dispozitivul Shelly, cât și în setările modulului TapHome
  3. Verificați dacă variabila personalizată deviceID corespunde exact ID-ului dispozitivului Shelly (de ex. B929CC)
  4. Folosiți un client MQTT (de ex. MQTT Explorer) pentru a vă abona la shellies/# și verificați dacă dispozitivul publică mesaje
Eroare de conflict cu programarea

Șablonul HTTP verifică câmpul schedule din settings/relay/0. Dacă pe dispozitivul Shelly este activată programarea internă, șablonul raportează o eroare. Dezactivați programarea în interfața web Shelly (Settings > Relay > Schedule) — folosiți în schimb automatizările TapHome.

Dispozitivele Shelly Gen1 acceptă doar 2 conexiuni HTTP simultane. Dacă TapHome și un alt sistem (de ex. Home Assistant) interoghează același dispozitiv în același timp, comunicarea poate deveni instabilă. În mediile cu mai multe sisteme, luați în considerare trecerea la șablonul MQTT.

Cum se instalează în TapHome

Cerințe preliminare

  • Dispozitiv Shelly instalat și pornit
  • Rețea Wi-Fi locală (2,4 GHz)
  • TapHome CCU în aceeași rețea

Pasul 1 — Conectați dispozitivul Shelly la Wi-Fi

Varianta A — aplicația Shelly (recomandat):

  1. Descărcați aplicația Shelly (iOS / Android)
  2. Atingeți + → Add Device și urmați asistentul de împerechere prin Bluetooth
  3. Introduceți datele de conectare la Wi-Fi când vi se solicită

Varianta B — modul AP (fără aplicație):

  1. La prima pornire, dispozitivul creează un hotspot: ShellyXXX-AABBCCDDEE
  2. Conectați telefonul/PC-ul la acest hotspot
  3. Deschideți http://192.168.33.1 → Internet & Security → Wi-Fi Mode - Client
  4. Introduceți SSID-ul și parola → Save

Shelly acceptă doar rețele de 2,4 GHz. Rețelele de 5 GHz nu vor apărea la scanare.

Pasul 2 — Găsiți adresa dispozitivului

Dispozitivele Shelly Gen1 acceptă mDNS (Zeroconf). Puteți accesa dispozitivul folosind un nume de gazdă în locul adresei IP:

1
shelly<model>-<MAC>.local

De exemplu: shelly1pm-AABBCCDDEE.local (adresa MAC în hexazecimal cu majuscule, fără două puncte).

Recomandat: folosiți Scanner IP din TapHome. Deschideți aplicația TapHome și folosiți Scanner IP (Setări → Rețea → Scanare). Scannerul descoperă dispozitivele din rețea și afișează atât adresa IP, cât și numele de gazdă mDNS. Pentru o conexiune mai fiabilă folosiți numele de gazdă în locul adresei IP — acesta rămâne același chiar dacă adresa IP a dispozitivului se schimbă după o repornire a routerului.

Metode alternative pentru aflarea adresei IP:

  • Aplicația Shelly: detaliile dispozitivului → Device info → adresa IP
  • Interfața web Shelly: conectați-vă la AP-ul dispozitivului înainte de configurarea Wi-Fi — adresa IP se afișează după salvare
  • Tabelul DHCP al routerului: căutați un nume de gazdă de forma shelly1pm-AABBCCDDEE

Pasul 3 — Configurați dispozitivul în TapHome

  1. În TapHome adăugați un nou modul Packet Parser (HTTP)
  2. Address: introduceți numele de gazdă mDNS (de ex. shelly1pm-AABBCCDDEE.local) sau adresa IP de la pasul 2
  3. Port: 80 (implicit, nu este necesară nicio modificare)
  4. Importați șablonul — TapHome va interoga periodic /status pentru a citi starea dispozitivului

Autentificarea HTTP este dezactivată implicit pe dispozitivele Shelly. Dacă ați activat protecția prin autentificare, rețineți că TapHome nu acceptă momentan HTTP Basic Auth — pentru integrarea cu TapHome lăsați autentificarea dezactivată.

Dispozitive disponibile

Shelly EM Modul
Variabile personalizate

Shelly EM

Citire (modul)
VAR response := SENDHTTPREQUEST("settings/relay/0");
IF response.IsSuccess
 status := response.Content;
 IF PARSEJSON(status, "schedule")
  ADDERROR("Internal scheduling on");
 END
ELSE
 ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
 RETURN(NaN);
END
response := SENDHTTPREQUEST("/emeter/0/");
IF response.IsSuccess
 emeterZero := response.Content;
ELSE
 ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
 RETURN(NaN);
END
response := SENDHTTPREQUEST("/emeter/1/");
IF response.IsSuccess
 emeterOne := response.Content;
ELSE
 ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
 RETURN(NaN);
END
Contor electric — canalul 1 Contor electric Doar citire

Putere instantanee (kW) și energie cumulată (kWh) de la cleștele CT de pe canalul 1

numeric Unitate: kW / kWh json_path
Atribute de service
Tensiune
Energie returnatăEnergia totală returnată în rețea pe canalul 1 — pentru instalațiile solare și cu contorizare bidirecțională
Putere reactivă

Contor electric — canalul 1

Citirea consumului total
RETURN(PARSEJSON(emeterZero, "total")/1000);
Citirea cererii
RETURN(PARSEJSON(emeterZero, "power")/1000);
Atribute de service
Voltage [V]
RETURN(PARSEJSON(emeterZero, "voltage"));
backward [Wh]
RETURN(PARSEJSON(emeterZero, "total_returned"));
reactive [W]
RETURN(PARSEJSON(emeterZero, "reactive"));
Contor electric — canalul 2 Contor electric Doar citire

Putere instantanee (kW) și energie cumulată (kWh) de la cleștele CT de pe canalul 2

numeric Unitate: kW / kWh json_path
Atribute de service
Tensiune
Energie returnatăEnergia totală returnată în rețea pe canalul 2 — pentru instalațiile solare și cu contorizare bidirecțională
Putere reactivă

Contor electric — canalul 2

Citirea consumului total
RETURN(PARSEJSON(emeterOne, "total")/1000);
Citirea cererii
RETURN(PARSEJSON(emeterOne, "power")/1000);
Atribute de service
Voltage [V]
RETURN(PARSEJSON(emeterOne, "voltage"));
backward [Wh]
RETURN(PARSEJSON(emeterOne, "total_returned"));
reactive [W]
RETURN(PARSEJSON(emeterOne, "reactive"));
Întrerupător pentru contactor Comutator

Ieșire de releu de 2 A pentru comanda contactorului — nu este destinată comutării directe a sarcinii

boolean
Valori / Stări: ON · OFF

Întrerupător pentru contactor

Citirea stării comutatorului
RETURN(PARSEJSON(status, "ison"));
Scrierea stării comutatorului
# Simple HTTP Request:
# VAR response := SENDHTTPREQUEST("/example/set/value=" + St);
VAR response := SENDHTTPREQUEST("/relay/0?turn="+ if(St = 1, "on","off"));
IF response.IsSuccess = false
 ADDERROR(response.StatusCode);
END
# Set Http request method, body and headers
# VAR response := SENDHTTPREQUEST("/example/setValue", "GET", "value=" + St, "header1:value1", "header2:value2", ...);\r
# Or VAR request := HTTPREQUEST("/example/setValue");
# request.Method := "PUT";
# VAR response := SENDHTTPREQUEST(request);
#r
#
# Send TCP, UDP data:
# VAR data1 := "{\"name\":\"John\", \"age\":" + St + "}";
# SENDDATA(data1);
# VAR data2 := TOBYTES("{\"name\":\"John\", \"age\":" + St + "}", "iso-8859-1");
# SENDDATA(data2);
# You can process received TCP or UDP data in the Listener script
#
#
# Upload data to FTP:
# FTPUPLOAD("filePath", "somedata=" + St, "write"); # use "append" mode to append data to existing file
Conexiune: Packet Parser → HTTP • Nume gazdă: shellyem-{MAC}.local
Îmbunătățiri posibile (9)
  • Power Factor — Power factor (0.00–1.00) per channel, available in /emeter/{i} and /status response. Not available via MQTT.
  • Measurement Validity — Boolean flag indicating if the measurement is valid. Available per channel in /emeter/{i}.
  • Per-Channel Configuration — CT ratio (ctrafos: 50/120), max_power limit, appliance_type. Could be exposed as service actions.
  • Reset Energy Counters — Resets accumulated energy data for both channels. Available via HTTP GET and MQTT command topic.
  • Auto-off Timer — Auto-off timer in seconds on relay endpoint. Could be added as service action parameter.
  • WiFi Signal Strength — WiFi RSSI in dBm, available in /status response
  • MQTT Real-time Power — Instantaneous power via MQTT (W). MQTT template uses energy+total topics instead.
  • MQTT Reactive Power — Reactive power via MQTT (VAR). HTTP template has it as service attribute, MQTT template does not.
  • MQTT Energy Returned — Energy returned to grid via MQTT (Wh). HTTP template has it as service attribute (backward), MQTT template does not.

Surse

Ați găsit o problemă la acest șablon de dispozitiv?

Spuneți-ne ce nu funcționează, ce lipsește sau cum ar trebui să se comporte șablonul. Feedbackul dvs. ne ajută să păstrăm catalogul corect.

Verificat de TapHome

Doriți să folosiți acest șablon în TapHome Core?

Deschideți acest șablon în Customer Portal pentru a-l aplica într-una dintre locuințele dvs. sau pentru a propune o îmbunătățire și a o trimite înapoi în catalog.

Deschideți în portal