TapHome

Shelly Plus 1PM

Packet Parser → MQTT
Eingereicht von
Zuletzt aktualisiert: 04. 2026
Shelly Plus 1PM

Das Shelly Plus 1PM ist ein kompaktes Gen2+ WLAN-Relais mit integrierter Leistungsmessung. Es passt hinter einen Standard-Wandschalter und kann einen Stromkreis bis 16 A (3500 W bei 230 V AC) oder 10 A (30 V DC) steuern. Dies ist die MQTT-Variante der TapHome-Vorlage — das Gerät kommuniziert über einen MQTT-Broker anstelle von direktem HTTP-Polling, was in Umgebungen mit mehreren Controllern oder wenn sich das Gerät in einem anderen VLAN befindet nützlich ist.

Die Vorlage enthält zwei Geräte: einen Stromzähler für Leistungs- und Energieüberwachung und einen Schalter für die Relaissteuerung. Drei Serviceattribute auf Modulebene zeigen interne Temperatur, Spannung und Strom an.

Konfiguration

MQTT Client ID

Jedes Shelly Plus 1PM hat eine eindeutige MQTT Client ID im Format shellyplus1pm-<DEVICEID>, wobei <DEVICEID> die 12-stellige hexadezimale MAC-Adresse ist (z. B. shellyplus1pm-AABBCCDDEE00).

Die Client ID finden Sie:

  • In der Shelly Web-Oberfläche: SettingsMQTTClient ID
  • Über API: GET http://<device-ip>/rpc/MQTT.GetConfig → Feld client_id
  • Auf dem Geräteetikett (MAC-Adresse)

Dieses Gerät unterstützt mDNS-Discovery. Sie können den Hostnamen shellyplus1pm-{MAC}.local anstelle einer IP-Adresse verwenden, um die Konnektivität zu prüfen. Ersetzen Sie {MAC} durch die vollständige MAC-Adresse des Geräts in hexadezimaler Kleinschreibung (z. B. shellyplus1pm-aabbccddee00.local).

MQTT aktivieren
  1. Öffnen Sie die Shelly Web-Oberfläche: http://<device-ip>/
  2. Navigieren Sie zu SettingsMQTT
  3. Aktivieren Sie MQTT
  4. Setzen Sie Server: <broker-ip>:<port> (z. B. 192.168.1.10:1883)
  5. Die Client ID ist automatisch ausgefüllt — belassen Sie sie unverändert, es sei denn, Sie haben einen bestimmten Grund sie zu ändern
  6. Klicken Sie auf Save und starten Sie das Gerät neu

Um die MQTT-Funktion zu überprüfen, verwenden Sie einen MQTT-Client (z. B. MQTT Explorer) und abonnieren Sie shellyplus1pm-<DEVICEID>/#. Sie sollten Statusnachrichten vom Gerät sehen, einschließlich shellyplus1pm-<DEVICEID>/status/switch:0.

Vorlageneinrichtung

Nach dem Import der Vorlage in TapHome:

  1. Öffnen Sie das Shelly Plus 1PM MQTT Module
  2. Setzen Sie die MQTT Broker IP und den Port (Standard 1883)
  3. Setzen Sie die Variable plug1topic auf die MQTT Client ID Ihres Shelly Plus 1PM (z. B. shellyplus1pm-AABBCCDDEE00)

Das Modul abonniert {plug1topic}/status/switch:0 und veröffentlicht Steuerbefehle an {plug1topic}/command/switch:0.

Gerätefähigkeiten

Leistungsmessung

Der Stromzähler liest zwei Werte aus der MQTT-Statusnachricht {plug1topic}/status/switch:0:

  • Momentanleistungapower in Watt gemeldet, von der Vorlage in kW umgerechnet (Division durch 1000)
  • Kumulativer Energieverbrauchaenergy.total in Wattstunden gemeldet, von der Vorlage in kWh umgerechnet (Division durch 1000)

Der Zähler ist schreibgeschützt — er aktualisiert sich automatisch, wenn das Gerät eine Statusnachricht an den MQTT-Broker sendet.

Relaissteuerung

Der Schalter steuert das Relais:

  • Status lesen — abonniert {plug1topic}/status/switch:0 und liest das boolesche Feld output
  • Status schreiben — veröffentlicht on oder off an {plug1topic}/command/switch:0

Das Relais unterstützt Lasten bis 3500 W / 16 A bei 230 V AC.

Diagnose

Drei Serviceattribute auf Modulebene werden aus demselben JSON-Payload status/switch:0 geparst:

AttributEinheitBeschreibung
Interne Temperatur°CInterne Gerätetemperatur — überwacht den thermischen Zustand von Relais und PCB
SpannungVWechselstrom-Versorgungsspannung am Relaiseingang
StromALaststrom durch den Relaisausgang

Alle drei Attribute zeigen „Unknown" an, bis die erste MQTT-Statusnachricht eintrifft (Anfangswert ist NaN).

Weitere Fähigkeiten

Das Shelly Plus 1PM bietet auch Leistungsfaktor, Netzfrequenz, rückgespeiste Energie (für bidirektionale Messung), physischen Eingangsstatus, Toggle-Befehl, Auto-Off-Timer und eine erzwungene Statusaktualisierung über seine MQTT-API. Diese Fähigkeiten können in einem zukünftigen Vorlagen-Update hinzugefügt werden.

Fehlerbehebung

MQTT-Nachrichten kommen nicht an
  1. Überprüfen Sie, dass MQTT in der Shelly Web-Oberfläche aktiviert ist (SettingsMQTT)
  2. Stellen Sie sicher, dass Broker-Adresse und Port sowohl in den Shelly-Geräteeinstellungen als auch in den TapHome-Moduleinstellungen korrekt sind
  3. Prüfen Sie, ob die Variable plug1topic exakt mit der MQTT Client ID des Shelly übereinstimmt (z. B. shellyplus1pm-AABBCCDDEE00)
  4. Verwenden Sie einen MQTT-Client (z. B. MQTT Explorer) und abonnieren Sie shellyplus1pm-#, um zu überprüfen, ob das Gerät Nachrichten sendet
Leistungsmessung zeigt Null
  1. Stellen Sie sicher, dass die Last über das Shelly-Relais angeschlossen ist (nicht umgangen)
  2. Prüfen Sie, ob das Relais eingeschaltet ist — der Zähler misst nur bei Stromfluss durch das Relais
  3. Abonnieren Sie {plug1topic}/status/switch:0 mit einem MQTT-Client und prüfen Sie, ob apower einen Wert ungleich Null zurückgibt
Relais reagiert nicht auf Befehle
  1. Überprüfen Sie, ob TapHome den MQTT-Broker erreichen kann (korrekte IP und Port in den Moduleinstellungen)
  2. Prüfen Sie, ob der Wert von plug1topic mit der MQTT Client ID des Geräts übereinstimmt
  3. Testen Sie durch Veröffentlichung von on an {plug1topic}/command/switch:0 über einen MQTT-Client — das Relais sollte einschalten
Diagnose zeigt „Unknown"
  1. Alle drei Serviceattribute (Temperatur, Spannung, Strom) zeigen „Unknown" bis zum Eintreffen der ersten Statusnachricht
  2. Wenn die Werte nach dem Einschalten des Geräts „Unknown" bleiben, prüfen Sie, ob die MQTT-Verbindung aktiv ist und Statusnachrichten gesendet werden
  3. Starten Sie das Shelly-Gerät neu, um eine neue Statusveröffentlichung zu erzwingen

Gen2+ Shelly-Geräte unterstützen MQTT mit optionalem TLS. Wenn TLS nicht konfiguriert ist, erfolgt die Kommunikation zwischen Gerät und MQTT-Broker unverschlüsselt (Plain MQTT, Port 1883). Für verschlüsselte Kommunikation aktivieren Sie TLS in den Shelly MQTT-Einstellungen und verwenden Sie Port 8883.

Installation in TapHome

Voraussetzungen

  • Shelly-Gerät mit Wi-Fi verbunden (siehe HTTP-Verbindungsanleitung, falls noch nicht geschehen)
  • 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

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 & SecurityAdvanced — 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 SettingsMQTT
  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

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 SettingsDevice InfoDevice 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: Geben Sie die IP-Adresse des MQTT-Brokers ein (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

Shelly Plus 1PM MQTT Module Modul
Serviceattribute
Interne TemperaturInterne Gerätetemperatur — überwacht den thermischen Zustand von Relais und PCB
SpannungWechselstrom-Versorgungsspannung am Relaiseingang
StromLaststrom durch den Relaisausgang
Benutzerdefinierte Variablen
plug1topic (string)MQTT Client ID des Shelly Plus 1PM — Format ist 'shellyplus1pm-<deviceid>'. Zu finden in der Web-Oberfläche des Geräts: Settings → MQTT Settings → Client ID

Shelly Plus 1PM MQTT Module

Listener
IF(INDEXOF(plug1topic, "shellyplus1pm-deviceid") = 0)
    ADDERROR("Set correct 'plug1topic' value in module variables. Topic format is 'shellyplus1pm-<deviceid>'. The Device ID can be found by opening url 'http://shellyIpAddress', in Settings -> MQTT Settings -> Client ID.");
    RETURN(-1);
END

IF(RECEIVEDMSG.TOPIC = plug1topic + "/status/switch:0")
    internalTemp := PARSEJSON(RECEIVEDMSG.PAYLOAD, "temperature.tC");
    voltage := PARSEJSON(RECEIVEDMSG.PAYLOAD, "voltage");
    current := PARSEJSON(RECEIVEDMSG.PAYLOAD, "current");
    VAR errors := PARSEJSON(RECEIVEDMSG.PAYLOAD, "errors", TRUE);
    
    IF (!ISNULL(errors))
        VAR errCount := LENGTH(errors);
        VAR i := 0;
        VAR errorText := "";
        
        WHILE i < errCount
            IF LENGTH(errorText)
                errorText += ", ";
            END
            errorText := errorText + GETAT(errors, i);
            i += 1;
        LOOP
        
        IF LENGTH(errorText)
            ADDERROR(errorText);
        END
    END
END
Serviceattribute
Internal temperature
IF(ISNAN(internalTemp), "Unknown", internalTemp + "°C");
Voltage
IF(ISNAN(voltage), "Unknown", voltage + "V");
Current
IF(ISNAN(current), "Unknown", current + "A");
Shelly Plus 1PM MQTT Power Stromzähler Nur lesen

Momentanleistung (kW) und kumulativer Energieverbrauch (kWh) aus dem MQTT-Status-Payload

numeric Einheit: kW / kWh

Shelly Plus 1PM MQTT Power

Listener
IF(INDEXOF(plug1topic, "shellyplus1pm-deviceid") = 0)
    ADDERROR("Set correct 'plug1topic' value in module variables. Topic format is 'shellyplus1pm-<deviceid>'. The Device ID can be found by opening url 'http://shellyIpAddress', in Settings -> MQTT Settings -> Client ID.");
    RETURN(-1);
END

IF(RECEIVEDMSG.TOPIC = plug1topic + "/status/switch:0")
    Ed := PARSEJSON(RECEIVEDMSG.PAYLOAD, "apower") / 1000.0;
    To := PARSEJSON(RECEIVEDMSG.PAYLOAD, "aenergy.total") / 1000.0;
END
Shelly Plus 1PM MQTT Switch Schalter

Relais Ein/Aus-Steuerung über MQTT-Befehlstopic

boolean
Werte / Zustände: ON · OFF

Shelly Plus 1PM MQTT Switch

Schaltzustand schreiben
VAR value := IF(St = 1, "on", "off");
MQTTPUBLISH(plug1topic + "/command/switch:0", value);
Listener
IF(INDEXOF(plug1topic, "shellyplus1pm-deviceid") = 0)
    ADDERROR("Set correct 'plug1topic' value in module variables. Topic format is 'shellyplus1pm-<deviceid>'. The Device ID can be found by opening url 'http://shellyIpAddress', in Settings -> MQTT Settings -> Client ID.");
    RETURN(-1);
END

IF(RECEIVEDMSG.TOPIC = plug1topic + "/status/switch:0")
    St := PARSEJSON(RECEIVEDMSG.PAYLOAD, "output");
END
Verbindung: Packet Parser → MQTT
Mögliche Verbesserungen (8)
  • Power Factor — Power factor value, available in switch:0 status JSON for metered devices
  • Network Frequency — AC network frequency in Hz, available in switch:0 status JSON
  • Returned Energy — Returned/exported energy in Wh, for bi-directional metering scenarios
  • Connection Status — LWT topic — true on connect, false on disconnect. Could detect offline device.
  • Toggle Command — Toggle relay state; template only supports on/off
  • Auto-off Timer — Turn ON with auto-off timer in seconds via 'on,N' command
  • Input State — Physical switch/button input state, available via Input.GetStatus RPC method over MQTT
  • Force Status Update — Request device to publish current status on all component topics

Quellen