TapHome

Shelly Plus H&T

Packet Parser → MQTT
Eingereicht von
Zuletzt aktualisiert: 03. 2026
Shelly Plus H&T

Der Shelly Plus H&T (SNSN-0013A) ist ein batteriebetriebener (4x AA) Wi-Fi Temperatur- und Feuchtigkeitssensor mit einem E-Paper-Display. Es handelt sich um ein Gen2-Gerät (Plus-Serie), das inzwischen eingestellt und durch den Shelly H&T Gen3 ersetzt wurde, aber weiterhin weit verbreitet ist. TapHome kommuniziert mit dem Gerät über MQTT mittels individueller /status/-Topics für jede Komponente. Dies ist der Standardansatz für Gen2 Shelly-Geräte — das Listener-Skript abonniert <device-id>/# und verarbeitet eingehende Statusnachrichten, wenn der Sensor aus dem Tiefschlaf aufwacht und Daten veröffentlicht.

Die Vorlage erstellt ein einzelnes Gerät Temperatur- und Feuchtigkeitssensor mit 9 Serviceattributen auf Geräteebene für Batterie, Netzwerk und Konnektivitätsdiagnose. Im Gegensatz zur Gen3-Variante (die konsolidierte events/rpc-Benachrichtigungen verwendet), verarbeitet diese Gen2-Vorlage individuelle Topics /status/temperature:0, /status/humidity:0, /status/devicepower:0 und weitere komponentenspezifische Topics.

Konfiguration

Device ID

Jeder Shelly Plus H&T hat eine eindeutige Device ID im Format shellyplusht-<MACADDRESS>, wobei <MACADDRESS> die vollständige 12-stellige MAC-Adresse in hexadezimaler Großschreibung ist (z.B. shellyplusht-A8032AB12CD3). Diese ID dient auch als MQTT-Topic-Präfix.

Die Device ID finden Sie:

  • Auf dem Gerätelabel (MAC-Adresse)
  • In der Shelly Web-UI: SettingsDevice InfoDevice ID
  • Über API: GET http://<device-ip>/rpc/Mqtt.GetConfig → Feld client_id
Vorlageneinrichtung

Nach dem Import der Vorlage in TapHome:

  1. Öffnen Sie das Modul Shelly Plus H&T MQTT
  2. Setzen Sie die MQTT Broker IP auf die Adresse des MQTT-Brokers
  3. Setzen Sie den Port (Standard 1883)
  4. Setzen Sie den Import-Parameter Device ID auf die Device ID des Geräts (z.B. shellyplusht-A8032AB12CD3)

Das Modul abonniert <device-id>/# und das Listener-Skript parst individuelle /status/ JSON-Nachrichten von den Topics jeder Komponente.

Stellen Sie sicher, dass MQTT auf dem Shelly Plus H&T aktiviert ist und status_ntf (Statusbenachrichtigungen) auf true gesetzt ist. Die Vorlage basiert auf individuellen Status-Topics (/status/temperature:0, /status/humidity:0 usw.), nicht auf dem konsolidierten Topic events/rpc.

Mess- und Meldeverhalten

Der Shelly Plus H&T arbeitet je nach Stromquelle unterschiedlich:

  • Batteriemodus — Aufwachen jede 1 Minute zur Messung. Meldet über MQTT, wenn sich die Temperatur um mehr als 0,5 °C oder die Luftfeuchtigkeit um mehr als 5 % ändert. Eine unbedingte Statusmeldung wird alle 2 Stunden gesendet, wenn keine schwellenwertbasierten Meldungen ausgelöst wurden. Eine 5-minütige Schutzperiode verhindert übermäßiges Aufwachen.
  • USB-Betrieb — Aufwachen alle 5 Minuten zur Messung, Display-Aktualisierung und unbedingter Meldung in jedem Zyklus.

Das E-Paper-Display aktualisiert sich bei Temperaturänderungen über 0,2 °C oder Feuchtigkeitsänderungen über 3 %.

Das Gerät ist batteriebetrieben und verbringt die meiste Zeit im Tiefschlaf. TapHome kann den Sensor nicht aktiv abfragen — es verlässt sich darauf, dass das Gerät selbst den Status über MQTT beim Aufwachen sendet. Erwarten Sie Lücken zwischen den Messungen, insbesondere im Batteriemodus. USB Type-C Stromversorgung bietet häufigere Aktualisierungen, lädt aber nicht die internen Batterien auf.

Gerätefähigkeiten

Temperatur und Luftfeuchtigkeit

Das Sensorgerät liest Temperatur und Luftfeuchtigkeit von individuellen MQTT-Status-Topics:

  • Temperatur — Umgebungstemperatur in Celsius, gelesen aus tC im Topic /status/temperature:0
  • Luftfeuchtigkeit — relative Luftfeuchtigkeit in Prozent, gelesen aus rh im Topic /status/humidity:0 (das readhumidity-Skript teilt den Wert durch 100 zur Umrechnung in den von TapHome erwarteten Bereich 0–1)

Beide Werte sind schreibgeschützt und aktualisieren sich bei jedem Aufwachen des Sensors und Veröffentlichen von Daten.

Der Temperaturschwellenwert ist am Gerät konfigurierbar (Standard 0,5 °C, Bereich 0,5–5,0 °C). Der Feuchtigkeitsschwellenwert beträgt standardmäßig 5 % (Bereich 1–20 %). Diese Schwellenwerte können über die Shelly Web-UI oder API angepasst werden, um die Meldefrequenz gegen die Batterielebensdauer abzuwägen.

Serviceattribute

Die Vorlage stellt 9 Serviceattribute auf Geräteebene bereit, die den Batteriestatus und die Gerätediagnose abdecken:

Batterieüberwachung:

  • Battery — prozentualer Ladestand der Batterie aus battery.percent in /status/devicepower:0
  • Battery voltage — Batteriespannung in Volt aus battery.V in /status/devicepower:0
  • External power — ob USB Type-C externe Stromversorgung angeschlossen ist, aus external.present in /status/devicepower:0

Netzwerkdiagnose:

  • WiFi — SSID des verbundenen WiFi-Netzwerks aus /status/wifi
  • IP Address — IP-Adresse des Geräts aus /status/wifi
  • MAC Address — MAC-Adresse des Geräts aus /status/sys

Konnektivitätsstatus:

  • Cloud connected — Shelly Cloud Verbindungsstatus aus /status/cloud
  • MQTT connected — MQTT-Broker Verbindungsstatus aus /status/mqtt
  • BLE enabled — Bluetooth Low Energy Status aus /status/ble

Alle Serviceattribute zeigen "-" an, wenn noch keine Daten empfangen wurden (Anfangszustand nach dem Vorlagenimport, vor dem ersten Aufwachen des Sensors).

Weitere Fähigkeiten

Der Shelly Plus H&T veröffentlicht auch die Temperatur in Fahrenheit (Feld tF in /status/temperature:0), WiFi-Signalstärke (RSSI in dBm) und unterstützt die HT_UI-Komponente zur Konfiguration der Temperatureinheit auf dem E-Paper-Display (°C/°F). Das Gerät bietet auch einen Online/Offline-Status über das MQTT Last Will and Testament (LWT) Topic. Diese Fähigkeiten können in einer zukünftigen Vorlagenaktualisierung hinzugefügt werden.

Fehlerbehebung

Sensor meldet keine Daten
  1. Überprüfen Sie, dass der Shelly Plus H&T mit Wi-Fi verbunden ist und MQTT in den Geräteeinstellungen aktiviert ist (SettingsMQTTEnable)
  2. Prüfen Sie, dass status_ntf auf true gesetzt ist — die Vorlage erfordert individuelle Statusbenachrichtigungen auf /status/-Topics
  3. Bestätigen Sie, dass der Import-Parameter Device ID exakt mit der Device ID des Geräts übereinstimmt (z.B. shellyplusht-A8032AB12CD3)
  4. Verwenden Sie einen MQTT-Client (z.B. MQTT Explorer) zum Abonnieren von <device-id>/# und überprüfen Sie, ob der Sensor Statusnachrichten beim Aufwachen veröffentlicht
  5. Prüfen Sie den Batteriestand des Geräts — leere Batterien verhindern, dass sich der Sensor mit Wi-Fi verbindet
Feuchtigkeitsmessung erscheint falsch
  1. Die TapHome-Vorlage teilt den Rohwert der Luftfeuchtigkeit durch 100 (z.B. rh: 55.3 wird zu 0.553 in TapHome). Dies ist erwartetes Verhalten — TapHome verwendet intern einen Bereich von 0–1
  2. Der Sensor hat einen konfigurierbaren Feuchtigkeitsoffset (Humidity.SetConfigoffset) — überprüfen Sie, dass er nicht auf einen falschen Wert eingestellt ist
  3. Der Betriebsbereich des Sensors für Luftfeuchtigkeit beträgt 30–70 % RH. Messungen außerhalb dieses Bereichs können weniger genau sein
Serviceattribute zeigen “-”
  1. Serviceattribute zeigen "-" an, bis der Sensor aufwacht und Daten auf dem entsprechenden Status-Topic veröffentlicht
  2. Im Batteriebetrieb kann es bis zu 2 Stunden dauern, bis das Gerät seinen ersten unbedingten Bericht sendet — drücken Sie die Reset-Taste (hinter der Rückabdeckung) für eine sofortige Messung und Meldung
  3. Überprüfen Sie, ob der MQTT-Broker Nachrichten auf allen erwarteten Topics empfängt (/status/sys, /status/wifi, /status/cloud, /status/mqtt, /status/ble)
Unterschiede zum Shelly H&T Gen3

Der Shelly Plus H&T (Gen2) und der Shelly H&T Gen3 haben ähnliche Sensorfähigkeiten, unterscheiden sich aber in der MQTT-Kommunikation:

  • Gen2 (Plus H&T) verwendet individuelle /status/-Topics pro Komponente — erfordert status_ntf: true
  • Gen3 (H&T Gen3) verwendet das konsolidierte Topic events/rpc mit NotifyStatus JSON-RPC-Ereignissen — erfordert rpc_ntf: true
  • Die Gen3-Vorlage enthält zudem eine zeitstempelbasierte Offline-Erkennung (>12h Warnung, >24h Fehler), die die Gen2-Vorlage nicht implementiert

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 H&T MQTT Modul
Benutzerdefinierte Variablen
deviceId (string)MQTT-Geräte-ID als Topic-Präfix — Format: shellyplusht-{MACADDRESS} (in der Shelly Web-UI → Settings → Device Info)
Open http://shellyIpAddress → Settings → Device info → copy Device ID (e.g. shellyplusht-A8032AB12CD3)
Temperatur- und Feuchtigkeitssensor Temperatursensor Nur lesen

Umgebungstemperatur (°C) und relative Luftfeuchtigkeit aus individuellen /status/ MQTT-Topics — Feuchtigkeit auf Bereich 0–1 für TapHome konvertiert

json Einheit: °C / %RH json_path
Serviceattribute
BatterieProzentualer Ladestand — zeigt '-' bis zum ersten Aufwachen des Sensors
BatteriespannungBatteriespannung in Volt — nützlich zur Überwachung der Batteriedegradation
Externe StromversorgungOb USB Type-C externe Stromversorgung angeschlossen ist (true/false)
WiFiSSID des verbundenen WiFi-Netzwerks
IP-Adresse
MAC-Adresse
Cloud verbundenShelly Cloud Verbindungsstatus (true/false)
MQTT verbundenMQTT-Broker Verbindungsstatus (true/false)
BLE aktiviertBluetooth Low Energy Status (true/false)

Temperatur- und Feuchtigkeitssensor

Luftfeuchtigkeit lesen
Hu := listenHum / 100.0;
Listener
IF (INDEXOF(RECEIVEDMSG.TOPIC, deviceid +"/status/temperature:0") >= 0)
    Te := PARSEJSON(RECEIVEDMSG.PAYLOAD,"tC", true);
ELSEIF (INDEXOF(RECEIVEDMSG.TOPIC, deviceid +"/status/humidity:0") >= 0)
    listenHum := PARSEJSON(RECEIVEDMSG.PAYLOAD,"rh", true);
ELSEIF (INDEXOF(RECEIVEDMSG.TOPIC, deviceid +"/status/devicepower:0") >= 0)
    batteryPerc := PARSEJSON(RECEIVEDMSG.PAYLOAD,"battery.percent", true);
    batteryV := PARSEJSON(RECEIVEDMSG.PAYLOAD,"battery.V", true);
    externalPower := PARSEJSON(RECEIVEDMSG.PAYLOAD,"external.present", true);
ELSEIF (INDEXOF(RECEIVEDMSG.TOPIC, deviceid +"/status/sys") >= 0)
    macAddress := PARSEJSON(RECEIVEDMSG.PAYLOAD,"mac", true);
ELSEIF (INDEXOF(RECEIVEDMSG.TOPIC, deviceid +"/status/wifi") >= 0)
    ipaddress := PARSEJSON(RECEIVEDMSG.PAYLOAD,"sta_ip", true);
    wifi := PARSEJSON(RECEIVEDMSG.PAYLOAD,"ssid", true);
ELSEIF (INDEXOF(RECEIVEDMSG.TOPIC, deviceid +"/status/cloud") >= 0)
    cloudConnected := PARSEJSON(RECEIVEDMSG.PAYLOAD,"connected", true);
ELSEIF (INDEXOF(RECEIVEDMSG.TOPIC, deviceid +"/status/mqtt") >= 0)
    mqttConnected := PARSEJSON(RECEIVEDMSG.PAYLOAD,"connected", true);
ELSEIF (INDEXOF(RECEIVEDMSG.TOPIC, deviceid +"/status/ble") >= 0)
    BLEenabled := PARSEJSON(RECEIVEDMSG.PAYLOAD,"enable", true);
END
Serviceattribute
Battery
IF (ISNAN(batteryPerc), "-", batteryPerc + "%");
Battery voltage
IF (ISNAN(batteryV), "-", batteryV + "V");
External power
IF (LENGTH(externalPower) = 0, "-", externalPower);
WiFi
IF (LENGTH(wifi) = 0, "-", wifi);
IP Address
IF (LENGTH(ipaddress) = 0, "-", ipaddress);
MAC Address
IF (LENGTH(macAddress) = 0, "-", macAddress);
Cloud connected
IF (LENGTH(cloudConnected) = 0, "-", cloudConnected);
MQTT connected
IF (LENGTH(mqttConnected) = 0, "-", mqttConnected);
BLE enabled
IF (LENGTH(BLEenabled) = 0, "-", BLEenabled);
Verbindung: Packet Parser → MQTT
Mögliche Verbesserungen (5)
  • RPC Event Notifications — Gen3 templates use consolidated events/rpc topic with NotifyFullStatus. This Gen2 template uses individual /status/ topics instead — functionally equivalent.
  • Connection Status (LWT) — Last Will and Testament topic — true on connect, false on disconnect. Not used by template.
  • Temperature in Fahrenheit — Temperature also available in Fahrenheit (tF field in /status/temperature:0). Template uses tC only.
  • E-Paper Display Configuration — Temperature unit (C/F) display setting — display-only configuration, not sensor data.
  • WiFi Signal Strength (RSSI) — WiFi signal strength in dBm. Template reads only SSID and IP, not RSSI.

Quellen