TapHome

Shelly 3EM MQTT

Packet Parser → MQTT
Beküldő
Utoljára frissítve: 06. 2026
Shelly 3EM MQTT

A Shelly 3EM egy 3-fázisú Wi-Fi villanymérő a Shelly első generációs (Gen1) eszközcsaládjából. Hatásos teljesítményt, feszültséget, áramot, teljesítménytényezőt és élettartamra vetített energiát mér mind a három fázishoz külön, a mellékelt három 120 A-es osztott magvú CT bilinccsel, és tartalmaz egy beépített 10 A-es relét, amely jellemzően egy külső teljesítmény-mágneskapcsoló tekercsének vezérlésére szolgál. A TapHome MQTT-n keresztül kommunikál az eszközzel — az eszköz a fázisonkénti méréseket egy brókerre küldi, a TapHome PacketParser modul a shellies/# topic-fára iratkozik fel, és az értékeket négy gyermek-eszközhöz továbbítja (3 villanymérő + 1 mágneskapcsoló-kapcsoló).

Ez a Shelly 3EM sablon MQTT változata. HTTP változat is elérhető — válaszd az MQTT-t, ha már fut helyi MQTT bróker, push alapú frissítéseket szeretnél polling helyett, vagy a mérőt több fogyasztóval kell megosztanod (TapHome plusz egy másik rendszer). Az MQTT engedélyezése Gen1 firmware-en letiltja a Shelly Cloud-ot — a kettő nem futhat egyszerre.

Konfiguráció

MQTT engedélyezése a Shelly 3EM-en

Nyisd meg a Shelly 3EM webes felületét (http://{device-ip} vagy http://shelly3em-{MAC}.local), és állítsd be az MQTT klienst:

  1. Lépj a Internet & SecurityAdvanced - Developer Settings menübe
  2. Pipáld be az Enable action execution via MQTT opciót
  3. A Server mezőbe írd: {MQTT bróker IP címe}:{port} — jellemzően 192.168.1.10:1883
  4. (Opcionális) Add meg a Username és Password mezőket, ha a bróker hitelesítést igényel
  5. Kattints a SAVE gombra — az eszköz újraindul, és csatlakozik a brókerhez

A Gen1 Shelly eszközök nem támogatják az MQTT-t TLS-en keresztül. Az eszköz és a bróker közötti kommunikáció titkosítatlan plain TCP a 1883-as porton. A felhasználónév és jelszó nyílt szövegben kerül átküldésre. Az MQTT brókert csak megbízható helyi hálózaton használd.

Az MQTT engedélyezése automatikusan letiltja a Shelly Cloud-ot Gen1 firmware-en. A visszaállításhoz vedd ki a pipát az MQTT-nél, és kapcsold vissza a Cloud-ot az Internet & Security menüben.

A Device ID megkeresése

A TapHome sablon a shellies/shellyem3-{dID}/# topicra iratkozik fel, ahol a {dID} az eszköz MAC suffixe, amelyet MQTT topic prefixként használ.

A Shelly 3EM webes felületén:

  1. Nyisd meg az eszköz webes felületét böngészőben
  2. Lépj a SettingsDevice Info menübe
  3. Másold ki az első Device ID szöveget (NE a zárójelben lévő értéket) — ez egyenlő a WiFi MAC címével (pl. DC4F227649A1)

Alternatívaként hívd meg a GET http://{device-ip}/settings végpontot, és olvasd ki a mqtt.id mezőt.

Sablon beállítása

A sablon TapHome-ba importálása után állítsd be a három import paramétert:

ParaméterLeírásPélda
IpAddressMQTT bróker IP címe192.168.1.10
PortMQTT bróker port1883
dIDA Shelly 3EM Device ID-ja (MAC suffix)DC4F227649A1

A modul ezután a shellies/# topicra iratkozik fel (QoS 0), és a listener szkriptek a fázisonkénti emeter és relay üzeneteket a megfelelő gyermek-eszközökhöz továbbítják. Az eszköz alapértelmezett MQTT frissítési periódusa 30 másodperc — csökkenthető a GET http://{device-ip}/settings?mqtt_update_period=N hívással (a 0 érték csak változáskor publikál).

A vonalon az MQTT topic prefix shellyem3-{MAC}, miközben az eszköz mDNS hostname-je shelly3em-{MAC}.local — a Shelly ugyanannak az eszköznek két különböző formát használ. A sablon a tényleges MQTT topic prefixet (shellyem3-) követi. Ha nem érkeznek MQTT üzenetek, iratkozz fel a shellies/#-re egy MQTT klienssel, és ellenőrizd, hogy a firmware milyen prefixet használ.

Eszköz képességei

Fázisonkénti hatásos teljesítmény és élettartamra vetített energia

A sablon három villanymérő-eszközt hoz létre — egyet minden fázisra (CT bilincs 1 → A fázis, bilincs 2 → B fázis, bilincs 3 → C fázis). Minden mérő két értéket olvas:

  • Hatásos teljesítmény — pillanatnyi teljesítmény a shellies/shellyem3-{dID}/emeter/{i}/power topicból (W), 1000-rel osztva és kW-ként tárolva
  • Összes elfogyasztott energia — élettartamra vetített kumulatív energia a .../emeter/{i}/total topicból (Wh), 1000-rel osztva és kWh-ként tárolva

Minden CT bilincs 120 A-re méretezett és nem invazív (rácsatolható, vezeték elvágása nélkül). A mellékelt 3 CT bilincs egyedileg jelölt és kalibrált — a csatornák között NEM cserélhetőek fel.

Fázisonkénti elektromos paraméterek

Minden villanymérő négy service attribútumot tesz elérhetővé fejlett monitoringhoz:

  • Feszültség [V] — RMS fázis-nullavezető feszültség az adott fázison (.../emeter/{i}/voltage)
  • Áram [A] — RMS áram, amelyet a megfelelő CT bilincs mér (.../emeter/{i}/current)
  • Teljesítménytényező — a hatásos és látszólagos teljesítmény aránya, tartomány −1.00 és 1.00 között (.../emeter/{i}/pf)
  • Visszatáplált energia [Wh] — élettartamra vetített energia, amelyet az adott fázison a hálózatba tápláltak vissza (.../emeter/{i}/total_returned), hasznos PV / kétirányú méréshez

A total (fogyasztott) és total_returned (exportált) kombinációja fázisonként alkalmassá teszi a sablont napelemes / hálózatra termelő telepítésekhez.

Energiaszámlálók nullázása

Minden fázishoz tartozik egy Reset Total service művelet, amely a reset_totals parancsot publikálja a shellies/shellyem3-{dID}/emeter/{i}/command topicra. Ez nullázza a total és total_returned számlálókat az adott fázishoz — hasznos a mérő áthelyezésekor vagy új mérési időszak indításakor.

Mágneskapcsoló relé

A beépített 10 A relé kapcsolóeszközként érhető el. Az állapot a shellies/shellyem3-{dID}/relay/0 topicból olvasható (on → 1, bármi más → 0), és on vagy off üzenetek .../relay/0/command topicra való publikálásával vezérelhető. A relé 10 A / 240 V AC-re méretezett, és jellemzően az I (fázisbemenet) és O (relé kimenet) sorkapcsokon keresztül kötik be egy külső teljesítmény-mágneskapcsoló tekercsének vezérlésére, nagyobb terhelések kapcsolásához.

Az MQTT sablon nem publikál 3-fázisú teljesítmény-összeget (a total_power Gen1-en csak HTTP-n érhető el). Ha egy egységes háztartási teljesítményértékre van szükséged, hozz létre TapHome-ban egy virtuális eszközt, amely összeadja a három fázisonkénti teljesítményt.

Hibaelhárítás

Nem érkeznek MQTT üzenetek
  1. Erősítsd meg, hogy az MQTT engedélyezve van a Shelly web UI-ban (Internet & SecurityAdvanced - Developer SettingsEnable action execution via MQTT), és az eszköz a mentés után újraindult
  2. Ellenőrizd, hogy a brókere IP címe és portja az eszközön megegyezik a TapHome IpAddress/Port import paramétereivel
  3. Iratkozz fel a shellies/#-re egy MQTT klienssel (pl. MQTT Explorer, mosquitto_sub), és nézd meg, publikál-e bármit az eszköz — ellenőrizd, hogy a tényleges topic prefix (shellyem3-{dID}) megegyezik a TapHome-ban beírt dID-val
  4. Győződj meg róla, hogy az MQTT bróker fut, és elérhető a Shelly 3EM-ből és a TapHome Core-ból egyaránt
  5. Ha az eszköz IP-je nemrég változott, próbálj a shelly3em-{MAC}.local mDNS hostnamen csatlakozni, hogy ellenőrizd az eszköz hálózati elérhetőségét
Az energiaértékek nullák vagy hihetetlenek
  1. Erősítsd meg, hogy minden CT bilincs a megfelelő bemenetre van kötve — az IA jelölésű bilincset az IA-/IA+, az IB-t az IB-/IB+, az IC-t az IC-/IC+ sorkapcsokra kell kötni. A bilincsek csatornánként vannak kalibrálva, és nem cserélhetőek.
  2. Ellenőrizd, hogy a CT bilincs testén lévő nyíl az áram folyásának irányába mutat (forrástól a terhelés felé). Egy fordítva felhelyezett bilincs negatív teljesítménytényezőt eredményez, és felcseréli a fogyasztás / visszatáplálás besorolást.
  3. Ellenőrizd, hogy a VA, VB, VC feszültségbemenetek azokra a fázisokra vannak kötve, amelyeket a CT bilincsek mérnek — a feszültség / áram nem megfelelő párosítása hibás teljesítmény- és teljesítménytényező-értékeket eredményez.
  4. Ha egyetlen fázis nullát mutat, miközben a többi rendben van, cseréld ki azt a CT bilincset egy ismerten működővel, hogy elkülöníthető legyen, hogy a bilincs vagy az áramkör hibás.
Az MQTT nem engedélyezhető — a Cloud aktív

Gen1 firmware-en az MQTT és a Shelly Cloud kölcsönösen kizárják egymást. Ha az Enable action execution via MQTT jelölőnégyzet szürkén jelenik meg, először tiltsd le a Shelly Cloud-ot az Internet & SecurityCloud menüben, majd nyisd meg újra az MQTT beállításokat.

Az MQTT engedélyezése után eltűnt a Shelly Cloud előzmény

Ez várt viselkedés — az MQTT engedélyezése letiltja a Cloud-ot, beleértve annak 365 napos előzmény-tárolását. Ha egyszerre van szükséged valós idejű MQTT-vezérlésre TapHome-ban és hosszú távú előzményre, irányítsd át az MQTT üzeneteket saját brókeren keresztül, és tartsd a történelmi adatokat TapHome-ban (vagy különálló naplózó rendszerben).

Minden CT bilincset mindig csatlakoztatni kell a Shelly 3EM sorkapcsaira, mielőtt rácsatolnád egy feszültség alatt lévő vezetékre. A nyitott CT szekunder tekercsén indukálódott feszültség veszélyes szintet érhet el, és károsíthatja a bilincset.

Telepítés a TapHome-ban

Előfeltételek

  • Shelly eszköz csatlakoztatva a Wi-Fi-hez (ha még nem, lásd a HTTP kapcsolódási útmutatót)
  • MQTT broker fut a helyi hálózaton (pl. Mosquitto, Home Assistant vagy a TapHome beépített brokere)
  • TapHome CCU ugyanazon a hálózaton, mint a broker

A Gen1 eszközökön az MQTT engedélyezése letiltja a Shelly Cloudot. A kettő nem futhat egyszerre. A Gen2/Plus eszközökön ez a korlátozás nem érvényes.

1. lépés — MQTT engedélyezése a Shelly eszközön

Gen1 eszközök (Shelly 1, 1PM, 2.5, EM, 3EM, Plug S, RGBW2, Dimmer, TRV…)

  1. Nyissa meg a Shelly webes felületet: http://<device-ip>/
  2. Navigáljon az Internet & SecurityAdvanced — MQTT menüpontra
  3. Engedélyezze az MQTT-t
  4. Állítsa be az MQTT Server-t: <broker-ip>:<port> (pl. 192.168.1.10:1883)
  5. Opcionálisan állítsa be az MQTT User és MQTT Password mezőket, ha a broker hitelesítést igényel
  6. Kattintson a Save gombra — az eszköz újraindul és csatlakozik a brokerhez

Gen2 / Plus eszközök (Shelly Plus 1, Plus 1PM, Plus 2PM, Plus Plug S, Plus H&T, Pro 3EM…)

  1. Nyissa meg a Shelly webes felületet: http://<device-ip>/
  2. Navigáljon a SettingsMQTT menüpontra
  3. Engedélyezze az MQTT-t
  4. Állítsa be a Server-t: <broker-ip>:<port> (pl. 192.168.1.10:1883)
  5. A Client ID előre ki van töltve az eszköz azonosítójával (pl. shellyplus1pm-AABBCCDDEE) — hagyja így, hacsak nincs konkrét oka a változtatásra
  6. Kattintson a Save gombra és indítsa újra az eszközt

Az MQTT működésének ellenőrzéséhez használjon egy MQTT klienst (pl. MQTT Explorer), és iratkozzon fel a shellies/# (Gen1) vagy <device-id>/# (Gen2) topikra. Látnia kell az eszköz állapotüzeneteit.

2. lépés — Device ID / MQTT Client ID megkeresése

Egyes sablonok Device ID vagy MQTT Client ID paramétert igényelnek. Ez az egyedi azonosító, amelyet az MQTT topikokban használnak.

  • Gen1: a címkén MAC-címként található (pl. AABBCCDDEE). Device ID = shelly<model>-<mac>, pl. shelly1pm-AABBCCDDEE
  • Gen2/Plus: a Shelly webes felületén a SettingsDevice InfoDevice ID alatt található, vagy az eszköz címkéjén

3. lépés — Konfigurálás a TapHome-ban

  1. A TapHome-ban adjon hozzá egy új Packet Parser (MQTT) modult
  2. IP Address: adja meg az MQTT broker IP-címét (pl. 192.168.1.10)
  3. Port: 1883 (alapértelmezett; TLS esetén használjon 8883-at)
  4. Device ID / MQTT Client ID: adja meg a 2. lépésben kapott értéket (ha a sablon megköveteli)
  5. Importálja a sablont — a TapHome automatikusan feliratkozik az eszköz topikjaira

Elérhető eszközök

Shelly 3EM MQTT Modul
Egyéni változók
dID (string)A Shelly 3EM MAC suffixe, amely a shellies/shellyem3-{dID}/... MQTT topic prefixet képezi — megtalálható a Shelly web UI-ban → Settings → Device Info (első szöveg, NEM a zárójelben lévő érték)
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)
Villamos mérő (1. fázis) Villanyóra Csak olvasható

Hatásos teljesítmény (kW) és élettartam-energia (kWh) az A fázison — az 1. CT bilincsről olvasva, W→kW és Wh→kWh átváltással

numeric Egység: kW / kWh
Szerviz attribútumok
Visszatáplált energiaAz A fázison a hálózatba visszatáplált összes energia (Wh) — hasznos PV / kétirányú méréshez
FeszültségRMS fázis-nullavezető feszültség az A fázison (V)
ÁramAz 1. CT bilincs által mért RMS áram (A)
TeljesítménytényezőTeljesítménytényező az A fázison — a hatásos és látszólagos teljesítmény aránya, tartomány −1.00 és 1.00 között
Szerviz műveletek
Összesítő nullázásNullázza az A fázis total és total_returned energiaszámlálóit

Villamos mérő (1. fázis)

Összes fogyasztás olvasása
# 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");
Igény olvasása
# 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");
Figyelő
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
Szerviz attribútumok
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
Szerviz műveletek
Reset total
mqttpublish("shellies/shellyem3-"+dID+"/emeter/0/command", "reset_totals");
Villamos mérő (2. fázis) Villanyóra Csak olvasható

Hatásos teljesítmény (kW) és élettartam-energia (kWh) a B fázison — a 2. CT bilincsről olvasva, W→kW és Wh→kWh átváltással

numeric Egység: kW / kWh
Szerviz attribútumok
Visszatáplált energiaA B fázison a hálózatba visszatáplált összes energia (Wh) — hasznos PV / kétirányú méréshez
FeszültségRMS fázis-nullavezető feszültség a B fázison (V)
ÁramA 2. CT bilincs által mért RMS áram (A)
TeljesítménytényezőTeljesítménytényező a B fázison — a hatásos és látszólagos teljesítmény aránya, tartomány −1.00 és 1.00 között
Szerviz műveletek
Összesítő nullázásNullázza a B fázis total és total_returned energiaszámlálóit

Villamos mérő (2. fázis)

Összes fogyasztás olvasása
# 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");
Igény olvasása
# 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");
Figyelő
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
Szerviz attribútumok
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
Szerviz műveletek
Reset total
mqttpublish("shellies/shellyem3-"+dID+"/emeter/1/command", "reset_totals");
Villamos mérő (3. fázis) Villanyóra Csak olvasható

Hatásos teljesítmény (kW) és élettartam-energia (kWh) a C fázison — a 3. CT bilincsről olvasva, W→kW és Wh→kWh átváltással

numeric Egység: kW / kWh
Szerviz attribútumok
Visszatáplált energiaA C fázison a hálózatba visszatáplált összes energia (Wh) — hasznos PV / kétirányú méréshez
FeszültségRMS fázis-nullavezető feszültség a C fázison (V)
ÁramA 3. CT bilincs által mért RMS áram (A)
TeljesítménytényezőTeljesítménytényező a C fázison — a hatásos és látszólagos teljesítmény aránya, tartomány −1.00 és 1.00 között
Szerviz műveletek
Összesítő nullázásNullázza a C fázis total és total_returned energiaszámlálóit

Villamos mérő (3. fázis)

Összes fogyasztás olvasása
# 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");
Igény olvasása
# 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");
Figyelő
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
Szerviz attribútumok
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
Szerviz műveletek
reset total
mqttpublish("shellies/shellyem3-"+dID+"/emeter/2/command", "reset_totals");
Mágneskapcsoló relé Kapcsoló

Beépített 10 A relé — jellemzően egy külső teljesítmény-mágneskapcsoló tekercsének vezérlésére kötve az I/O sorkapcsokon keresztül

boolean
Értékek / Állapotok: ON · OFF

Mágneskapcsoló relé

Kapcsoló állapot olvasása
# 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");
Kapcsoló állapot írása
# 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
Figyelő
# Parse received bytes:
IF(RECEIVEDMSG.TOPIC = "shellies/shellyem3-"+dID+"/relay/0")
 St := switch(TOSTRING(RECEIVEDMSG.PAYLOAD),"on",1,0);
END
Kapcsolat: Packet Parser → MQTT
Lehetséges fejlesztések (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.

Források

Talált problémát ezzel az eszközsablonnal?

Írja meg, mi nem működik, mi hiányzik, vagy hogyan kellene a sablonnak viselkednie. Visszajelzése segít, hogy a katalógus pontos maradjon.

TapHome által hitelesítve

Használni szeretnéd ezt a TapHome Core-odban?

Nyisd meg ezt a sablont az ügyfélportálon, hogy alkalmazd az otthonaid egyikére, vagy készíts egy módosítást és küldd vissza a katalógusba.

Megnyitás a portálon