TapHome

Shelly H&T

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

Der Shelly H&T ist ein batteriebetriebener (CR123A) Wi-Fi-Temperatur- und Feuchtigkeitssensor aus der Shelly Gen1-Produktlinie. TapHome kommuniziert mit dem Gerät über MQTT — das empfohlene Protokoll für batteriebetriebene Shelly-Sensoren, da das Gerät zwischen den Messungen schläft und Daten nur beim Aufwachen sendet.

Die Vorlage erstellt ein einzelnes Gerät Temperatursensor mit einem Dienstattribut Feuchtigkeit, das sowohl die Umgebungstemperatur als auch die relative Luftfeuchtigkeit einer Shelly H&T-Einheit erfasst.

Konfiguration

Device ID

Der Shelly H&T verwendet eine MQTT Device ID im Format shellyht-<MAC6>, wobei <MAC6> die letzten 6 Zeichen der MAC-Adresse in hexadezimaler Kleinschreibung sind (z. B. shellyht-112233).

Die Device ID finden Sie:

  • Auf dem Geräteetikett (MAC-Adresse)
  • In der Shelly-Weboberfläche: SettingsDevice Info
  • Über API: GET http://<device-ip>/settings → Feld mqtt.id
Vorlage einrichten

Nach dem Import der Vorlage in TapHome:

  1. Öffnen Sie das Modul Shelly H&T MQTT
  2. Setzen Sie MQTT Broker IP und Port (Standard 1883)
  3. Setzen Sie die Variable deviceId auf die Device ID Ihres Shelly H&T (z. B. 112233 — die letzten 6 Hex-Zeichen der MAC-Adresse)

Das Modul abonniert shellies/# und das Listener-Skript filtert Nachrichten nach der konfigurierten Device ID.

Bei Shelly Gen1-Geräten deaktiviert die Aktivierung von MQTT die Shelly Cloud — beides kann nicht gleichzeitig funktionieren. Aktivieren Sie MQTT in der Shelly-Weboberfläche unter Internet & SecurityAdvanced - Developer Settings.

Die Standard-Schlafzeit beträgt 60 Sekunden. Für häufigere Aktualisierungen ist ein optionaler USB-Adapter verfügbar — bei externer Stromversorgung wird der Schlafmodus deaktiviert und der Sensor misst kontinuierlich.

Gerätefunktionen

Temperatur- und Feuchtigkeitsüberwachung

Die Vorlage bietet ein einzelnes Gerät Temperatursensor, das die Umgebungstemperatur aus dem MQTT-Topic shellies/shellyht-{deviceId}/sensor/temperature ausliest. Werte werden als Gleitkommazahl in Grad Celsius veröffentlicht.

Ein Dienstattribut Feuchtigkeit liest die relative Luftfeuchtigkeit aus shellies/shellyht-{deviceId}/sensor/humidity. Der MQTT-Payload wird im Bereich 0–100 % veröffentlicht, aber die Vorlage konvertiert ihn intern in den Bereich 0–1 (z. B. MQTT-Wert 45.2 wird in TapHome als 0.452 gespeichert).

Beide Messwerte werden bei jedem Aufwachen des Sensors aus dem Schlafmodus aktualisiert — standardmäßig alle 60 Sekunden oder kontinuierlich bei USB-Versorgung.

Weitere Funktionen

Der Shelly H&T veröffentlicht auch den Batteriestand (0–100 %, CR123A), einen Online-/Offline-Status über MQTT Last Will and Testament sowie eine Geräteankündigungsnachricht mit Modell, MAC, IP und Firmware-Version (Firmware >=1.6.0). Diese Funktionen können in einem zukünftigen Vorlage-Update hinzugefügt werden.

Fehlerbehebung

Sensor meldet keine Daten
  1. Überprüfen Sie, ob der Shelly H&T mit dem Wi-Fi verbunden ist und MQTT in den Geräteeinstellungen aktiviert ist (Internet & SecurityAdvanced - Developer Settings)
  2. Prüfen Sie, ob die MQTT-Broker-Adresse und der Port sowohl in der Shelly-Weboberfläche als auch in den TapHome-Moduleinstellungen korrekt sind
  3. Bestätigen Sie, dass die Variable deviceId genau mit der Device ID übereinstimmt (letzte 6 Hex-Zeichen der MAC, z. B. 112233)
  4. Verwenden Sie einen MQTT-Client (z. B. MQTT Explorer), um shellies/shellyht-# zu abonnieren und zu überprüfen, ob der Sensor beim Aufwachen Nachrichten veröffentlicht
Feuchtigkeitswert erscheint falsch

Die Vorlage teilt den MQTT-Feuchtigkeitswert durch 100 — eine Feuchtigkeit von 45,2 % wird in TapHome als 0,452 gespeichert. Dies ist das erwartete Verhalten, da TapHome einen Bereich von 0–1 für Feuchtigkeitswerte verwendet. Die TapHome-Oberfläche zeigt den Wert korrekt als Prozent an.

Batterie entlädt sich schnell
  1. Der Shelly H&T ist für eine Batterielebensdauer von bis zu 18 Monaten bei der Standard-Schlafzeit von 60 Sekunden ausgelegt
  2. Häufige Wi-Fi-Neuverbindungen (schwaches Signal, Kanalwechsel) erhöhen den Stromverbrauch erheblich
  3. Stellen Sie ein starkes Wi-Fi-Signal am Standort des Sensors sicher — das Gerät hat eine Reichweite von ca. 30 m in Innenräumen

Shelly Gen1-Geräte unterstützen kein MQTT über TLS. Die Kommunikation zwischen dem Sensor und dem MQTT-Broker ist unverschlüsselt (Plain MQTT, Port 1883). Stellen Sie sicher, dass sich der MQTT-Broker in einem vertrauenswürdigen lokalen Netzwerk befindet.

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 H&T MQTT Modul
Benutzerdefinierte Variablen
deviceId (string)MQTT Device ID des Shelly H&T — letzte 6 Hex-Zeichen der MAC-Adresse (z. B. 112233)
Temperatursensor Temperatursensor Nur lesen

Umgebungstemperatur und Luftfeuchtigkeit — liest °C über MQTT, Feuchtigkeit von 0–100 % auf Bereich 0–1 konvertiert

float Einheit: °C

Temperatursensor

Luftfeuchtigkeit lesen
# 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
Hu := listenHum;
# 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");
Temperatur lesen
# 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
te := listenTemp;
# 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
# Parse received bytes:
IF(RECEIVEDMSG.TOPIC = "shellies/shellyht-"+ deviceId +"/sensor/temperature")
 listenTemp := todouble(TOSTRING(RECEIVEDMSG.PAYLOAD));
END
IF(RECEIVEDMSG.TOPIC = "shellies/shellyht-"+ deviceId +"/sensor/humidity")
 listenHum := todouble(TOSTRING(RECEIVEDMSG.PAYLOAD))/100;
END
Verbindung: Packet Parser → MQTT
Mögliche Verbesserungen (3)
  • Battery Level — Battery percentage (0–100%, CR123A). Available via MQTT but not parsed in template listener script.
  • Connection Status — LWT topic — true on connect, false on disconnect. Could detect offline sensor.
  • Device Announcement — JSON payload with device model, MAC, IP, firmware version. Published on connect (FW ≥1.6.0).

Quellen