---
title: "Shelly Plug S"
description: "Shelly Plug S über einen MQTT-Broker: Relais schalten, Leistung und Energieverbrauch messen und die interne Gerätetemperatur in TapHome sehen."
url: "https://taphome.com/de/compatibility/shelly-plug-s-mqtt/"
language: de
lastmod: 2026-03-31
generator: hugo
ai:
  topics: ["mqtt","smart-plug","wifi","energy-monitoring","relay-control"]
  questions: ["Wie integriere ich den Shelly Plug S mit TapHome über MQTT?","Was misst die Shelly Plug S Vorlage in TapHome?","Wie finde ich die MQTT Device ID des Shelly Plug S?","Warum meldet mein Shelly Plug S keine Leistungsdaten?","Wie steuere ich das Shelly Plug S Relais über TapHome?","Meldet die Shelly Plug S Vorlage den Energieverbrauch in kWh?"]
---

# Shelly Plug S

Kommunikation: Packet Parser → MQTT

- [Shelly Plug S Produktseite](https://www.shelly.com/en/products/shop/shelly-plug-s)

> 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 Plug S ist eine kompakte Wi-Fi Smart-Steckdose mit integrierter Energiemessung, ausgelegt auf 12A / 2500W. TapHome kommuniziert mit dem Gerät über MQTT — die Steckdose verbindet sich mit einem Broker und veröffentlicht den Relais-Status, den Energieverbrauch, den Energiezähler und die interne Temperatur.

Die Vorlage stellt zwei Geräte bereit: einen Stromzähler zur Energieüberwachung und einen Schalter zur Relaissteuerung. Ein Serviceattribut auf Modulebene meldet die interne Gerätetemperatur.

## Konfiguration

### Device ID

Jeder Shelly Plug S hat eine eindeutige MQTT Device ID im Format `shellyplug-s-<MAC6>`, wobei `<MAC6>` die letzten 6 Zeichen der MAC-Adresse in hexadezimaler Kleinschreibung sind (z. B. `shellyplug-s-112233`).

Die Device ID finden Sie:

- In der Shelly Web-Oberfläche: **Settings** → **Device Info** → **Device ID** (verwenden Sie die erste Zeichenkette, nicht in Klammern)
- Über API: `GET http://<device-ip>/settings` → Feld `mqtt.id`

### MQTT aktivieren

MQTT auf dem Shelly Plug S aktivieren:

1. Öffnen Sie die Web-Oberfläche des Geräts im Browser (navigieren Sie zur IP-Adresse des Geräts)
2. Gehen Sie zu **Internet and Security** → **Advanced - Developer Settings**
3. Aktivieren Sie **„Enable action execution via MQTT"**
4. Geben Sie im Feld **„Server"** `{MQTT-Broker-IP}:{Port}` ein (Standardport `1883`)
5. Klicken Sie auf **SAVE**

### Vorlage einrichten

Nach dem Import der Vorlage in TapHome:

1. Öffnen Sie das Modul **Shelly Plug S MQTT**
2. Setzen Sie **MQTT Broker IP** und **Port** (Standard `1883`)
3. Setzen Sie die Variable **deviceID** auf die Device ID des Shelly Plug S (z. B. `112233` — nur die letzten 6 Hex-Zeichen der MAC-Adresse)

Das Modul abonniert `shellies/#` und die Listener-Skripte filtern Nachrichten nach dem konfigurierten Device-ID-Präfix `shellyplug-s-{deviceID}`.

## Gerätefunktionen

### Energieüberwachung

Das Stromzähler-Gerät liest zwei Werte von der Steckdose:

- **Gesamtverbrauch** — kumulativer Energiewert vom Topic `relay/0/energy`. Das Gerät meldet Energie in Wattminuten; die Vorlage konvertiert in kWh durch Division durch 60000.
- **Momentanleistung** — aktueller Leistungsbezug vom Topic `relay/0/power`. Das Gerät meldet Leistung in Watt; die Vorlage konvertiert in kW durch Division durch 1000.

Beide Werte werden gemäß dem MQTT-Meldeintervall aktualisiert (Standard 30 Sekunden, konfigurierbar in der Shelly Web-Oberfläche über `mqtt_update_period`).

> [!TIP]
> Der Energiezähler wird beim Neustart des Geräts zurückgesetzt. Für eine dauerhafte Energieverfolgung verwenden Sie die integrierte Energieprotokollierung von TapHome, die kumulative Werte unabhängig vom Gerätezähler speichert.

### Relaissteuerung

Das Schalter-Gerät steuert das Relais der Steckdose:

- **Status lesen** — lauscht auf Topic `shellies/shellyplug-s-{deviceID}/relay/0` und mappt `on` → 1, `off` → 0
- **Status schreiben** — veröffentlicht auf Topic `shellies/shellyplug-s-{deviceID}/relay/0/command` mit `on` oder `off`

Das Relais unterstützt eine Last von bis zu 2500W / 12A.

### Temperaturüberwachung

Ein Serviceattribut auf Modulebene meldet die interne Gerätetemperatur in °C, gelesen vom Topic `shellies/shellyplug-s-{deviceID}/temperature`. Dies ist die Temperatur der Steckdosen-Elektronik, nicht die Umgebungstemperatur.

### Weitere Funktionen

Der Shelly Plug S veröffentlicht auch einen Online/Offline-Status über das MQTT-LWT-Topic, Überhitzungswarnungen (wenn das Gerät die sichere Betriebstemperatur überschreitet), eine lesbare Temperaturstatusklassifikation (Normal/High/Very High) und Tastenereignisse (kurzes Drücken, langes Drücken, doppeltes Drücken). Diese Funktionen können in einem zukünftigen Vorlagen-Update hinzugefügt werden.

## Fehlerbehebung

### Keine Daten von der Steckdose

1. Überprüfen Sie, dass der Shelly Plug S mit Wi-Fi verbunden ist und MQTT in den Geräteeinstellungen aktiviert ist (**Internet and Security** → **Advanced - Developer Settings**)
2. Prüfen Sie, ob die Variable **deviceID** exakt mit der Device ID übereinstimmt (z. B. `112233`)
3. Verwenden Sie einen MQTT-Client (z. B. MQTT Explorer), um `shellies/#` zu abonnieren und zu überprüfen, ob die Steckdose Nachrichten veröffentlicht

### Leistungswerte zeigen null

1. Bestätigen Sie, dass eine Last angeschlossen und das Relais eingeschaltet ist
2. Prüfen Sie das Topic `relay/0/power` mit einem MQTT-Client — der Wert sollte ungleich null sein, wenn eine Last Strom bezieht
3. Überprüfen Sie, dass das Stromzähler-Gerät Werte in TapHome anzeigt — Gesamtverbrauch in kWh, Leistung in kW

### Relais reagiert nicht auf Befehle

1. Überprüfen Sie, dass MQTT aktiviert ist und die Broker-Adresse in der Shelly Web-Oberfläche korrekt ist
2. Prüfen Sie, ob TapHome den MQTT-Broker erreichen kann (korrekte IP und Port in den Moduleinstellungen)
3. Testen Sie durch Veröffentlichung von `on` oder `off` auf Topic `shellies/shellyplug-s-{deviceID}/relay/0/command` über einen MQTT-Client

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

## 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 2

Diese Geräte erscheinen nach dem Import in TapHome.

Shelly Plug S MQTT Modul

Serviceattribute

|            |                                                          |
|------------|----------------------------------------------------------|
| Temperatur | Interne Gerätetemperatur — nicht die Umgebungstemperatur |

Benutzerdefinierte Variablen

|                     |                                                                                                                                                                        |
|---------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `deviceID` (string) | MQTT Device ID des Shelly Plug S — letzte 6 Zeichen der MAC-Adresse in hexadezimaler Kleinschreibung (zu finden in der Shelly Web-Oberfläche → Settings → Device Info) |

Listener

```taphome
VAR whatT := "shellies/shellyplug-s-"+deviceID+"/temperature";
IF (whatT = RECEIVEDMSG.TOPIC)
 temperatureC := TOSTRING(RECEIVEDMSG.PAYLOAD);
END
```

Serviceattribute

Temperature \[°C ]

```taphome
temperatureC
```

Stromzähler Stromzähler Nur lesen

Leistungs- und Energiemessung — Momentanleistung (kW) und kumulativer Energieverbrauch (kWh)

numeric Einheit: kWh (total), kW (demand) energy: Watt-minutes /60000 = kWh; demand: Watts /1000 = kW

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 whatTo := "shellies/shellyplug-s-"+deviceID+"/relay/0/energy";
IF (whatTo = RECEIVEDMSG.TOPIC)
 To := TODOUBLE(TOSTRING(RECEIVEDMSG.PAYLOAD))/60000;
END
VAR whatEd := "shellies/shellyplug-s-"+deviceID+"/relay/0/power";
IF (whatEd = RECEIVEDMSG.TOPIC)
 Ed := TODOUBLE(TOSTRING(RECEIVEDMSG.PAYLOAD))/1000;
END
```

Schalter Schalter Lesen und Schreiben

string on→1, off→0 (read); 1→on, 0→off (write)

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
# Simple HTTP Request:
MQTTPUBLISH("shellies/shellyplug-s-"+deviceID+ "/relay/0/command",if(St = 1, "on","off"));
# 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






#MQTTPUBLISH(topic + "/relay/0/command",if());
```

Listener

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

**Verbindung:** Packet Parser → MQTT

Mögliche Verbesserungen (6)

- Connection Status — LWT topic — true on connect, false on disconnect. Could detect offline device.
- Overtemperature Alert — 1 = overheated, 0 = normal. Could trigger safety alarm when device exceeds safe operating temperature.
- Temperature Status — String: Normal, High, or Very High. Human-readable temperature classification.
- Button Input State — 0 or 1 — physical button state on the device.
- Button Input Event — JSON payload with event type (S=short, L=long, SS=double, SSS=triple) and event counter.
- Overpower State — Relay topic can report 'overpower' payload when load exceeds rating. Not parsed in listener script.

## 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 Plug S — Device-Specific MQTT API
  
  [shelly-api-docs.shelly.cloud](https://shelly-api-docs.shelly.cloud/gen1/#shelly-plug-plugs-mqtt) 2026-03-31

## 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/)

