---
title: "Shelly 3EM MQTT"
description: "Fázisonkénti teljesítmény, feszültség, áram, kétirányú energia és mágneskapcsoló-vezérlés MQTT-n. TapHome sablon Shelly 3EM Gen1-hez."
url: "https://taphome.com/hu/compatibility/shelly-3em-gen1-mqtt/"
language: hu
lastmod: 2026-10-08
generator: hugo
ai:
  topics: ["mqtt","electric-meter","3-phase","wifi","energy-metering","bidirectional-metering","mdns"]
  questions: ["Hogyan integrálható a Shelly 3EM a TapHome-hoz MQTT-n keresztül?","Mit mér fázisonként a Shelly 3EM MQTT TapHome sablon?","Hogyan található meg a Shelly 3EM Device ID-ja az MQTT sablonhoz?","Miért shellyem3- a Shelly 3EM MQTT topic prefix és nem shelly3em-?","Támogatja a Shelly 3EM MQTT sablon a kétirányú mérést napelemes rendszerhez?","Hogyan nullázhatók a fázisonkénti energiaszámlálók a Shelly 3EM-en TapHome-ból?"]
---

# Shelly 3EM MQTT

Kommunikáció: Packet Parser → MQTT

- [Shelly 3EM termékoldal](https://www.shelly.com/en/products/shop/shelly-3em)

> Hálózati cím
> 
> A TapHome-ba épített MQTT bróker esetén a TapHome-ban brókercímként adja meg a `127.0.0.1` címet. Az eszközben a TapHome Core IP-címét adja meg, és a Core-nak állítson be IP-foglalást a routerben.
> 
> [A hálózat előkészítése](https://taphome.com/hu/docs/setup/network-preparation/)

## Integrációs útmutató

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 & Security** → **Advanced - 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

> [!WARNING]
> 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.

> [!NOTE]
> 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 **Settings** → **Device 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éter | Leírás | Példa |
|-----------|--------|-------|
| **IpAddress** | MQTT bróker IP címe | `192.168.1.10` |
| **Port** | MQTT bróker port | `1883` |
| **dID** | A 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).

> [!NOTE]
> 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.

> [!TIP]
> 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 & Security** → **Advanced - Developer Settings** → **Enable 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 & Security** → **Cloud** 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).

> [!WARNING]
> 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 (2,4 GHz), pl. a Shelly alkalmazással vagy az eszköz saját hozzáférési pontján keresztül
- 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

> [!WARNING]
> 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 & Security** → **Advanced — 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 **Settings** → **MQTT** 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

A beépített TapHome broker esetén a `<broker-ip>` a TapHome Core IP-címe. Adjon a Core-nak IP-foglalást a routerben, különben az eszköz elveszíti a brokert, amikor a router megváltoztatja a címet → [A hálózat előkészítése](https://taphome.com/hu/docs/setup/network-preparation/).

> [!TIP]
> 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 **Settings** → **Device Info** → **Device 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:** a beépített TapHome brokerhez `127.0.0.1` (a vezérlőegység saját magához csatlakozik, a cím soha nem változik); külső broker esetén annak IP-címe (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 4

Ezek az eszközök az importálás után jelennek meg a TapHome-ban.

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 energia | Az A fázison a hálózatba visszatáplált összes energia (Wh) — hasznos PV / kétirányú méréshez                    |
| Feszültség            | RMS fázis-nullavezető feszültség az A fázison (V)                                                               |
| Áram                  | Az 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ás | Nullázza az A fázis total és total\_returned energiaszámlálóit |

Összes fogyasztás olvasása

```taphome
# 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

```taphome
# 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ő

```taphome
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]

```taphome
IF(parsejson(x, "Topic") = "shellies/shellyem3-"+dID+"/emeter/0/total_returned")
 return(parsejson(x, "Payload"));
END
```

voltage \[V]

```taphome
IF(parsejson(x, "Topic") = "shellies/shellyem3-"+dID+"/emeter/0/voltage")
 return(todouble(parsejson(x, "Payload")));
END
```

current \[A]

```taphome
IF(parsejson(x, "Topic") = "shellies/shellyem3-"+dID+"/emeter/0/current")
 return(todouble(parsejson(x, "Payload")));
END
```

power factor

```taphome
IF(parsejson(x, "Topic") = "shellies/shellyem3-"+dID+"/emeter/0/pf")
 return(todouble(parsejson(x, "Payload")));
END
```

Szerviz műveletek

Reset total

```taphome
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 energia | A B fázison a hálózatba visszatáplált összes energia (Wh) — hasznos PV / kétirányú méréshez                    |
| Feszültség            | RMS fázis-nullavezető feszültség a B fázison (V)                                                               |
| Áram                  | A 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ás | Nullázza a B fázis total és total\_returned energiaszámlálóit |

Összes fogyasztás olvasása

```taphome
# 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

```taphome
# 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ő

```taphome
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]

```taphome
IF(parsejson(x, "Topic") = "shellies/shellyem3-"+dID+"/emeter/1/total_returned")
 return(todouble(parsejson(x, "Payload")));
END
```

voltage \[V]

```taphome
IF(parsejson(x, "Topic") = "shellies/shellyem3-"+dID+"/emeter/1/voltage")
 return(todouble(parsejson(x, "Payload")));
END
```

current \[A]

```taphome
IF(parsejson(x, "Topic") = "shellies/shellyem3-"+dID+"/emeter/1/current")
 return(todouble(parsejson(x, "Payload")));
END
```

power factor

```taphome
IF(parsejson(x, "Topic") = "shellies/shellyem3-"+dID+"/emeter/1/pf")
 return(todouble(parsejson(x, "Payload")));
END
```

Szerviz műveletek

Reset total

```taphome
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 energia | A C fázison a hálózatba visszatáplált összes energia (Wh) — hasznos PV / kétirányú méréshez                    |
| Feszültség            | RMS fázis-nullavezető feszültség a C fázison (V)                                                               |
| Áram                  | A 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ás | Nullázza a C fázis total és total\_returned energiaszámlálóit |

Összes fogyasztás olvasása

```taphome
# 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

```taphome
# 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ő

```taphome
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]

```taphome
IF(parsejson(x, "Topic") = "shellies/shellyem3-"+dID+"/emeter/2/total_returned")
 return(todouble(parsejson(x, "Payload")));
END
```

voltage \[V]

```taphome
IF(parsejson(x, "Topic") = "shellies/shellyem3-"+dID+"/emeter/2/voltage")
 return(todouble(parsejson(x, "Payload")));
END
```

current \[A]

```taphome
IF(parsejson(x, "Topic") = "shellies/shellyem3-"+dID+"/emeter/2/current")
 return(todouble(parsejson(x, "Payload")));
END
```

Power Factor

```taphome
IF(parsejson(x, "Topic") = "shellies/shellyem3-"+dID+"/emeter/2/pf")
 return(todouble(parsejson(x, "Payload")));
END
```

Szerviz műveletek

reset total

```taphome
mqttpublish("shellies/shellyem3-"+dID+"/emeter/2/command", "reset_totals");
```

Mágneskapcsoló relé Kapcsoló Olvasás és írás

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

Kapcsoló állapot olvasása

```taphome
# 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

```taphome
# 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ő

```taphome
# Parse received bytes:
IF(RECEIVEDMSG.TOPIC = "shellies/shellyem3-"+dID+"/relay/0")
 St := switch(TOSTRING(RECEIVEDMSG.PAYLOAD),"on",1,0);
END
```

**Kapcsolat:** Packet Parser → MQTT • Hostname: `shelly3em-{MAC}.local`

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.

## Importálási paraméterek

Ezeket az értékeket az XML importálásakor adja meg.

| Az alkalmazás kéri | Alapérték              |
|--------------------|------------------------|
| Mqtt Broker IP-cím | `192.168.0.1`          |
| Mqtt Broker port   | `1883`                 |
| Device ID          | Importáláskor adja meg |

## Források

- Shelly Gen1 API Reference
  
  [shelly-api-docs.shelly.cloud](https://shelly-api-docs.shelly.cloud/gen1/) 2026-03-12
- Home Assistant Shelly Integration
  
  [www.home-assistant.io](https://www.home-assistant.io/integrations/shelly/) 2026-03-12
- Shelly 3EM MQTT API — device-specific topics
  
  [shelly-api-docs.shelly.cloud](https://shelly-api-docs.shelly.cloud/gen1/#shelly-3em-mqtt) 2026-04-25
- Shelly 3EM Knowledge Base — specs & wiring
  
  [kb.shelly.cloud](https://kb.shelly.cloud/knowledge-base/shelly-3em) 2026-04-25
- Shelly 3EM — User & Safety Guide
  
  [www.netxl.com](https://www.netxl.com/shelly/docs/shelly-3em-user-manual.pdf) 2026-04-25
  
  [PDF](https://taphome.com/compatibility/devices/shelly-3em-gen1-mqtt/manufacturer/shelly-3em-user-safety-guide.pdf)

A gyártói dokumentumok © a mindenkori tulajdonosaikat illetik. A gyártó által közzétett formában, kizárólag tájékoztatásul tesszük elérhetővé őket.

## Kapcsolódó dokumentáció

- [MQTT Integration](https://taphome.com/hu/compatibility/mqtt-guide/)
- [Packet Parser (HTTP, TCP, UDP, FTP, MQTT)](https://taphome.com/hu/docs/integration/packet-parser/)
- [Packet parser függvények](https://taphome.com/hu/docs/script/packet-parser/)
- [Elemző függvények](https://taphome.com/hu/docs/script/parsing-functions/)
- [MQTT bróker](https://taphome.com/hu/docs/integration/packet-parser/mqtt-broker/)
- [Listener szkriptek](https://taphome.com/hu/docs/script/listener-scripts/)

