---
title: "Shelly EM MQTT"
description: "Shelly EM über einen MQTT-Broker ohne Cloud: Energie (kWh) je Stromwandler-Kanal als 2 Zähler und das Schützrelais als Schalter in TapHome."
url: "https://taphome.com/de/compatibility/shelly-em-mqtt/"
language: de
lastmod: 2026-10-08
generator: hugo
ai:
  topics: ["mqtt","electric-meter","wifi","energy-metering","contactor-control","ct-clamp"]
  questions: ["Wie integriere ich Shelly EM mit TapHome über MQTT?","Was misst die Shelly-EM-MQTT-Vorlage in TapHome?","Wie finde ich die Device ID des Shelly EM für MQTT?","Kann ich das Schützrelais des Shelly EM über MQTT von TapHome steuern?","Warum meldet mein Shelly EM keine Energiedaten über MQTT?","Unterstützt die Shelly-EM-MQTT-Vorlage Echtzeit-Leistungsmessungen?"]
---

# Shelly EM MQTT

Kommunikation: Packet Parser → MQTT

- [Shelly EM Produktseite](https://www.shelly.com/en/products/shop/shelly-em)

> Netzwerkadresse
> 
> Beim in TapHome integrierten MQTT-Broker geben Sie in TapHome `127.0.0.1` als Broker-Adresse ein. Im Gerät geben Sie die IP-Adresse des TapHome Core ein und richten für den Core eine IP-Reservierung im Router ein.
> 
> [Netzwerkvorbereitung](https://taphome.com/de/docs/setup/network-preparation/)

## Integrationsanleitung

Der Shelly EM ist ein einphasiger Energiezähler mit zwei unabhängigen Messkanälen und einem 2A-Relaisausgang zur Schützsteuerung. Jeder Kanal wird an einen externen Stromwandler (CT-Klemme) angeschlossen -- erhältlich in 50A- und 120A-Varianten -- was die nicht-invasive Überwachung von zwei separaten Stromkreisen gleichzeitig ermöglicht. Diese Vorlage verbindet sich über einen MQTT-Broker im lokalen Netzwerk mit dem Gerät. Eine Cloud-Verbindung ist nicht erforderlich.

Die Vorlage erstellt drei Geräte: zwei Stromzähler (einer pro CT-Kanal) zur Erfassung des kumulativen Energieverbrauchs und einen Schalter für das Schützrelais.

## Konfiguration

### Device ID

Der Shelly EM verwendet eine Device ID im Format `shellyem-XXXXXX`, wobei `XXXXXX` die letzten 6 Zeichen der MAC-Adresse in Hexadezimalformat sind (z. B. `shellyem-B929CC`). Beim Import der Vorlage geben Sie nur den Hexadezimalteil (z. B. `B929CC`) im Parameter **Device ID** ein.

Die Device ID finden Sie:

- In der Shelly-Weboberfläche: **Settings** > **Device Info**
- Über die API: `GET http://<device-ip>/settings` -- Feld `mqtt.id`

> [!TIP]
> Dieses Gerät unterstützt **mDNS Discovery**. Sie können bei der MQTT-Broker-Konfiguration den Hostnamen `shellyem-{MAC}.local` anstelle einer IP-Adresse verwenden. Ersetzen Sie `{MAC}` durch denselben Hex-Teil wie in der Device ID (z. B. `shellyem-B929CC.local`). Die Verwendung eines Hostnamens verhindert Konnektivitätsprobleme bei Änderung der IP-Adresse des Geräts.

### MQTT-Einrichtung

Aktivieren Sie vor dem Import der Vorlage MQTT auf dem Shelly EM:

1. Öffnen Sie die Shelly-Weboberfläche unter `http://<device-ip>`
2. Navigieren Sie zu **Internet & Security** > **Advanced — Developer Settings**
3. Aktivieren Sie **Enable action execution via MQTT**
4. Geben Sie im Feld **Server** die MQTT-Broker-Adresse im Format `broker-ip:1883` ein
5. Klicken Sie auf **SAVE**

> [!WARNING]
> Bei Shelly Gen1-Geräten **deaktiviert** die Aktivierung von MQTT die **Shelly Cloud**. Beide Funktionen können nicht gleichzeitig betrieben werden.

### Vorlagen-Einrichtung

Nach dem Import der Vorlage in TapHome:

1. Setzen Sie die **MQTT Broker IP** auf die Adresse Ihres MQTT-Brokers
2. Setzen Sie den **MQTT Broker Port** (Standard `1883`)
3. Setzen Sie die **Device ID** auf den Hexadezimalteil der Device ID des Shelly EM (z. B. `B929CC`)

Das Modul abonniert `shellies/#` und die Listener-Skripte auf jedem Gerät filtern Nachrichten nach der konfigurierten Device ID.

## Gerätefunktionen

### Energiemessung (pro Kanal)

Jeder Kanal wird in TapHome als unabhängiges Stromzähler-Gerät dargestellt. Das Listener-Skript abonniert zwei MQTT-Topics pro Kanal:

| Topic | Einheit | Beschreibung |
|-------|---------|--------------|
| `emeter/{i}/energy` | Wattminuten | Kumulative Energie seit dem letzten Neustart -- geteilt durch 60 000 zur Umrechnung in kWh |
| `emeter/{i}/total` | Wh | Persistenter Gesamtenergieverbrauch -- übersteht Neustarts |

Die Vorlage speichert beide Werte: `Ed` (Energie aus dem Wattminuten-Topic, umgerechnet in kWh) und `To` (Gesamtverbrauch in Wh aus dem persistenten Topic).

> [!TIP]
> Das Topic `energy` wird beim Neustart des Geräts auf Null zurückgesetzt. Für die persistente Energieerfassung liest die Vorlage auch das Topic `total`, das Neustarts übersteht.

Jeder Kanal stellt außerdem ein **Spannung**-Serviceattribut bereit, das die RMS-Netzspannung aus dem MQTT-Topic `emeter/{i}/voltage` ausliest.

> [!NOTE]
> Die Skripte `readtotalconsumption` und `readdemand` sind auskommentierter Vorlagen-Boilerplate -- alle Energiedaten kommen über den MQTT-Listener. Das bedeutet, die Vorlage liefert **keine** Echtzeit-Leistungsmessungen (W). Es werden nur kumulative Energie (kWh) und Gesamtverbrauch (Wh) erfasst. Die momentane Wirkleistung ist über das MQTT-Topic `emeter/{i}/power` verfügbar, wird aber von dieser Vorlage nicht abonniert.

### Schützrelais

Der Relaisausgang wird in TapHome als Schalter dargestellt. Das Relais ist für **2A / 230 VAC** ausgelegt -- es ist nur zur Schützsteuerung vorgesehen, nicht zum direkten Schalten von Lasten.

- **Lesen:** abonniert `shellies/shellyem-{id}/relay/0` -- Payload `on` = ein, `off` = aus
- **Schreiben:** veröffentlicht `on` oder `off` auf `shellies/shellyem-{id}/relay/0/command`

> [!WARNING]
> Das Relais ist nur für 2A ausgelegt. Verwenden Sie bei Lasten über diesem Wert immer ein externes Schütz. Der direkte Anschluss von Hochleistungslasten beschädigt das Relais.

## Fehlerbehebung

### Keine Energiedaten

1. Überprüfen Sie, ob MQTT in der Shelly-Weboberfläche aktiviert ist (Internet & Security > Advanced — Developer Settings)
2. Prüfen Sie, ob die MQTT-Broker-Adresse und der Port sowohl in den Shelly-Geräteeinstellungen als auch in den TapHome-Moduleinstellungen korrekt sind
3. Prüfen Sie, ob die benutzerdefinierte Variable **Device ID** genau mit der Device ID des Shelly übereinstimmt (z. B. `B929CC`)
4. Abonnieren Sie mit einem MQTT-Client (z. B. MQTT Explorer) das Topic `shellies/#` und überprüfen Sie, ob das Gerät die Topics `emeter/0/energy` und `emeter/1/energy` veröffentlicht

### Daten nur von einem Kanal

1. Überprüfen Sie, ob die CT-Klemme in die richtige 3,5-mm-Buchse eingesteckt ist (Kanal 0 oder Kanal 1)
2. Prüfen Sie, ob Strom durch den überwachten Leiter fließt -- die CT-Klemme muss einen einzelnen Leiter umschließen, nicht das gesamte Kabel
3. Abonnieren Sie die Topics `shellies/shellyem-{id}/emeter/0/#` und `shellies/shellyem-{id}/emeter/1/#` separat und überprüfen Sie, ob beide Kanäle Daten veröffentlichen

### Relais reagiert nicht

1. Prüfen Sie, ob der Shelly EM mit Strom versorgt ist und mit dem MQTT-Broker verbunden ist
2. Veröffentlichen Sie manuell `on` oder `off` auf `shellies/shellyem-{id}/relay/0/command` über einen MQTT-Client, um die Relaisfunktion unabhängig von TapHome zu testen
3. Überprüfen Sie die korrekte Verdrahtung des Relaisausgangs (kontrollieren Sie die Klemmenbeschriftung am Gerät)

> [!WARNING]
> Shelly Gen1-Geräte unterstützen **kein** MQTT über TLS. Die Kommunikation zwischen dem Gerät und dem MQTT-Broker ist unverschlüsselt (Plain MQTT, Port 1883). Stellen Sie sicher, dass der MQTT-Broker sich in einem vertrauenswürdigen lokalen Netzwerk befindet.

## Installation in TapHome

### Voraussetzungen

- Shelly-Gerät mit Wi-Fi (2,4 GHz) verbunden, z. B. über die Shelly App oder den eigenen Access Point des Geräts
- MQTT-Broker in Ihrem lokalen Netzwerk aktiv (z. B. Mosquitto, Home Assistant oder der integrierte TapHome-Broker)
- TapHome CCU im selben Netzwerk wie der Broker

> [!WARNING]
> Auf **Gen1**-Geräten **deaktiviert** das Aktivieren von MQTT die **Shelly Cloud**. Beides kann nicht gleichzeitig betrieben werden. Auf Gen2/Plus-Geräten gilt diese Einschränkung nicht.

### Schritt 1 — MQTT auf dem Shelly-Gerät aktivieren

#### Gen1-Geräte (Shelly 1, 1PM, 2.5, EM, 3EM, Plug S, RGBW2, Dimmer, TRV…)

1. Öffnen Sie die Shelly-Weboberfläche: `http://<device-ip>/`
2. Navigieren Sie zu **Internet & Security** → **Advanced — MQTT**
3. Aktivieren Sie **MQTT**
4. Setzen Sie **MQTT Server**: `<broker-ip>:<port>` (z. B. `192.168.1.10:1883`)
5. Optional setzen Sie **MQTT User** und **MQTT Password**, falls Ihr Broker eine Authentifizierung erfordert
6. Klicken Sie auf **Save** — das Gerät startet neu und verbindet sich mit dem Broker

#### Gen2 / Plus-Geräte (Shelly Plus 1, Plus 1PM, Plus 2PM, Plus Plug S, Plus H&T, Pro 3EM…)

1. Öffnen Sie die Shelly-Weboberfläche: `http://<device-ip>/`
2. Navigieren Sie zu **Settings** → **MQTT**
3. Aktivieren Sie **MQTT**
4. Setzen Sie **Server**: `<broker-ip>:<port>` (z. B. `192.168.1.10:1883`)
5. Die **Client ID** ist mit der Geräte-ID vorausgefüllt (z. B. `shellyplus1pm-AABBCCDDEE`) — belassen Sie sie so, es sei denn, Sie haben einen bestimmten Grund zur Änderung
6. Klicken Sie auf **Save** und starten Sie das Gerät neu

Beim integrierten TapHome-Broker ist `<broker-ip>` die IP-Adresse des TapHome Core. Geben Sie dem Core eine IP-Reservierung im Router, sonst verliert das Gerät den Broker, wenn der Router die Adresse ändert → [Netzwerkvorbereitung](https://taphome.com/de/docs/setup/network-preparation/).

> [!TIP]
> Um zu überprüfen, ob MQTT funktioniert, verwenden Sie einen MQTT-Client (z. B. MQTT Explorer) und abonnieren Sie `shellies/#` (Gen1) oder `<device-id>/#` (Gen2). Sie sollten Statusnachrichten vom Gerät sehen.

### Schritt 2 — Device ID / MQTT Client ID ermitteln

Einige Vorlagen erfordern einen Parameter **Device ID** oder **MQTT Client ID**. Dies ist die eindeutige Kennung, die in MQTT-Topics verwendet wird.

- **Gen1:** auf dem Etikett als MAC-Adresse zu finden (z. B. `AABBCCDDEE`). Device ID = `shelly<model>-<mac>`, z. B. `shelly1pm-AABBCCDDEE`
- **Gen2/Plus:** in der Shelly-Weboberfläche unter **Settings** → **Device Info** → **Device ID** zu finden, oder auf dem Geräteetikett

### Schritt 3 — Konfiguration in TapHome

1. Fügen Sie in TapHome ein neues Modul **Packet Parser (MQTT)** hinzu
2. **IP Address:** `127.0.0.1` für den integrierten TapHome-Broker (die Steuereinheit verbindet sich mit sich selbst, die Adresse ändert sich nie); für einen externen Broker dessen IP-Adresse (z. B. `192.168.1.10`)
3. **Port:** `1883` (Standard; verwenden Sie `8883` für TLS)
4. **Device ID / MQTT Client ID:** Geben Sie den Wert aus Schritt 2 ein (falls von der Vorlage benötigt)
5. Importieren Sie die Vorlage — TapHome abonniert automatisch die Geräte-Topics

## Verfügbare Geräte 3

Diese Geräte erscheinen nach dem Import in TapHome.

Shelly EM MQTT Modul

Benutzerdefinierte Variablen

`deviceID` (string) MQTT Device ID des Shelly EM — Format ist 'shellyem-DEVICEID', wobei DEVICEID die letzten 6 Hex-Zeichen der MAC-Adresse sind (z. B. B929CC)

Open http://shellyIpAddress → Settings → Device Info → copy Device ID

Stromzähler - Kanal 1 Stromzähler Nur lesen

Energieverbrauch am CT-Klemme Kanal 1 -- kumulative Energie (kWh) und Gesamtverbrauch (Wh)

numeric Einheit: kWh

Serviceattribute

|          |                                                                       |
|----------|-----------------------------------------------------------------------|
| Spannung | RMS-Spannung auf Kanal 1, gelesen aus dem MQTT-Topic emeter/0/voltage |

Gesamtverbrauch lesen

```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");
```

Bedarf lesen

```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");
```

Listener

```taphome
VAR whatEd := "shellies/shellyem-"+deviceID+"/emeter/0/energy";
VAR whatTo := "shellies/shellyem-"+deviceID+"/emeter/0/total";

IF (whatEd = RECEIVEDMSG.TOPIC)
 Ed := todouble(TOSTRING(RECEIVEDMSG.PAYLOAD))/60000;
END
IF (whatTo = RECEIVEDMSG.TOPIC)
 To := todouble(TOSTRING(RECEIVEDMSG.PAYLOAD));
END
```

Serviceattribute

Voltage \[V]

```taphome
if parsejson(response, "Topic") = "shellies/shellyem-"+deviceID+"/emeter/0/voltage"
 return(todouble(parsejson(response, "Payload")));
end
```

Stromzähler - Kanal 2 Stromzähler Nur lesen

Energieverbrauch am CT-Klemme Kanal 2 -- kumulative Energie (kWh) und Gesamtverbrauch (Wh)

numeric Einheit: kWh

Serviceattribute

|          |                                                                       |
|----------|-----------------------------------------------------------------------|
| Spannung | RMS-Spannung auf Kanal 2, gelesen aus dem MQTT-Topic emeter/1/voltage |

Gesamtverbrauch lesen

```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");
```

Bedarf lesen

```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");
```

Listener

```taphome
VAR whatEd := "shellies/shellyem-"+deviceID+"/emeter/1/energy";
VAR whatTo := "shellies/shellyem-"+deviceID+"/emeter/1/total";

IF (whatEd = RECEIVEDMSG.TOPIC)
 Ed := todouble(TOSTRING(RECEIVEDMSG.PAYLOAD))/60000;
END
IF (whatTo = RECEIVEDMSG.TOPIC)
 To := todouble(TOSTRING(RECEIVEDMSG.PAYLOAD));
END
```

Serviceattribute

voltage \[V]

```taphome
if parsejson(response, "Topic") = "shellies/shellyem-"+deviceID+"/emeter/1/voltage"
 return(parsejson(response, "Payload"));
end
```

Schützrelais Schalter Lesen und Schreiben

2A-Relaisausgang zur Schützsteuerung -- liest relay/0-Status und veröffentlicht Ein/Aus-Befehle

boolean

Werte / Zustände: ON · OFF

Schaltzustand lesen

```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");
```

Schaltzustand schreiben

```taphome
MQTTPUBLISH("shellies/shellyem-" + deviceID + "/relay/0/command",if(St = 1, "on","off"));

# Simple HTTP Request:
# 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

```taphome
VAR whatSt := "shellies/shellyem-"+deviceID+"/relay/0";
IF (whatSt = RECEIVEDMSG.TOPIC)
 IF (TOSTRING(RECEIVEDMSG.PAYLOAD) = "on")
  St := 1;
 ELSE
  St := 0;
 END
END
```

**Verbindung:** Packet Parser → MQTT • Hostname: `shellyem-{MAC}.local`

Mögliche Verbesserungen (5)

- Active Power — Instantaneous active power in W per channel. Available via MQTT but template listener scripts do not subscribe to it — readdemand is commented-out boilerplate.
- Reactive Power — Instantaneous reactive power in VAR per channel. Available via MQTT topic.
- Total Energy Returned — Total energy returned to grid in Wh per channel. Useful for solar/bidirectional setups.
- Connection Status — LWT topic — true on connect, false on disconnect. Could detect device offline state.
- Reset Energy Data — Payload 'reset\_data' resets all accumulated energy counters on both channels.

## Importparameter

Diese Werte geben Sie beim Import des XML ein.

| In der App abgefragt   | Standard             |
|------------------------|----------------------|
| Mqtt Broker IP-Adresse | `192.168.0.1`        |
| Mqtt Broker port       | `1883`               |
| Device ID              | Beim Import eingeben |

## Quellen

- 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 EM — API Endpoints & MQTT Topics
  
  [shelly-api-docs.shelly.cloud](https://shelly-api-docs.shelly.cloud/gen1/#shelly-em) 2026-03-29
- Shelly EM — Product Specifications
  
  [robomaterial.com](https://robomaterial.com/product/shelly-em-single-phase-energy-meter-with-contactor-control/) 2026-03-29

## Verwandte Dokumentation

- [MQTT Integration](https://taphome.com/de/compatibility/mqtt-guide/)
- [Packet Parser (HTTP, TCP, UDP, FTP, MQTT)](https://taphome.com/de/docs/integration/packet-parser/)
- [Packet-Parser-Funktionen](https://taphome.com/de/docs/script/packet-parser/)
- [Parsing-Funktionen](https://taphome.com/de/docs/script/parsing-functions/)
- [MQTT-Broker](https://taphome.com/de/docs/integration/packet-parser/mqtt-broker/)
- [Listener-Skripte](https://taphome.com/de/docs/script/listener-scripts/)

