TapHome

Shelly 3EM MQTT

Packet Parser → MQTT
Autor
Posljednje ažuriranje: 10. 2026

Ovaj uređaj podržava mDNS

Umjesto IP adrese uređaju možete pristupiti na adresi:

shelly3em-{MAC}.local

Zamijenite {MAC} MAC adresom svog uređaja (velika slova, bez dvotočaka).

TapHome podržava mDNS. Naziv računala (hostname) pouzdaniji je od statične IP adrese.

Shelly 3EM MQTT

Shelly 3EM trofazno je Wi-Fi brojilo energije iz prve generacije uređaja Shelly (Gen1). Pomoću trojih priloženih rastavljivih strujnih kliješta od 120 A za svaku od tri faze zasebno mjeri djelatnu snagu, napon, struju, faktor snage i ukupnu energiju od početka rada uređaja, a ima i ugrađeni relej od 10 A koji obično upravlja svitkom vanjskog sklopnika. TapHome s uređajem komunicira preko MQTT: uređaj šalje mjerenja po fazama brokeru, a modul TapHome PacketParser pretplaćuje se na stablo tema shellies/# i prosljeđuje vrijednosti na četiri podređena uređaja (3 brojila energije + 1 sklopka sklopnika).

Ovo je MQTT varijanta predloška Shelly 3EM. Dostupna je i HTTP varijanta. MQTT odaberite kada već imate lokalni MQTT broker, želite ažuriranja koja uređaj sam šalje umjesto periodičnog očitavanja ili brojilo treba dijeliti s više korisnika podataka (TapHome i neki drugi sustav). Imajte na umu da uključivanje MQTT-a na firmveru Gen1 isključuje Shelly Cloud, pa oboje ne može raditi istodobno.

Konfiguracija

Uključivanje MQTT-a na uređaju Shelly 3EM

Otvorite web-sučelje uređaja Shelly 3EM (http://{device-ip} ili http://shelly3em-{MAC}.local) i postavite MQTT klijent:

  1. Idite na Internet & Security → Advanced - Developer Settings
  2. Označite Enable action execution via MQTT
  3. U polje Server upišite {MQTT broker IP address}:{port}, obično 192.168.1.10:1883
  4. (Neobavezno) Ako broker zahtijeva autentifikaciju, postavite Username i Password
  5. Kliknite SAVE. Uređaj se ponovno pokreće i spaja na broker

Uređaji Shelly Gen1 ne podržavaju MQTT preko TLS-a. Komunikacija između uređaja i brokera odvija se nešifriranim TCP-om na portu 1883. Korisničko ime i lozinka šalju se kao običan tekst. MQTT broker koristite samo u pouzdanoj lokalnoj mreži.

Uključivanje MQTT-a na firmveru Gen1 automatski isključuje Shelly Cloud. Za povratak odznačite opciju MQTT i ponovno uključite Cloud u izborniku Internet & Security.

Pronalaženje Device ID-a

Predložak TapHome pretplaćuje se na shellies/shellyem3-{dID}/#, gdje je {dID} završetak MAC adrese uređaja koji se koristi kao prefiks MQTT teme.

Kako ga pronaći u web-sučelju uređaja Shelly 3EM:

  1. U pregledniku otvorite web-sučelje uređaja
  2. Idite na Settings → Device Info
  3. Kopirajte prvi niz znakova uz Device ID (NE vrijednost u zagradama). On odgovara Wi-Fi MAC adresi (npr. DC4F227649A1)

Druga je mogućnost poslati upit GET http://{device-ip}/settings i pročitati polje mqtt.id.

Postavljanje predloška

Nakon uvoza predloška u TapHome postavite tri parametra uvoza:

ParametarOpisPrimjer
IpAddressIP adresa MQTT brokera192.168.1.10
PortPort MQTT brokera1883
dIDDevice ID (završetak MAC adrese) uređaja Shelly 3EMDC4F227649A1

Modul se zatim pretplaćuje na shellies/# (QoS 0), a skripte za primanje poruka usmjeravaju poruke emeter i relay za pojedine faze na odgovarajuće podređene uređaje. Zadano razdoblje slanja MQTT ažuriranja na uređaju je 30 sekundi. Može se skratiti preko GET http://{device-ip}/settings?mqtt_update_period=N (vrijednost 0 znači objavu samo pri promjeni).

Prefiks MQTT teme u porukama je shellyem3-{MAC}, a mDNS naziv hosta uređaja je shelly3em-{MAC}.local. Shelly za isti uređaj koristi dva različita oblika. Predložak prati stvarni prefiks MQTT teme (shellyem3-). Ako MQTT poruke ne stižu, MQTT klijentom se pretplatite na shellies/# i provjerite koji prefiks firmver koristi.

Mogućnosti uređaja

Djelatna snaga i ukupna energija po fazama

Predložak stvara tri brojila energije, po jedno za svaku fazu (strujna kliješta 1 → faza A, kliješta 2 → faza B, kliješta 3 → faza C). Svako brojilo čita dvije vrijednosti:

  • Djelatna snaga — trenutačna snaga iz shellies/shellyem3-{dID}/emeter/{i}/power (W), podijeljena s 1000 i spremljena u kW
  • Ukupna potrošena energija — ukupna energija od početka rada uređaja iz .../emeter/{i}/total (Wh), podijeljena s 1000 i spremljena u kWh

Svaka strujna kliješta imaju nazivnu struju 120 A i ne zahtijevaju zahvat u instalaciju (stavljaju se oko vodiča, vodič nije potrebno prekidati). Troja priložena strujna kliješta pojedinačno su označena i kalibrirana, pa se NE mogu međusobno zamijeniti između kanala.

Električni parametri po fazama

Svako brojilo energije ima četiri servisna atributa za napredno praćenje:

  • Napon (V) — efektivna vrijednost faznog napona (faza–N) na toj fazi (.../emeter/{i}/voltage)
  • Struja (A) — efektivna vrijednost struje koju mjere pripadajuća strujna kliješta (.../emeter/{i}/current)
  • Faktor snage — omjer djelatne i prividne snage, raspon −1,00 do 1,00 (.../emeter/{i}/pf)
  • Predana energija (Wh) — ukupna energija predana u mrežu na toj fazi od početka rada uređaja (.../emeter/{i}/total_returned), korisno za solarne elektrane i dvosmjerno mjerenje

Kombinacija vrijednosti total (potrošena) i total_returned (predana) po fazama čini predložak prikladnim za instalacije sa solarnom elektranom i predajom u mrežu.

Poništavanje brojača energije

Svaka faza ima servisnu radnju Poništi brojače koja objavljuje reset_totals na shellies/shellyem3-{dID}/emeter/{i}/command. Time se na nulu vraćaju oba brojača, total i total_returned, za tu fazu, što je korisno kada se brojilo koristi za drugu namjenu ili počinje novo razdoblje mjerenja.

Relej sklopnika

Ugrađeni relej od 10 A prikazuje se kao sklopka. Stanje se čita iz shellies/shellyem3-{dID}/relay/0 (on → 1, sve ostalo → 0), a relejem se upravlja objavom on ili off na .../relay/0/command. Relej ima nazivne vrijednosti 10 A / 240 V AC i obično se spaja preko stezaljki I (ulaz faze) i O (izlaz releja) kako bi upravljao svitkom vanjskog sklopnika za uključivanje i isključivanje većih trošila.

MQTT predložak ne objavljuje zbroj snage sve tri faze (total_power je na uređajima Gen1 dostupan samo preko HTTP-a). Ako vam treba jedna vrijednost ukupne snage kućanstva, u sustavu TapHome izradite virtualni uređaj koji zbraja tri vrijednosti snage po fazama.

Rješavanje problema

Ne stižu MQTT poruke
  1. Provjerite je li MQTT uključen u web-sučelju Shelly (Internet & Security → Advanced - Developer Settings → Enable action execution via MQTT) i je li se uređaj nakon spremanja ponovno pokrenuo
  2. Provjerite odgovaraju li IP adresa i port brokera na uređaju parametrima uvoza IpAddress/Port u sustavu TapHome
  3. MQTT klijentom (npr. MQTT Explorer, mosquitto_sub) pretplatite se na shellies/# i provjerite objavljuje li uređaj išta. Provjerite odgovara li stvarni prefiks teme (shellyem3-{dID}) vrijednosti dID koju ste unijeli u TapHome
  4. Provjerite radi li MQTT broker i je li dostupan i uređaju Shelly 3EM i centralnoj jedinici TapHome Core
  5. Ako se IP adresa uređaja nedavno promijenila, pokušajte se spojiti na mDNS naziv hosta shelly3em-{MAC}.local kako biste provjerili je li uređaj dostupan u mreži
Očitanja energije pokazuju nulu ili nevjerojatne vrijednosti
  1. Provjerite jesu li sva strujna kliješta spojena na ispravan ulaz: kliješta označena s IA moraju biti spojena na stezaljke IA-/IA+, IB na IB-/IB+, IC na IC-/IC+. Kliješta su kalibrirana za pojedini kanal i ne mogu se međusobno zamijeniti.
  2. Provjerite pokazuje li strelica na kućištu strujnih kliješta u smjeru toka struje (od izvora prema trošilu). Obrnuto postavljena kliješta daju negativan faktor snage, a potrošnja se razvrstava kao predaja i obratno.
  3. Provjerite jesu li naponski ulazi VA, VB, VC spojeni na iste faze koje mjere strujna kliješta. Neusklađeni parovi napona i struje daju pogrešna očitanja snage i faktora snage.
  4. Ako jedna faza pokazuje nulu, a ostale su ispravne, zamijenite ta strujna kliješta ispravnima kako biste utvrdili je li problem u kliještima ili u strujnom krugu.
MQTT se ne može uključiti — koristi se Cloud

Na firmveru Gen1 MQTT i Shelly Cloud međusobno se isključuju. Ako je potvrdni okvir Enable action execution via MQTT zasivljen, najprije isključite Shelly Cloud pod Internet & Security → Cloud, a zatim ponovno otvorite postavke MQTT-a.

Povijest u usluzi Shelly Cloud nestala je nakon uključivanja MQTT-a

To je očekivano: uključivanje MQTT-a isključuje Cloud, uključujući i čuvanje povijesti od 365 dana. Ako vam u sustavu TapHome treba i upravljanje u stvarnom vremenu preko MQTT-a i dugoročna povijest, usmjerite MQTT poruke preko vlastitog brokera, a povijesne podatke čuvajte u sustavu TapHome (ili u zasebnom sustavu za bilježenje).

Strujna kliješta uvijek najprije spojite na stezaljke uređaja Shelly 3EM, a tek zatim ih stavite oko vodiča pod naponom. Napon induciran na otvorenom sekundarnom namotu strujnog transformatora može doseći opasnu razinu i oštetiti kliješta.

Kako ga instalirati u TapHome

Preduvjeti

  • Uređaj Shelly spojen na Wi-Fi (2,4 GHz), npr. putem aplikacije Shelly ili vlastite pristupne točke uređaja
  • MQTT broker koji radi u vašoj lokalnoj mreži (npr. Mosquitto, Home Assistant ili ugrađeni broker TapHome)
  • TapHome CCU u istoj mreži kao broker

Na uređajima Gen1 uključivanje MQTT-a isključuje Shelly Cloud. MQTT i Shelly Cloud ne mogu raditi istodobno. Na uređajima Gen2/Plus to ograničenje ne vrijedi.

Korak 1 — Uključite MQTT na uređaju Shelly

Uređaji Gen1 (Shelly 1, 1PM, 2.5, EM, 3EM, Plug S, RGBW2, Dimmer, TRV…)

  1. Otvorite web-sučelje Shelly: http://<device-ip>/
  2. Idite na Internet & Security → Advanced — MQTT
  3. Uključite MQTT
  4. Postavite MQTT Server: <broker-ip>:<port> (npr. 192.168.1.10:1883)
  5. Ako vaš broker zahtijeva autentifikaciju, postavite MQTT User i MQTT Password
  6. Kliknite Save — uređaj će se ponovno pokrenuti i spojiti na broker

Uređaji Gen2 / Plus (Shelly Plus 1, Plus 1PM, Plus 2PM, Plus Plug S, Plus H&T, Pro 3EM…)

  1. Otvorite web-sučelje Shelly: http://<device-ip>/
  2. Idite na Settings → MQTT
  3. Uključite MQTT
  4. Postavite Server: <broker-ip>:<port> (npr. 192.168.1.10:1883)
  5. Client ID je unaprijed popunjen ID-jem uređaja (npr. shellyplus1pm-AABBCCDDEE) — ostavite ga takvim, osim ako ga iz određenog razloga trebate promijeniti
  6. Kliknite Save i ponovno pokrenite uređaj

Za provjeru rada MQTT-a koristite MQTT klijent (npr. MQTT Explorer) i pretplatite se na shellies/# (Gen1) ili <device-id>/# (Gen2). Trebali biste vidjeti statusne poruke uređaja.

Korak 2 — Pronađite Device ID / MQTT Client ID

Neki predlošci zahtijevaju parametar Device ID ili MQTT Client ID. To je jedinstveni identifikator koji se koristi u MQTT temama (topics).

  • Gen1: nalazi se na naljepnici kao MAC adresa (npr. AABBCCDDEE). Device ID = shelly<model>-<mac>, npr. shelly1pm-AABBCCDDEE
  • Gen2/Plus: nalazi se u web-sučelju Shelly pod Settings → Device Info → Device ID ili na naljepnici uređaja

Korak 3 — Konfiguracija u sustavu TapHome

  1. U sustavu TapHome dodajte novi modul Packet Parser (MQTT)
  2. IP adresa: unesite IP adresu MQTT brokera (npr. 192.168.1.10)
  3. Port: 1883 (zadano; za TLS koristite 8883)
  4. Device ID / MQTT Client ID: unesite vrijednost iz koraka 2 (ako je predložak zahtijeva)
  5. Uvezite predložak — TapHome će se automatski pretplatiti na teme uređaja

Dostupni uređaji

Shelly 3EM MQTT Modul
Prilagođene varijable
dID (string)Završetak MAC adrese uređaja Shelly 3EM koji čini prefiks MQTT teme shellies/shellyem3-{dID}/... — pronađite ga u web-sučelju Shelly → Settings → Device Info (prvi niz znakova, NE vrijednost u zagradama)
Open Shelly 3EM web UI → Settings → Device Info → copy the first Device ID string (NOT the value in brackets); equals the WiFi MAC address (e.g. DC4F227649A1)
Brojilo energije (faza 1) Brojilo električne energije Samo za čitanje

Djelatna snaga (kW) i ukupna energija od početka rada uređaja (kWh) na fazi A — čita se sa strujnih kliješta 1, uz pretvorbu W→kW i Wh→kWh

numeric Jedinica: kW / kWh
Servisni atributi
Predana energijaUkupna energija predana u mrežu na fazi A od početka rada uređaja (Wh) — korisno za solarne elektrane i dvosmjerno mjerenje
NaponEfektivna vrijednost faznog napona (faza–N) na fazi A (V)
StrujaEfektivna vrijednost struje koju mjere strujna kliješta 1 (A)
Faktor snageFaktor snage na fazi A — omjer djelatne i prividne snage, raspon −1,00 do 1,00
Servisne radnje
Poništi brojačeVraća na nulu oba brojača energije, total i total_returned, za fazu A

Brojilo energije (faza 1)

Čitanje ukupne potrošnje
# Simple HTTP Request:
# VAR response := SENDHTTPREQUEST("/example/getValue");
# IF response.IsSuccess
#  VAR content := response.Content;
#  VAR responseHeaders := response.Headers;
#  RETURN(PARSEXML(content, "//element1/value1"));
# ELSE
#  ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
#  RETURN(NaN);
# END
#
# Set Http request method, body and headers
# VAR response := SENDHTTPREQUEST("/example/getValue", "GET", "some data", "header1:value1", "header2:value2", ...);
# OR
# VAR request := HTTPREQUEST("/example/getValue", "POST", "some data");
# request.headers := { "header1:value1", "header2:value2", ...};
# request.method := "GET";
# request.data := null;
# VAR response := SENDHTTPREQUEST(request);
#
#
# Send TCP, UDP data:
# VAR data1 := BYTECOLLECTION("0a bb ea df 01");
# SENDDATA(data1);
# VAR data2 := "{\"name\":\"John\", \"age\":32}";
# SENDDATA(data2);
# VAR data3 := TOBYTES("{\"name\":\"John\", \"age\":32}", "iso-8859-1");
# SENDDATA(data3);
# Process received TCP or UDP data and set device values in the Listener script
#
#
# Download data from FTP:
# FTPDOWNLOAD("filePath");
Čitanje zahtjeva
# Simple HTTP Request:
# VAR response := SENDHTTPREQUEST("/example/getValue");
# IF response.IsSuccess
#  VAR content := response.Content;
#  VAR responseHeaders := response.Headers;
#  RETURN(PARSEXML(content, "//element1/value1"));
# ELSE
#  ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
#  RETURN(NaN);
# END
#
# Set Http request method, body and headers
# VAR response := SENDHTTPREQUEST("/example/getValue", "GET", "some data", "header1:value1", "header2:value2", ...);
# OR
# VAR request := HTTPREQUEST("/example/getValue", "POST", "some data");
# request.headers := { "header1:value1", "header2:value2", ...};
# request.method := "GET";
# request.data := null;
# VAR response := SENDHTTPREQUEST(request);
#
#
# Send TCP, UDP data:
# VAR data1 := BYTECOLLECTION("0a bb ea df 01");
# SENDDATA(data1);
# VAR data2 := "{\"name\":\"John\", \"age\":32}";
# SENDDATA(data2);
# VAR data3 := TOBYTES("{\"name\":\"John\", \"age\":32}", "iso-8859-1");
# SENDDATA(data3);
# Process received TCP or UDP data and set device values in the Listener script
#
#
# Download data from FTP:
# FTPDOWNLOAD("filePath");
Listener
IF(RECEIVEDMSG.TOPIC = "shellies/shellyem3-"+dID+"/emeter/0/power")
 Ed := todouble(TOSTRING(RECEIVEDMSG.PAYLOAD))/1000;
elseif(RECEIVEDMSG.TOPIC = "shellies/shellyem3-"+dID+"/emeter/0/total")
 To := todouble(TOSTRING(RECEIVEDMSG.PAYLOAD))/1000;
END
Servisni atributi
returned energy [Wh]
IF(parsejson(x, "Topic") = "shellies/shellyem3-"+dID+"/emeter/0/total_returned")
 return(parsejson(x, "Payload"));
END
voltage [V]
IF(parsejson(x, "Topic") = "shellies/shellyem3-"+dID+"/emeter/0/voltage")
 return(todouble(parsejson(x, "Payload")));
END
current [A]
IF(parsejson(x, "Topic") = "shellies/shellyem3-"+dID+"/emeter/0/current")
 return(todouble(parsejson(x, "Payload")));
END
power factor
IF(parsejson(x, "Topic") = "shellies/shellyem3-"+dID+"/emeter/0/pf")
 return(todouble(parsejson(x, "Payload")));
END
Servisne radnje
Reset total
mqttpublish("shellies/shellyem3-"+dID+"/emeter/0/command", "reset_totals");
Brojilo energije (faza 2) Brojilo električne energije Samo za čitanje

Djelatna snaga (kW) i ukupna energija od početka rada uređaja (kWh) na fazi B — čita se sa strujnih kliješta 2, uz pretvorbu W→kW i Wh→kWh

numeric Jedinica: kW / kWh
Servisni atributi
Predana energijaUkupna energija predana u mrežu na fazi B od početka rada uređaja (Wh) — korisno za solarne elektrane i dvosmjerno mjerenje
NaponEfektivna vrijednost faznog napona (faza–N) na fazi B (V)
StrujaEfektivna vrijednost struje koju mjere strujna kliješta 2 (A)
Faktor snageFaktor snage na fazi B — omjer djelatne i prividne snage, raspon −1,00 do 1,00
Servisne radnje
Poništi brojačeVraća na nulu oba brojača energije, total i total_returned, za fazu B

Brojilo energije (faza 2)

Čitanje ukupne potrošnje
# Simple HTTP Request:
# VAR response := SENDHTTPREQUEST("/example/getValue");
# IF response.IsSuccess
#  VAR content := response.Content;
#  VAR responseHeaders := response.Headers;
#  RETURN(PARSEXML(content, "//element1/value1"));
# ELSE
#  ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
#  RETURN(NaN);
# END
#
# Set Http request method, body and headers
# VAR response := SENDHTTPREQUEST("/example/getValue", "GET", "some data", "header1:value1", "header2:value2", ...);
# OR
# VAR request := HTTPREQUEST("/example/getValue", "POST", "some data");
# request.headers := { "header1:value1", "header2:value2", ...};
# request.method := "GET";
# request.data := null;
# VAR response := SENDHTTPREQUEST(request);
#
#
# Send TCP, UDP data:
# VAR data1 := BYTECOLLECTION("0a bb ea df 01");
# SENDDATA(data1);
# VAR data2 := "{\"name\":\"John\", \"age\":32}";
# SENDDATA(data2);
# VAR data3 := TOBYTES("{\"name\":\"John\", \"age\":32}", "iso-8859-1");
# SENDDATA(data3);
# Process received TCP or UDP data and set device values in the Listener script
#
#
# Download data from FTP:
# FTPDOWNLOAD("filePath");
Čitanje zahtjeva
# Simple HTTP Request:
# VAR response := SENDHTTPREQUEST("/example/getValue");
# IF response.IsSuccess
#  VAR content := response.Content;
#  VAR responseHeaders := response.Headers;
#  RETURN(PARSEXML(content, "//element1/value1"));
# ELSE
#  ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
#  RETURN(NaN);
# END
#
# Set Http request method, body and headers
# VAR response := SENDHTTPREQUEST("/example/getValue", "GET", "some data", "header1:value1", "header2:value2", ...);
# OR
# VAR request := HTTPREQUEST("/example/getValue", "POST", "some data");
# request.headers := { "header1:value1", "header2:value2", ...};
# request.method := "GET";
# request.data := null;
# VAR response := SENDHTTPREQUEST(request);
#
#
# Send TCP, UDP data:
# VAR data1 := BYTECOLLECTION("0a bb ea df 01");
# SENDDATA(data1);
# VAR data2 := "{\"name\":\"John\", \"age\":32}";
# SENDDATA(data2);
# VAR data3 := TOBYTES("{\"name\":\"John\", \"age\":32}", "iso-8859-1");
# SENDDATA(data3);
# Process received TCP or UDP data and set device values in the Listener script
#
#
# Download data from FTP:
# FTPDOWNLOAD("filePath");
Listener
IF(RECEIVEDMSG.TOPIC = "shellies/shellyem3-"+dID+"/emeter/1/power")
 Ed := todouble(TOSTRING(RECEIVEDMSG.PAYLOAD))/1000;
 elseif(RECEIVEDMSG.TOPIC = "shellies/shellyem3-"+dID+"/emeter/1/total")
 To := todouble(TOSTRING(RECEIVEDMSG.PAYLOAD))/1000;
END
Servisni atributi
total returned [Wh]
IF(parsejson(x, "Topic") = "shellies/shellyem3-"+dID+"/emeter/1/total_returned")
 return(todouble(parsejson(x, "Payload")));
END
voltage [V]
IF(parsejson(x, "Topic") = "shellies/shellyem3-"+dID+"/emeter/1/voltage")
 return(todouble(parsejson(x, "Payload")));
END
current [A]
IF(parsejson(x, "Topic") = "shellies/shellyem3-"+dID+"/emeter/1/current")
 return(todouble(parsejson(x, "Payload")));
END
power factor
IF(parsejson(x, "Topic") = "shellies/shellyem3-"+dID+"/emeter/1/pf")
 return(todouble(parsejson(x, "Payload")));
END
Servisne radnje
Reset total
mqttpublish("shellies/shellyem3-"+dID+"/emeter/1/command", "reset_totals");
Brojilo energije (faza 3) Brojilo električne energije Samo za čitanje

Djelatna snaga (kW) i ukupna energija od početka rada uređaja (kWh) na fazi C — čita se sa strujnih kliješta 3, uz pretvorbu W→kW i Wh→kWh

numeric Jedinica: kW / kWh
Servisni atributi
Predana energijaUkupna energija predana u mrežu na fazi C od početka rada uređaja (Wh) — korisno za solarne elektrane i dvosmjerno mjerenje
NaponEfektivna vrijednost faznog napona (faza–N) na fazi C (V)
StrujaEfektivna vrijednost struje koju mjere strujna kliješta 3 (A)
Faktor snageFaktor snage na fazi C — omjer djelatne i prividne snage, raspon −1,00 do 1,00
Servisne radnje
Poništi brojačeVraća na nulu oba brojača energije, total i total_returned, za fazu C

Brojilo energije (faza 3)

Čitanje ukupne potrošnje
# Simple HTTP Request:
# VAR response := SENDHTTPREQUEST("/example/getValue");
# IF response.IsSuccess
#  VAR content := response.Content;
#  VAR responseHeaders := response.Headers;
#  RETURN(PARSEXML(content, "//element1/value1"));
# ELSE
#  ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
#  RETURN(NaN);
# END
#
# Set Http request method, body and headers
# VAR response := SENDHTTPREQUEST("/example/getValue", "GET", "some data", "header1:value1", "header2:value2", ...);
# OR
# VAR request := HTTPREQUEST("/example/getValue", "POST", "some data");
# request.headers := { "header1:value1", "header2:value2", ...};
# request.method := "GET";
# request.data := null;
# VAR response := SENDHTTPREQUEST(request);
#
#
# Send TCP, UDP data:
# VAR data1 := BYTECOLLECTION("0a bb ea df 01");
# SENDDATA(data1);
# VAR data2 := "{\"name\":\"John\", \"age\":32}";
# SENDDATA(data2);
# VAR data3 := TOBYTES("{\"name\":\"John\", \"age\":32}", "iso-8859-1");
# SENDDATA(data3);
# Process received TCP or UDP data and set device values in the Listener script
#
#
# Download data from FTP:
# FTPDOWNLOAD("filePath");
Čitanje zahtjeva
# Simple HTTP Request:
# VAR response := SENDHTTPREQUEST("/example/getValue");
# IF response.IsSuccess
#  VAR content := response.Content;
#  VAR responseHeaders := response.Headers;
#  RETURN(PARSEXML(content, "//element1/value1"));
# ELSE
#  ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
#  RETURN(NaN);
# END
#
# Set Http request method, body and headers
# VAR response := SENDHTTPREQUEST("/example/getValue", "GET", "some data", "header1:value1", "header2:value2", ...);
# OR
# VAR request := HTTPREQUEST("/example/getValue", "POST", "some data");
# request.headers := { "header1:value1", "header2:value2", ...};
# request.method := "GET";
# request.data := null;
# VAR response := SENDHTTPREQUEST(request);
#
#
# Send TCP, UDP data:
# VAR data1 := BYTECOLLECTION("0a bb ea df 01");
# SENDDATA(data1);
# VAR data2 := "{\"name\":\"John\", \"age\":32}";
# SENDDATA(data2);
# VAR data3 := TOBYTES("{\"name\":\"John\", \"age\":32}", "iso-8859-1");
# SENDDATA(data3);
# Process received TCP or UDP data and set device values in the Listener script
#
#
# Download data from FTP:
# FTPDOWNLOAD("filePath");
Listener
IF(RECEIVEDMSG.TOPIC = "shellies/shellyem3-"+dID+"/emeter/2/power")
 Ed := todouble(TOSTRING(RECEIVEDMSG.PAYLOAD))/1000;
 elseif(RECEIVEDMSG.TOPIC = "shellies/shellyem3-"+dID+"/emeter/2/total")
 To := todouble(TOSTRING(RECEIVEDMSG.PAYLOAD))/1000;
END
Servisni atributi
total returned [Wh]
IF(parsejson(x, "Topic") = "shellies/shellyem3-"+dID+"/emeter/2/total_returned")
 return(todouble(parsejson(x, "Payload")));
END
voltage [V]
IF(parsejson(x, "Topic") = "shellies/shellyem3-"+dID+"/emeter/2/voltage")
 return(todouble(parsejson(x, "Payload")));
END
current [A]
IF(parsejson(x, "Topic") = "shellies/shellyem3-"+dID+"/emeter/2/current")
 return(todouble(parsejson(x, "Payload")));
END
Power Factor
IF(parsejson(x, "Topic") = "shellies/shellyem3-"+dID+"/emeter/2/pf")
 return(todouble(parsejson(x, "Payload")));
END
Servisne radnje
reset total
mqttpublish("shellies/shellyem3-"+dID+"/emeter/2/command", "reset_totals");
Relej sklopnika Sklopka

Ugrađeni relej od 10 A — obično spojen preko stezaljki I/O za upravljanje svitkom vanjskog sklopnika

boolean
Vrijednosti / stanja: ON · OFF

Relej sklopnika

Čitanje stanja sklopke
# Simple HTTP Request:
# VAR response := SENDHTTPREQUEST("/example/getValue");
# IF response.IsSuccess
#  VAR content := response.Content;
#  VAR responseHeaders := response.Headers;
#  RETURN(PARSEXML(content, "//element1/value1"));
# ELSE
#  ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
#  RETURN(NaN);
# END
#
# Set Http request method, body and headers
# VAR response := SENDHTTPREQUEST("/example/getValue", "GET", "some data", "header1:value1", "header2:value2", ...);
# OR
# VAR request := HTTPREQUEST("/example/getValue", "POST", "some data");
# request.headers := { "header1:value1", "header2:value2", ...};
# request.method := "GET";
# request.data := null;
# VAR response := SENDHTTPREQUEST(request);
#
#
# Send TCP, UDP data:
# VAR data1 := BYTECOLLECTION("0a bb ea df 01");
# SENDDATA(data1);
# VAR data2 := "{\"name\":\"John\", \"age\":32}";
# SENDDATA(data2);
# VAR data3 := TOBYTES("{\"name\":\"John\", \"age\":32}", "iso-8859-1");
# SENDDATA(data3);
# Process received TCP or UDP data and set device values in the Listener script
#
#
# Download data from FTP:
# FTPDOWNLOAD("filePath");
Zapis stanja sklopke
# Simple HTTP Request:
MQTTPUBLISH("shellies/shellyem3-"+dID+"/relay/0/command", switch(St,1,"on","off"));
# VAR response := SENDHTTPREQUEST("/example/set/value=" + St);
# 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
Listener
# Parse received bytes:
IF(RECEIVEDMSG.TOPIC = "shellies/shellyem3-"+dID+"/relay/0")
 St := switch(TOSTRING(RECEIVEDMSG.PAYLOAD),"on",1,0);
END
Povezivanje: Packet Parser → MQTT • Naziv računala (hostname): shelly3em-{MAC}.local
Moguća poboljšanja (10)
  • Reactive Power (per phase) — Instantaneous reactive power in VAR per phase — useful for power-quality diagnostics.
  • Short-term Energy Counter — Watt-minute counter since boot (volatile). Template uses lifetime 'total' instead.
  • Short-term Returned Energy — Watt-minute returned counter since boot (volatile).
  • Contactor Coil Power — Power draw through the on-board relay (small — coil only).
  • Contactor Coil Energy — Energy through the on-board relay (Wm).
  • Connection Status (LWT) — Last-Will-and-Testament topic — true on connect, false retained on disconnect. Could detect offline 3EM.
  • Device Announcement (JSON) — Periodic JSON announce containing id, mac, ip, fw_ver, new_fw, model.
  • Full Status JSON — Complete /status payload as JSON — could expose Wi-Fi RSSI, internal temperature, all 4 emeter channels.
  • 4th CT — Theft / Leakage Detection — Optional 4th split-core CT on IN+/IN- terminal for neutral leakage / energy-theft detection. NOT published over MQTT — only HTTP.
  • Total Active Power — 3EM does not publish total_power over MQTT (only HTTP). Sum the three phase Ed values in a TapHome virtual device.

Izvori

Pronašli ste problem s ovim predloškom uređaja?

Recite nam što ne radi, što nedostaje ili kako bi se predložak trebao ponašati. Vaše povratne informacije pomažu nam da katalog bude točan.

Provjerio TapHome

Želite ovo koristiti u svojoj centralnoj jedinici TapHome Core?

Otvorite ovaj predložak na portalu Customer Portal kako biste ga primijenili na jedan od svojih domova ili predložili poboljšanje i poslali ga natrag u katalog.

Otvorite na portalu