TapHome

Shelly Pro 3EM

Packet Parser → HTTP
Eingereicht von
Zuletzt aktualisiert: 03. 2026
Shelly Pro 3EM

Der Shelly Pro 3EM ist ein professioneller Dreiphasen-Energiezähler für die DIN-Hutschiene, der für den Einsatz mit externen Stromwandlern konzipiert ist. Er ist in drei Varianten erhältlich — Pro 3EM (CT 120 A), Pro 3EM-400 (CT 400 A) und Pro 3EM-3CT63 (integrierte CT 63 A). Das Gerät verbindet sich über Wi-Fi oder Ethernet (RJ45) mit dem lokalen Netzwerk und stellt Echtzeitmessungen über die Gen2+ HTTP RPC API bereit. TapHome fragt das Gerät per HTTP auf Port 80 ab — eine Cloud-Verbindung ist nicht erforderlich.

Die Vorlage enthält elf Geräte für bidirektionale Energiemessung: Stromsensoren pro Phase (L1, L2, L3), From Grid und To Grid Energiezähler pro Phase sowie Gesamt-From Grid und Gesamt-To Grid Energiezähler. Die From Grid Geräte erfassen den Energiebezug aus dem Netz, die To Grid Geräte die Netzeinspeisung (z. B. aus Solaranlagen) — der Leistungswert wird invertiert, damit die Einspeisung als positive Zahl dargestellt wird.

Hardwareanschluss

Der Shelly Pro 3EM wird auf einer Standard-DIN-Hutschiene (94 × 19 × 69 mm) montiert. Er benötigt vier Spannungseingänge (drei Phasenleiter + Neutralleiter) über Schraubklemmen sowie vier externe CT-Eingänge (drei Phasen + Neutralleiter). Die Spannungsversorgung erfolgt zwischen einer beliebigen Phase und dem Neutralleiter (100–260 V AC, 50/60 Hz).

Wichtige Hinweise zur Verdrahtung:

  • Spannungseingänge: LA, LB, LC (je einer pro Phase) + N (Neutralleiter)
  • CT-Eingänge: Drei Phasen-CTs + ein Neutral-CT, jeweils an den entsprechenden CT-Eingangsbuchsen angeschlossen
  • Ethernet: Ein RJ45-Anschluss für die LAN-Verbindung (Stromversorgung vor dem Ein-/Ausstecken des LAN-Kabels trennen)
  • Leiterquerschnitt: 0,5–2,5 mm² (20–14 AWG), Abisolierlänge 6–7 mm, max. Anzugsmoment 0,4 Nm

Der externe Schutz muss für max. 16 A mit Charakteristik B oder C und einem minimalen Ausschaltvermögen von 6 kA ausgelegt sein. Der Betriebsspannungsbereich beträgt 100–260 V pro Phase.

Konfiguration

Der Shelly Pro 3EM verbindet sich über Wi-Fi oder Ethernet. Beim Import der TapHome-Vorlage geben Sie die IP-Adresse des Geräts ein (Standard-Platzhalter 192.168.0.1).

Authentifizierung

TapHome unterstützt keine HTTP Digest Authentication. Stellen Sie sicher, dass die Authentifizierung am Shelly-Gerät deaktiviert ist, bevor Sie es zu TapHome hinzufügen. Die Einstellung finden Sie in der Shelly-Weboberfläche unter Einstellungen → Authentifizierung.

CT-Typ-Auswahl

Nach dem Anschluss der Stromwandler konfigurieren Sie den CT-Typ über die Shelly-Weboberfläche oder durch Aufruf von EM.SetConfig mit dem entsprechenden ct_type-Wert. Mit EM.GetCTTypes können Sie die unterstützten Typen auflisten (typischerweise 120A und 400A). Ist der CT-Typ nicht gesetzt, meldet das Gerät einen ct_type_not_set-Fehler und Messungen sind nicht verfügbar.

Phasen-zu-Phasen-Kalibrierung

Der Pro 3EM unterstützt eine Kanal-zu-Kanal-Kalibrierung zur Verbesserung der Messgenauigkeit zwischen den Phasen. Die Kalibrierung erfordert eine Mindestlast von 500 W pro Kanal und dauert etwa 5 Sekunden. Verwenden Sie EM.PhaseToPhaseCalib zur Kalibrierung und EM.PhaseToPhaseCalibReset zum Zurücksetzen auf Werkseinstellungen.

ECO-Modus

Wenn der ECO-Modus am Shelly-Gerät aktiviert ist, kann dies zu Kommunikationsausfällen führen, da TapHome das Gerät im 3-Sekunden-Abfrageintervall abfragt. Deaktivieren Sie den ECO-Modus für einen zuverlässigen Betrieb.

Gerätefunktionen

Strommessung pro Phase

Drei Stromsensoren (L1 Current, L2 Current, L3 Current) melden den Augenblicksstrom in Ampere für jede Phase, direkt aus den Feldern a_current, b_current und c_current von EM.GetStatus gelesen. Es handelt sich um einfache Sensorwerte ohne Einheitenumrechnung.

Bidirektionale Energiemessung pro Phase

Jede Phase verfügt über zwei Energiezähler — From Grid und To Grid:

  • L1/L2/L3 From Grid — aus dem Netz bezogene Wirkleistung (W, in kW umgerechnet) und kumulierter Netzbezug (Wh, in kWh umgerechnet). Jedes From Grid Gerät stellt zusätzlich vier Service-Attribute bereit: Leistungsfaktor, Strom [A], Spannung [V] und Gesamte zurückgespeiste Energie [kWh].
  • L1/L2/L3 To Grid — ins Netz eingespeiste Wirkleistung (W, durch −1000 geteilt, damit Einspeisung als positives kW dargestellt wird) und kumulierte zurückgespeiste Energie (Wh, in kWh umgerechnet). Die To Grid Geräte haben keine Service-Attribute.

Die Service-Attribute der From Grid Geräte liefern ein vollständiges Bild pro Phase: Augenblicksstrom und -spannung, Leistungsfaktor zur Beurteilung der Energiequalität sowie einen Zähler für die zurückgespeiste Energie zur kumulativen Einspeisungsüberwachung neben dem Netzbezugszähler.

Bidirektionale Gesamtenergiezählung

Zwei Zusammenfassungsgeräte aggregieren alle drei Phasen:

  • Total From Grid — kombinierte 3-Phasen-Wirkleistung (kW) und gesamter kumulierter Netzbezug (kWh)
  • Total To Grid — kombinierte 3-Phasen-Rückspeiseleistung (kW, invertiert) und gesamte kumulierte Netzeinspeisung (kWh)

Alle Geräte verwenden ein 3-Sekunden-Abfrageintervall, das dem Modullesezyklus entspricht.

Weitere Funktionen

Der Shelly Pro 3EM stellt nativ auch Scheinleistung pro Phase und gesamt, Neutralleiterstrom (einzigartig beim Pro-Modell — beim 3EM Gen3 nicht verfügbar), Netzfrequenz pro Phase, Gesamtstrom über alle Phasen sowie Moduldiagnostik (Wi-Fi SSID, IP-Adresse, Signalstärke, MAC-Adresse) bereit. Firmware-Update und Neustart sind ebenfalls über die RPC API verfügbar. Phasenfolgefehlererkennung und bis zu 60 Tage Datenprotokollierung mit 1-Minuten-Auflösung und CSV/JSON-Export werden nativ unterstützt. Diese Funktionen können in einem zukünftigen Vorlagen-Update hinzugefügt werden.

Fehlerbehebung

Gerät antwortet nicht
  1. Überprüfen Sie, ob Shelly mit Wi-Fi oder LAN verbunden ist und eine gültige IP-Adresse hat
  2. Versuchen Sie, den mDNS-Hostnamen (ShellyPro3EM-XXXXXXXXXXXX.local) statt der IP-Adresse zu verwenden — die IP-Adresse kann sich nach einer DHCP-Erneuerung geändert haben
  3. Öffnen Sie http://{geräte-ip}/rpc/Shelly.GetDeviceInfo im Browser — wenn es mit JSON antwortet, ist das Gerät erreichbar
  4. Stellen Sie sicher, dass TapHome Core und Shelly im gleichen Netzwerk / VLAN sind
Fehler ct_type_not_set

Wenn die EM- oder EMData-Komponente einen ct_type_not_set-Fehler meldet, wurde der Stromwandlertyp nicht konfiguriert. Setzen Sie den CT-Typ über die Shelly-Weboberfläche oder durch Aufruf von EM.SetConfig mit dem entsprechenden ct_type-Wert. Mit EM.GetCTTypes können Sie die unterstützten Typen auflisten.

Phasenfolge-Fehler

Wenn der phase_sequence-Fehler in EM.GetStatus erscheint, sind die Phasen in umgekehrter Reihenfolge angeschlossen (A-C-B statt A-B-C). Entweder die Phasen in der richtigen Reihenfolge neu verdrahten oder monitor_phase_sequence in der EM-Konfiguration aktivieren, wenn die umgekehrte Reihenfolge beabsichtigt ist.

Negative oder Null-Werte bei To Grid Geräten

Die To Grid Geräte verwenden eine invertierte Umrechnung (Division durch −1000), um Netzeinspeisung als positive Zahl darzustellen. Findet keine Einspeisung statt (das System bezieht nur Strom), zeigt der To Grid Leistungswert null oder negativ an. Dies ist das erwartete Verhalten — das From Grid Gerät erfasst den Verbrauch, das To Grid Gerät die Einspeisung.

Shelly Gen2+/Gen3-Geräte unterstützen bis zu 6 gleichzeitige HTTP-Verbindungen. Jedes Abfragesystem (TapHome, Home Assistant usw.) belegt Verbindungen. Vermeiden Sie es, zu viele Integrationen gleichzeitig auf demselben Gerät zu betreiben.

Installation in TapHome

Voraussetzungen

  • Shelly-Gerät installiert und eingeschaltet
  • Lokales Wi-Fi-Netzwerk (2,4 GHz)
  • TapHome CCU im selben Netzwerk

Schritt 1 — Shelly mit Wi-Fi verbinden

Option A — Shelly-App (empfohlen):

  1. Laden Sie die Shelly-App herunter (iOS / Android)
  2. Tippen Sie auf +Add Device und folgen Sie dem Bluetooth-Kopplungsassistenten
  3. Geben Sie Ihre Wi-Fi-Zugangsdaten ein, wenn Sie dazu aufgefordert werden

Option B — AP-Modus (ohne App):

  1. Beim ersten Einschalten erstellt das Gerät einen Hotspot: ShellyXXX-AABBCCDDEE
  2. Verbinden Sie Ihr Telefon/PC mit diesem Hotspot
  3. Öffnen Sie http://192.168.33.1Internet & SecurityWi-Fi Mode - Client
  4. Geben Sie SSID und Passwort ein → Save

Shelly unterstützt nur 2,4 GHz-Netzwerke. 5 GHz-Netzwerke werden beim Scannen nicht angezeigt.

Schritt 2 — IP-Adresse ermitteln

Nach der Verbindung mit Wi-Fi ermitteln Sie die zugewiesene IP-Adresse auf eine der folgenden Arten:

  • Shelly-App: Gerätedetail → Device info → IP-Adresse
  • Shelly-Weboberfläche: Verbinden Sie sich mit dem Geräte-AP vor der Wi-Fi-Einrichtung — die IP wird nach dem Speichern angezeigt
  • Router-DHCP-Tabelle: Suchen Sie nach einem Hostnamen wie shelly1pm-AABBCCDDEE
  • mDNS: Pingen Sie shelly<model>-<mac>.local (z. B. shelly1pm-AABBCCDDEE.local) aus dem selben Netzwerk

Weisen Sie dem Shelly-Gerät eine statische IP (DHCP-Reservierung) in Ihrem Router zu, damit sich die Adresse nach einem Router-Neustart nicht ändert.

Schritt 3 — Konfiguration in TapHome

  1. Fügen Sie in TapHome ein neues Modul Packet Parser (HTTP) hinzu
  2. IP Address: Geben Sie die IP aus Schritt 2 ein (z. B. 192.168.1.50)
  3. Port: 80 (Standard, keine Änderung erforderlich)
  4. Importieren Sie die Vorlage — TapHome fragt regelmäßig /status ab, um den Gerätestatus zu lesen

Die HTTP-Authentifizierung ist auf Shelly-Geräten standardmäßig deaktiviert. Wenn Sie den Anmeldeschutz aktiviert haben, unterstützt TapHome derzeit kein HTTP Basic Auth — lassen Sie die Authentifizierung für die TapHome-Integration deaktiviert.

Verfügbare Geräte

Shelly Pro 3 EM Modul
Benutzerdefinierte Variablen

Shelly Pro 3 EM

Lesen (Modul)
VAR response := SENDHTTPREQUEST("/rpc/EM.GetStatus?id=0");
IF response.IsSuccess
    EMStatus := response.Content;
END;

response := SENDHTTPREQUEST("/rpc/EMData.GetStatus?id=0");
IF response.IsSuccess
    EMDataStatus := response.Content;
END
L1 Strom Variable Nur lesen
numeric Einheit: A json_path

L1 Strom

Lesen
todouble(PARSEjson(EMStatus, "a_current"))
L1 From Grid Stromzähler Nur lesen

Phase A Wirkleistung (kW) und kumulierter Netzbezug (kWh), mit Spannung, Strom, Leistungsfaktor und zurückgespeister Energie

numeric Einheit: kW / kWh json_path
Serviceattribute
Leistungsfaktor
Strom
Spannung
Gesamte zurückgespeiste EnergiePhase A kumulierte zurückgespeiste (Einspeise-)Energie in kWh

L1 From Grid

Gesamtverbrauch lesen
todouble(PARSEjson(EMDataStatus, "a_total_act_energy"))/1000
Bedarf lesen
todouble(PARSEjson(EMStatus, "a_act_power"))/1000
Serviceattribute
power factor
RETURN(todouble(PARSEjson(EMStatus, "a_pf")));
Current [A]
RETURN(todouble(PARSEjson(EMStatus, "a_current")));
voltage [V]
RETURN(todouble(PARSEjson(EMStatus, "a_voltage")));
Total returned energy [kWh]
RETURN(todouble(PARSEjson(EMDataStatus, "a_total_act_ret_energy"))/1000);
L1 To Grid Stromzähler Nur lesen

Phase A zurückgespeiste Leistung (kW, invertiert) und kumulierte ins Netz eingespeiste Energie (kWh)

numeric Einheit: kW / kWh json_path

L1 To Grid

Gesamtverbrauch lesen
todouble(PARSEjson(EMDataStatus, "a_total_act_ret_energy"))/1000
Bedarf lesen
todouble(PARSEjson(EMStatus, "a_act_power"))/-1000
L2 Strom Variable Nur lesen
numeric Einheit: A json_path

L2 Strom

Lesen
todouble(PARSEjson(EMStatus, "b_current"))
L2 From Grid Stromzähler Nur lesen

Phase B Wirkleistung (kW) und kumulierter Netzbezug (kWh), mit Spannung, Strom, Leistungsfaktor und zurückgespeister Energie

numeric Einheit: kW / kWh json_path
Serviceattribute
Leistungsfaktor
Strom
Spannung
Gesamte zurückgespeiste EnergiePhase B kumulierte zurückgespeiste (Einspeise-)Energie in kWh

L2 From Grid

Gesamtverbrauch lesen
todouble(PARSEjson(EMDataStatus, "b_total_act_energy"))/1000
Bedarf lesen
todouble(PARSEjson(EMStatus, "b_act_power"))/1000
Serviceattribute
power factor
RETURN(todouble(PARSEjson(EMStatus, "b_pf")));
current [A[
RETURN(todouble(PARSEjson(EMStatus, "b_current")));
voltage [V]
RETURN(todouble(PARSEjson(EMStatus, "b_voltage")));
total returned energy [kWh]
RETURN(todouble(PARSEjson(EMDataStatus, "b_total_act_ret_energy"))/1000);
L2 To Grid Stromzähler Nur lesen

Phase B zurückgespeiste Leistung (kW, invertiert) und kumulierte ins Netz eingespeiste Energie (kWh)

numeric Einheit: kW / kWh json_path

L2 To Grid

Gesamtverbrauch lesen
todouble(PARSEjson(EMDataStatus, "b_total_act_ret_energy"))/1000
Bedarf lesen
todouble(PARSEjson(EMStatus, "b_act_power"))/-1000
L3 Strom Variable Nur lesen
numeric Einheit: A json_path

L3 Strom

Lesen
todouble(PARSEjson(EMStatus, "c_current"))
L3 From Grid Stromzähler Nur lesen

Phase C Wirkleistung (kW) und kumulierter Netzbezug (kWh), mit Spannung, Strom, Leistungsfaktor und zurückgespeister Energie

numeric Einheit: kW / kWh json_path
Serviceattribute
Leistungsfaktor
Strom
Spannung
Gesamte zurückgespeiste EnergiePhase C kumulierte zurückgespeiste (Einspeise-)Energie in kWh

L3 From Grid

Gesamtverbrauch lesen
todouble(PARSEjson(EMDataStatus, "c_total_act_energy"))/1000
Bedarf lesen
todouble(PARSEjson(EMStatus, "c_act_power"))/1000
Serviceattribute
power factor
RETURN(todouble(PARSEjson(EMStatus, "c_pf")));
current [A]
RETURN(todouble(PARSEjson(EMStatus, "c_current")));
voltage [V]
RETURN(todouble(PARSEjson(EMStatus, "c_voltage")));
Total returned energy [kWh]
RETURN(todouble(PARSEjson(EMDataStatus, "c_total_act_ret_energy"))/1000);
L3 To Grid Stromzähler Nur lesen

Phase C zurückgespeiste Leistung (kW, invertiert) und kumulierte ins Netz eingespeiste Energie (kWh)

numeric Einheit: kW / kWh json_path

L3 To Grid

Gesamtverbrauch lesen
todouble(PARSEjson(EMDataStatus, "c_total_act_ret_energy"))/1000
Bedarf lesen
todouble(PARSEjson(EMStatus, "c_act_power"))/-1000
Total From Grid Stromzähler Nur lesen

Kombinierte 3-Phasen-Wirkleistung (kW) und kumulierter Gesamt-Netzbezug (kWh)

numeric Einheit: kW / kWh json_path

Total From Grid

Gesamtverbrauch lesen
todouble(PARSEjson(EMDataStatus, "total_act"))/1000
Bedarf lesen
todouble(PARSEjson(EMStatus, "total_act_power"))/1000
Total To Grid Stromzähler Nur lesen

Kombinierte 3-Phasen-Rückspeiseleistung (kW, invertiert) und kumulierte Gesamt-Netzeinspeisung (kWh)

numeric Einheit: kW / kWh json_path

Total To Grid

Gesamtverbrauch lesen
todouble(PARSEjson(EMDataStatus, "total_act_ret"))/1000
Bedarf lesen
todouble(PARSEjson(EMStatus, "total_act_power"))/-1000
Verbindung: Packet Parser → HTTP
Mögliche Verbesserungen (14)
  • Phase A Apparent Power — Apparent power in VA, available per phase — could complement active power
  • Total Apparent Power — Sum of apparent power on all phases [VA]
  • Neutral Current — Current on neutral conductor [A] — Pro 3EM supports this (unlike 3EM Gen3)
  • Grid Frequency — Network frequency in Hz, available per phase — not exposed as device or SA
  • Total Current — Sum of current on all three phases [A]
  • MAC Address — No module-level service attributes in this template (unlike 3EM Gen3)
  • WiFi SSID — No module-level service attributes in this template (unlike 3EM Gen3)
  • Signal Strength — WiFi RSSI in dBm — not polled by module readscript
  • Firmware Update — No module-level service actions in this template (unlike 3EM Gen3)
  • Reboot — No module-level service actions in this template (unlike 3EM Gen3)
  • Uptime — Seconds since last reboot
  • Free RAM — Available RAM in bytes
  • Total Returned Energy (dedicated) — Already implemented as Total To Grid device (readtotalconsumption), listed for completeness
  • Phase Sequence Monitoring — Enable/disable phase sequence error detection via EM.SetConfig

Quellen