TapHome

Shelly Pro 4PM

Packet Parser → HTTP
Eingereicht von
Zuletzt aktualisiert: 03. 2026
Shelly Pro 4PM

Der Shelly Pro 4PM ist ein 4-Kanal-Smart-Relais für die DIN-Hutschienenmontage mit integrierter kanalweiser Leistungsmessung. Jeder der vier unabhängigen Ausgänge kann bis zu 16 A schalten (insgesamt 40 A) und eignet sich damit zur Steuerung von Beleuchtungskreisen, Geräten oder Verteilerlast mit individueller Energieüberwachung pro Kanal. TapHome kommuniziert mit dem Gerät über HTTP im lokalen Netzwerk — keine Cloud-Verbindung erforderlich.

Die Vorlage verwendet einen gemischten API-Ansatz: Gen2+ RPC-Endpunkte (/rpc/Switch.GetStatus?id=N) zum Lesen der Energiemessung und Gen1-Endpunkte (/relay/N?turn=on|off) zur Relaissteuerung. Beide API-Generationen werden vom Pro 4PM aus Gründen der Abwärtskompatibilität unterstützt. Das Gerät verbindet sich über WLAN oder Ethernet (RJ45) und verfügt über ein 1,8-Zoll-Farb-LCD-Display zur lokalen Statusüberwachung.

Konfiguration

Der Shelly Pro 4PM verbindet sich über WLAN oder Ethernet. Geben Sie beim TapHome-Vorlagenimport die IP-Adresse des Geräts ein (Standard-Platzhalter 192.168.0.1).

Die Authentifizierung muss auf dem Shelly-Gerät für die TapHome-Integration deaktiviert sein. TapHome unterstützt nicht die von Gen2-Geräten verwendete HTTP Digest Auth. Öffnen Sie die Shelly-Weboberfläche (http://{geraete-ip}) → Settings → Authentication und stellen Sie sicher, dass sie deaktiviert ist.

Das LAN-Kabel darf nur bei ausgeschaltetem Gerät eingesteckt oder abgezogen werden. Hot-Plugging des Ethernet-Kabels kann Probleme verursachen.

Wenn der ECO-Modus auf dem Shelly-Gerät aktiviert ist, kann er aufgrund der schnellen Abfrageintervalle der Vorlage (2,5–15 Sekunden) Kommunikations-Timeouts verursachen. Deaktivieren Sie den ECO-Modus in der Shelly-Weboberfläche, wenn Sie intermittierende Verbindungsprobleme feststellen.

Gerätefunktionen

Energiemessung

Die Vorlage stellt vier unabhängige Energiezähler-Geräte bereit, eines pro Kanal. Jeder Zähler liest von /rpc/Switch.GetStatus?id=N (wobei N 0–3 ist):

  • Echtzeitleistungapower in Watt, von der Vorlage in kW umgerechnet
  • Gesamtverbrauchaenergy.total in Wattstunden, von der Vorlage in kWh umgerechnet

Kanal 1 wird alle 2,5 Sekunden abgefragt für schnelleres Feedback. Kanäle 2–4 werden alle 15 Sekunden abgefragt.

Die Zähler sind schreibgeschützt — sie aktualisieren sich automatisch mit jedem Abfragezyklus.

Relaissteuerung

Die Vorlage stellt vier Relais-Schaltgeräte bereit, eines pro Kanal. Jedes Relais wird über den Gen1-Endpunkt /relay/N?turn=on|off gesteuert (wobei N 0–3 ist).

Die Relaisschalter sind nur schreibbar — die Vorlage liest den Relaisstatus nicht vom Gerät zurück. Der aktuelle Relaisstatus kann vom entsprechenden Energiezähler abgeleitet werden: Wenn der Kanal einen Verbrauch ungleich Null meldet, ist das Relais eingeschaltet. Ein zukünftiges Vorlagenupdate könnte eine Relaisstatus-Rückmeldung über das Gen2+ Feld /rpc/Switch.GetStatus?id=Noutput hinzufügen.

Leistungssensor

Ein eigenständiges Leistungssensor-Gerät stellt die aktive Rohleistung in Watt für Kanal 1 bereit (gelesen von /rpc/Switch.GetStatus?id=0apower). Im Gegensatz zum Energiezähler, der in kW umrechnet, meldet dieser Sensor den Wert in Watt ohne Umrechnung, nützlich für Automatisierungen, die Watt-Genauigkeit benötigen.

Service-Diagnose

Die Vorlage stellt 13 Service-Attribute zur Geräteüberwachung bereit:

  • Geräteinformationen — Hostname, MAC-Adresse, Gerätezeit, Betriebszeit, RAM-Auslastung
  • Thermoschutz — interne Temperatur (°C), Temperaturstatus (Normal / High / Very High), Übertemperatur-Flag
  • Konnektivität — Cloud aktiviert/verbunden, MQTT verbunden, Firmware-Update verfügbar
  • Leistungsschutz — aktuelles maximales Leistungslimit (gelesen von /settings)
Service-Aktionen

Drei Service-Aktionen stehen zur Verfügung:

  • Leistungsschutz einstellen — setzt das maximale Leistungslimit (1–3500 W). Das Relais schaltet automatisch ab, wenn der Verbrauch diesen Wert überschreitet.
  • Cloud aktivieren — aktiviert oder deaktiviert die Shelly-Cloud-Konnektivität
  • Neustart — löst einen Geräteneustart aus
Weitere Funktionen

Der Shelly Pro 4PM stellt auch kanalweise Spannung, Strom, Leistungsfaktor, Frequenz und interne Temperatur in seiner /rpc/Switch.GetStatus-Antwort bereit. Physische Schalter-/Tasteneingangszustände (S1–S4), Ethernet-Status, WLAN-RSSI und native Gen2+-Relaissteuerung mit Auto-Off-Timer sind über die RPC-API verfügbar. Diese Funktionen können in einem zukünftigen Vorlagenupdate hinzugefügt werden.

Fehlerbehebung

Gerät reagiert nicht
  1. Überprüfen Sie, ob der Shelly mit WLAN oder Ethernet verbunden ist und eine gültige IP-Adresse hat
  2. Versuchen Sie den mDNS-Hostnamen (shellypro4pm-AABBCCDDEE.local) statt der IP-Adresse — die IP kann sich nach einer DHCP-Erneuerung geändert haben
  3. Öffnen Sie http://{geraete-ip}/rpc/Shelly.GetDeviceInfo im Browser — wenn JSON zurückkommt, ist das Gerät erreichbar
  4. Prüfen Sie, ob TapHome Core und Shelly im gleichen Netzwerk / VLAN sind
  5. Stellen Sie sicher, dass die Authentifizierung auf dem Shelly-Gerät deaktiviert ist
Leistungswerte zeigen Null
  1. Bestätigen Sie, dass die Last über den Shelly-Relaisausgang (O1–O4) angeschlossen ist, nicht umgangen
  2. Prüfen Sie, ob das Relais eingeschaltet ist — der Zähler misst nur, wenn Strom durch das Relais fließt
  3. Rufen Sie /rpc/Switch.GetStatus?id=0 manuell auf und prüfen Sie, ob apower einen Wert ungleich Null zurückgibt
  4. Überprüfen Sie die korrekte Kanal-ID (id=0 für Ausgang 1, id=1 für Ausgang 2 usw.)
Relaisstatus unbekannt

Die Relaisschalter in dieser Vorlage sind nur schreibbar — sie senden Ein-/Aus-Befehle, lesen aber den Relaisstatus nicht zurück. Um den tatsächlichen Relaisstatus zu überprüfen:

  1. Prüfen Sie den entsprechenden Energiezähler — Leistung ungleich Null bedeutet, das Relais ist eingeschaltet
  2. Schauen Sie auf die Relais-LED-Anzeigen an der Gerätefront
  3. Testen Sie manuell über den Browser: http://{geraete-ip}/relay/0 gibt den aktuellen Relaisstatus als JSON zurück
Übertemperatur-Warnung

Der Shelly Pro 4PM verfügt über internen Thermoschutz. Wenn die Gerätetemperatur sichere Grenzwerte überschreitet, ändert sich temperature_status auf “High” oder “Very High” und overtemperature wird true. Sorgen Sie für ausreichende Belüftung im Verteilerkasten, insbesondere beim gleichzeitigen Schalten hoher Lasten über mehrere Kanäle.

V1 vs V2 Hardware

Beide Versionen verwenden dieselbe Firmware und API. V2 (SPSW-104PE16EU) hat verbesserte Anschlüsse — fünf einzelne Schraubklemmen statt vier 2-Klemmen-Blöcke — und bessere elektrische LAN-Isolation. Zwischen den Versionen sind keine Vorlagenänderungen erforderlich.

Gen2-Shelly-Geräte unterstützen bis zu 6 gleichzeitige HTTP-Verbindungen. Die Shelly Pro 4PM Vorlage verwendet bis zu 5 gleichzeitige Endpunkte pro Abfragezyklus (4 Energiezähler + Modulstatus), was wenig Spielraum lässt. Vermeiden Sie gleichzeitiges Polling von zu vielen Systemen.

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 4PM Modul
Serviceaktionen
Leistungsschutz einstellenMaximale Leistungsgrenze einstellen (1–3500 W) — Relais schaltet automatisch ab bei Überschreitung
Cloud aktivierenShelly-Cloud-Konnektivität aktivieren oder deaktivieren
NeustartGeräteneustart auslösen
Benutzerdefinierte Variablen
StatusJson (string)
SettingsJson (string)
status (string) = 0

Shelly 4 Pro

Lesen (Modul)
VAR response := SENDHTTPREQUEST("/status", "GET");
StatusJson := response.Content;
Serviceaktionen
Set power protection
Parameter: Maximum power (1–3500 Watts)
VAR response := SENDHTTPREQUEST("settings?max_power=" + Watts);
VAR contentJson := response.Content;
VAR limitSet := PARSEJSON(contentJson, "max_power");

"Power limit set to " + limitSet + "W"
Enable cloud
Parameter: Enable (Enable / Disable)
VAR response := SENDHTTPREQUEST("/settings/cloud?enabled=" + enable);
VAR contentJson := response.Content;
VAR wasEnabled := PARSEJSON(contentJson, "enabled");

IF(wasEnabled, "Cloud enabled", "Cloud disabled");
Reboot
VAR response := SENDHTTPREQUEST("/reboot");
VAR contentJson := response.Content;
VAR wasRebooted := PARSEJSON(contentJson, "ok");

IF(wasRebooted, "Reboot successful", "Error");
Kanal 1 Stromzähler Stromzähler Nur lesen

Kanalweise Leistungs- und Energiemessung für Ausgang 1 — Momentanleistung (kW) und kumulierte Energie (kWh)

numeric Einheit: W / kWh

Kanal 1 Stromzähler

Gesamtverbrauch lesen
return(parsejson(parsejson(status,"aenergy"), "total")/1000);
Bedarf lesen
return(parsejson(status,"apower")/1000);
Lesen (Modul)
var x := (sendhttprequest("/rpc/Switch.GetStatus?id=0"));
status := x.Content;
Kanal 2 Stromzähler Stromzähler Nur lesen

Kanalweise Leistungs- und Energiemessung für Ausgang 2 — Momentanleistung (kW) und kumulierte Energie (kWh)

numeric Einheit: W / kWh

Kanal 2 Stromzähler

Gesamtverbrauch lesen
return(parsejson(parsejson(status,"aenergy"), "total")/1000);
Bedarf lesen
return(parsejson(status,"apower")/1000);
Lesen (Modul)
var x := (sendhttprequest("/rpc/Switch.GetStatus?id=1"));
status := x.Content;
Kanal 3 Stromzähler Stromzähler Nur lesen

Kanalweise Leistungs- und Energiemessung für Ausgang 3 — Momentanleistung (kW) und kumulierte Energie (kWh)

numeric Einheit: W / kWh

Kanal 3 Stromzähler

Gesamtverbrauch lesen
return(parsejson(parsejson(status,"aenergy"), "total")/1000);
Bedarf lesen
return(parsejson(status,"apower")/1000);
Lesen (Modul)
var x := (sendhttprequest("/rpc/Switch.GetStatus?id=2"));
status := x.Content;
Kanal 4 Stromzähler Stromzähler Nur lesen

Kanalweise Leistungs- und Energiemessung für Ausgang 4 — Momentanleistung (kW) und kumulierte Energie (kWh)

numeric Einheit: W / kWh

Kanal 4 Stromzähler

Gesamtverbrauch lesen
return(parsejson(parsejson(status,"aenergy"), "total")/1000);
Bedarf lesen
return(parsejson(status,"apower")/1000);
Lesen (Modul)
var x := (sendhttprequest("/rpc/Switch.GetStatus?id=3"));
status := x.Content;
Kanal 2 Relais Schalter

Nur-Schreib-Relaissteuerung für Ausgang 2 — Status wird nicht zurückgelesen, aus Stromzähler ableiten

boolean
Werte / Zustände: ON · OFF

Kanal 2 Relais

Schaltzustand schreiben
VAR path := "relay/1?turn=" + SWITCH(St, 0, "off", 1, "on","off");
SENDHTTPREQUEST(path);
Kanal 1 Relais Schalter

Nur-Schreib-Relaissteuerung für Ausgang 1 — Status wird nicht zurückgelesen, aus Stromzähler ableiten

boolean
Werte / Zustände: ON · OFF

Kanal 1 Relais

Schaltzustand schreiben
VAR path := "relay/0?turn=" + SWITCH(St, 0, "off", 1, "on","off");
SENDHTTPREQUEST(path);
Kanal 1 Leistungssensor Variable Nur lesen

Rohwirkleistung in Watt für Kanal 1 — eigenständiger Sensorwert ohne kW-Umrechnung

numeric Einheit: W

Kanal 1 Leistungssensor

Lesen
return(parsejson(status,"apower"));
Lesen (Modul)
var x := (sendhttprequest("/rpc/Switch.GetStatus?id=0"));
status := x.Content;
Kanal 3 Relais Schalter

Nur-Schreib-Relaissteuerung für Ausgang 3 — Status wird nicht zurückgelesen, aus Stromzähler ableiten

boolean
Werte / Zustände: ON · OFF

Kanal 3 Relais

Schaltzustand schreiben
VAR path := "relay/2?turn=" + SWITCH(St, 0, "off", 1, "on","off");
SENDHTTPREQUEST(path);
Kanal 4 Relais Schalter

Nur-Schreib-Relaissteuerung für Ausgang 4 — Status wird nicht zurückgelesen, aus Stromzähler ableiten

boolean
Werte / Zustände: ON · OFF

Kanal 4 Relais

Schaltzustand schreiben
VAR path := "relay/3?turn=" + SWITCH(St, 0, "off", 1, "on","off");
SENDHTTPREQUEST(path);
Verbindung: Packet Parser → HTTP
Mögliche Verbesserungen (10)
  • Relay State Read — Switches have no readswitchstate script — relay state is not read back. Gen2+ /rpc/Switch.GetStatus?id=N provides output (boolean) for state feedback.
  • Voltage — Per-channel line voltage in V, available in /rpc/Switch.GetStatus response
  • Current — Per-channel load current in A, available in /rpc/Switch.GetStatus response
  • Power Factor — Per-channel power factor, available in /rpc/Switch.GetStatus response
  • Frequency — Network frequency in Hz, available in /rpc/Switch.GetStatus response
  • Per-Channel Temperature — Internal temperature in °C per switch component, available in /rpc/Switch.GetStatus response
  • Input States (S1-S4) — 4 physical switch/button inputs, available via /rpc/Input.GetStatus?id=0..3
  • Gen2+ Relay Control — Native Gen2+ relay control with toggle_after timer support. Template uses Gen1 /relay/N instead.
  • WiFi Status (SSID, IP, RSSI) — WiFi status including signal strength, available via Gen2+ RPC
  • Ethernet Status — Pro 4PM has RJ45 LAN port; Ethernet status (IP, link) available via /rpc/Ethernet.GetStatus

Quellen