TapHome

Shelly 2.5

Packet Parser → HTTP
Eingereicht von
Zuletzt aktualisiert: 03. 2026
Shelly 2.5

Der Shelly 2.5 ist ein kompaktes Dual-Kanal-WLAN-Relais mit integrierter Leistungsmessung auf beiden Kanälen. Er passt hinter einen Standard-Wandschalter und kann zwei unabhängige Stromkreise steuern, jeweils bis zu 10 A (2300 W bei 230 V), mit einem Gesamtmaximum von 20 A. Das Gerät unterstützt zwei Betriebsmodi — Relais (zwei unabhängige Schalter) und Rollladen (koordinierte Motorsteuerung) — die TapHome-Vorlage implementiert jedoch nur den Relaismodus. TapHome kommuniziert mit dem Gerät über HTTP im lokalen Netzwerk — keine Cloud-Verbindung erforderlich.

Die Vorlage stellt zwei Relaisschalter und zwei Energiezähler (einen pro Kanal) bereit, plus eine Serviceaktion zum Umschalten zwischen Relais- und Rollladenmodus.

Konfiguration

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

Der aktuelle Betriebsmodus wird als Serviceattribut auf Modulebene (“Mode”) bereitgestellt und kann über die Serviceaktion “Mode” geändert werden. Das Umschalten zwischen Relais- und Rollladenmodus erfordert einen Geräteneustart.

Gerätefunktionen

Relaissteuerung

Die Vorlage stellt zwei unabhängige Relaiskanäle bereit. Der Status jedes Relais wird vom jeweiligen /relay/-Endpunkt gelesen (Feld ison) und über turn=on oder turn=off gesteuert.

  • Kanal 1 — liest und steuert /relay/0
  • Kanal 2 — liest und steuert /relay/1

Jedes Relais hat drei Serviceattribute:

  • Overpower — ob ein Überleistungszustand auf dem Kanal erkannt wurde
  • Overtemperature — ob das Gerät seine sichere Betriebstemperatur überschritten hat
  • Power Meter — Messgültigkeit (OK oder Fehler)
Leistungsmessung

Jeder Kanal hat einen dedizierten Energiezähler, der zwei Werte vom /meter/-Endpunkt liest:

  • Echtzeitleistungpower in Watt, von der Vorlage in kW umgerechnet
  • Gesamtverbrauchtotal in Watt-Minuten, von der Vorlage in kWh umgerechnet

Jeder Energiezähler stellt ein Serviceattribut “Overpower” bereit, das den Überleistungsschwellenwert anzeigt (in Watt, geteilt durch 1000).

Die Zähler sind schreibgeschützt — sie aktualisieren sich automatisch mit jedem Abfragezyklus (15-Sekunden-Intervall).

Bekanntes Problem — Energiewert von Kanal 1 ist 10× zu hoch. Die Vorlage teilt total für Kanal 1 durch 6000 statt durch 60000 (was Kanal 2 korrekt verwendet). Das bedeutet, dass der kumulative Energiewert für Kanal 1 etwa 10-mal höher als der tatsächliche Verbrauch sein wird. Dies ist ein Fehler in der Umrechnungsformel der Vorlage.

Weitere Funktionen

Der Shelly 2.5 unterstützt nativ volle Rollladensteuerung (Öffnen/Schließen/Stopp mit 0–100% Position nach Kalibrierung), gleitende Einminuten-Leistungsdurchschnitte pro Kanal, physische Schaltereingangszustände, interne Gerätetemperatur, WLAN-Signalstärke und Auto-Off-Timer pro Kanal. Das Gerät kann auch bis zu vier bevorzugte Rollladenpositionen speichern. Diese Funktionen können in einer zukünftigen Vorlagenaktualisierung hinzugefügt werden.

Im Vergleich zur Shelly 1PM-Vorlage stellt die Shelly 2.5-Vorlage keine Gerätediagnose bereit wie Hostname, MAC-Adresse, Betriebszeit, RAM-Auslastung, Cloud/MQTT-Status, Firmware-Update-Verfügbarkeit oder interne Temperatur. Es fehlen auch die Leistungsschutz-Serviceaktion (maximale Leistungsgrenze) und die Neustart-Aktion.

Fehlerbehebung

Gerät antwortet nicht
  1. Überprüfen Sie, dass der Shelly mit dem WLAN verbunden ist und eine gültige IP-Adresse hat
  2. Versuchen Sie den mDNS-Hostnamen (shellyswitch25-AABBCCDDEE.local) anstelle der IP-Adresse — die IP könnte sich nach einer DHCP-Erneuerung geändert haben
  3. Öffnen Sie http://{device-ip}/shelly im Browser — wenn er antwortet, ist das Gerät erreichbar
  4. Stellen Sie sicher, dass TapHome CCU und Shelly im selben Netzwerk / VLAN sind
Leistungswerte zeigen Null
  1. Bestätigen Sie, dass die Last über das Shelly-Relais angeschlossen ist (nicht umgangen)
  2. Prüfen Sie, dass das Relais eingeschaltet ist — der Zähler misst nur, wenn Strom durch das Relais fließt
  3. Rufen Sie /meter/0 oder /meter/1 manuell ab und überprüfen Sie, ob power einen Nicht-Null-Wert zurückgibt
Energiesumme von Kanal 1 scheint falsch

Die Vorlage teilt den Gesamtwert von Kanal 1 durch 6000 statt durch das korrekte 60000 (das Kanal 2 verwendet). Dadurch ist der kumulative Energiewert für Kanal 1 10× höher als tatsächlich. In der Vorlage gibt es derzeit keine Abhilfe — der Umrechnungsfaktor ist im Abfrageskript eingebettet.

Gen1-Shelly-Geräte unterstützen nur 2 gleichzeitige HTTP-Verbindungen. Wenn TapHome und ein anderes System (z.B. Home Assistant) dasselbe Gerät gleichzeitig abfragen, kann die Kommunikation unzuverlässig werden. Die Relais-Endpunkte werden alle 2,5 Sekunden und die Zähler-Endpunkte alle 15 Sekunden abgefragt.

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 2.5 Modul
Serviceattribute
Modus
Serviceaktionen
Modus

Shelly2.5

Serviceattribute
Mode
 VAR response := SENDHTTPREQUEST("/settings");
 IF response.IsSuccess
  VAR content := response.Content;
  VAR responseHeaders := response.Headers;
  RETURN(PARSEJSON(content, "mode"));
 END
Serviceaktionen
Mode
Parameter: Mode
var St := SWITCH(mo, 1, "roller", "relay");
 VAR response := SENDHTTPREQUEST("/settings?mode=" + St);
Stromzähler — Kanal 1 Stromzähler Nur lesen

Leistungs- und Energiemessung für Kanal 1 — Momentanleistung (kW) und kumulierte Energie (kWh). Hinweis: Energiewert ist 10× zu hoch aufgrund eines Vorlagen-Divisor-Fehlers (/6000 statt /60000)

numeric Einheit: W / kWh
Serviceattribute
Überleistung

Stromzähler — Kanal 1

Gesamtverbrauch lesen
VAR response := SENDHTTPREQUEST("/meter/0");
 IF response.IsSuccess
  VAR content := response.Content;
 VAR responseHeaders := response.Headers;
 RETURN(PARSEJSON(content, "total")/6000);
 ELSE 
 ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
  RETURN(NaN);
 END
Bedarf lesen
VAR response := SENDHTTPREQUEST("/meter/0");
 IF response.IsSuccess
  VAR content := response.Content;
 VAR responseHeaders := response.Headers;
 RETURN(PARSEJSON(content, "power")/1000);
 ELSE 
 ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
  RETURN(NaN);
 END
Serviceattribute
Overpower
 VAR response := SENDHTTPREQUEST("/meter/0");
 IF response.IsSuccess
  VAR content := response.Content;
 RETURN((PARSEJSON(content, "overpower")/1000) + " W");
 END
Stromzähler — Kanal 2 Stromzähler Nur lesen

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

numeric Einheit: W / kWh
Serviceattribute
Überleistung

Stromzähler — Kanal 2

Gesamtverbrauch lesen
VAR response := SENDHTTPREQUEST("/meter/1");
 IF response.IsSuccess
  VAR content := response.Content;
 VAR responseHeaders := response.Headers;
 RETURN(PARSEJSON(content, "total")/60000);
 ELSE 
 ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
  RETURN(NaN);
 END
Bedarf lesen
VAR response := SENDHTTPREQUEST("/meter/1");
 IF response.IsSuccess
  VAR content := response.Content;
 VAR responseHeaders := response.Headers;
 RETURN(PARSEJSON(content, "power")/1000);
 ELSE 
 ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
  RETURN(NaN);
 END
Serviceattribute
Overpower
 VAR response := SENDHTTPREQUEST("/meter/1");
 IF response.IsSuccess
  VAR content := response.Content;
 VAR responseHeaders := response.Headers;
 RETURN((PARSEJSON(content, "overpower")/1000) + " W");
 END
Relais — Kanal 1 Schalter
boolean
Werte / Zustände: ON · OFF

Relais — Kanal 1

Schaltzustand lesen
VAR response := SENDHTTPREQUEST("/relay/0");
 IF response.IsSuccess
  VAR content := response.Content;
  VAR responseHeaders := response.Headers;
  RETURN(PARSEJSON(content, "ison"));
 ELSE
  ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
  RETURN(NaN);
 END
Schaltzustand schreiben
var turn := Switch(St, 1, "on", "off");
 VAR response := SENDHTTPREQUEST("/relay/0?turn=" + turn);
 IF response.IsSuccess = false
  ADDERROR(response.StatusCode);
 END
Serviceattribute
Overpower
 VAR response := SENDHTTPREQUEST("/relay/0");
 IF response.IsSuccess
  VAR content := response.Content;
  RETURN(IF(PARSEJSON(content, "overpower"),"Yes", "No"));
 END
Overtemperature
 VAR response := SENDHTTPREQUEST("/relay/0");
 IF response.IsSuccess
  VAR content := response.Content;
  RETURN(IF(PARSEJSON(content, "overtemperature"),"Yes", "No"));
 END
Power Meter
 VAR response := SENDHTTPREQUEST("/relay/0");
 IF response.IsSuccess
  VAR content := response.Content;
  RETURN(IF(PARSEJSON(content, "is_valid"),"OK","Fault"));
 END
Relais — Kanal 2 Schalter
boolean
Werte / Zustände: ON · OFF

Relais — Kanal 2

Schaltzustand lesen
VAR response := SENDHTTPREQUEST("/relay/1");
 IF response.IsSuccess
  VAR content := response.Content;
  VAR responseHeaders := response.Headers;
  RETURN(PARSEJSON(content, "ison"));
 ELSE
  ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
  RETURN(NaN);
 END
Schaltzustand schreiben
var turn := Switch(St, 1, "on", "off");
 VAR response := SENDHTTPREQUEST("/relay/1?turn=" + turn);
 IF response.IsSuccess = false
  ADDERROR(response.StatusCode);
 END
Serviceattribute
Overpower
 VAR response := SENDHTTPREQUEST("/relay/1");
 IF response.IsSuccess
  VAR content := response.Content;
  RETURN(IF(PARSEJSON(content, "overpower"),"Yes", "No"));
 END
Overtemperature
 VAR response := SENDHTTPREQUEST("/relay/1");
 IF response.IsSuccess
  VAR content := response.Content;
  RETURN(IF(PARSEJSON(content, "overtemperature"),"Yes", "No"));
 END
Power Meter
 VAR response := SENDHTTPREQUEST("/relay/1");
 IF response.IsSuccess
  VAR content := response.Content;
  RETURN(IF(PARSEJSON(content, "is_valid"),"OK","Fault"));
 END
Verbindung: Packet Parser → HTTP
Mögliche Verbesserungen (9)
  • Roller Shutter Control — Full roller shutter control (open/close/stop/position 0-100%) — the Shelly 2.5's key dual-mode feature. Template only implements relay mode.
  • Roller Position — Current roller position 0-100% (requires calibration). Not available without /roller/ endpoint.
  • Roller Calibration — Initiates travel-time calibration procedure for position control.
  • Rolling Power Averages — 3 rolling one-minute power averages per channel, available in /meter/ response
  • Input States — Physical switch input states (0/1) for both channels, available in /status response
  • Internal Device Temperature — Internal temperature in C available in /status response (not exposed as a device, only as relay SA)
  • Auto-off Timer — Per-channel auto-off timer in seconds, could be added as service action parameter
  • WiFi Signal Strength — WiFi RSSI in dBm, available in /status response
  • Favorite Positions (Roller Mode) — Up to 4 saved roller shutter positions — only relevant if roller mode is implemented

Quellen