TapHome

SmartThings Schalter/Steckdose mit Leistungsmessung

Packet Parser → HTTP
Eingereicht von
Zuletzt aktualisiert: 03. 2026
SmartThings Schalter/Steckdose mit Leistungsmessung

Diese Vorlage integriert jeden SmartThings-kompatiblen Schalter oder Steckdose mit Leistungsmessung in TapHome. Die Kommunikation erfolgt über die SmartThings Cloud REST API v1 unter api.smartthings.com über HTTPS — die Vorlage kommuniziert nicht direkt mit dem physischen Gerät. Das Gerät kann ZigBee, Z-Wave oder Matter sein — solange es mit einem SmartThings-Konto verbunden ist und die Fähigkeiten switch, powerMeter und energyMeter bereitstellt, funktioniert die Vorlage.

Die Vorlage wurde von Csongor Varga erstellt und mit einem BlitzWolf BW-SHP15 ZigBee-Steckdose demonstriert, ist aber nicht auf dieses Modell beschränkt.

Konfiguration

Die Vorlage erfordert zwei Variablen, die nach dem Import in TapHome konfiguriert werden:

  • Token — ein SmartThings Personal Access Token (PAT) für die Bearer-Authentifizierung
  • DeviceId — die UUID des Zielgeräts in der SmartThings-Plattform
Personal Access Token generieren
  1. Gehe zu account.smartthings.com/tokens und melde dich mit einem Samsung-Konto an
  2. Klicke auf Generate new token und benenne ihn (z. B. „TapHome Integration")
  3. Wähle die Berechtigung Devices — diese ist erforderlich zum Lesen des Status und Senden von Befehlen
  4. Klicke auf Generate Token und kopiere den Token sofort — dies ist die einzige Möglichkeit, den Wert abzurufen

Standard Personal Access Tokens (erstellt nach dem 30. Dezember 2024) sind nur 24 Stunden gültig. Der Token muss vor Ablauf neu generiert und in TapHome aktualisiert werden, andernfalls funktioniert die Integration nicht mehr. Ältere Tokens, die vor diesem Datum erstellt wurden, können eine längere Gültigkeit haben.

Device ID finden
  1. Melde dich bei my.smartthings.com an
  2. Finde das Zielgerät in der Geräteliste
  3. Kopiere die Device ID von der Gerätedetailseite — es handelt sich um einen UUID-String (z. B. 47eff6bf-83c9-4374-a367-b254759b486d)
Mehrere Geräte hinzufügen

Jedes SmartThings-Gerät benötigt eine eigene Modulinstanz. Um ein weiteres Gerät hinzuzufügen, importiere die Vorlage erneut und konfiguriere eine neue DeviceId. Derselbe Token kann für alle Module wiederverwendet werden.

Gerätefähigkeiten

Schaltersteuerung

Die Vorlage stellt das Gerät als Schalter bereit. Der Zustand wird aus der SmartThings-Statusantwort gelesen (components.main.switch.switch.value"on" oder "off", zugeordnet zu 1/0). Schaltbefehle werden über POST /v1/devices/{DeviceId}/commands mit der Fähigkeit switch gesendet.

Nach dem Senden eines Schaltbefehls wartet die Vorlage 500 ms und liest den Gerätestatus erneut, um Zustandsvermischungen zwischen dem Befehl und dem nächsten Polling-Zyklus zu verhindern. Der Schalter wird alle 2,5 Sekunden abgefragt.

Leistungsmessung

Der integrierte Energiezähler liest zwei Werte aus der Statusantwort:

  • Echtzeitleistungcomponents.main.powerMeter.power.value in Watt gemeldet, von der Vorlage in kW umgerechnet (÷ 1000)
  • Gesamtverbrauchcomponents.main.energyMeter.energy.value direkt in kWh gemeldet

Der Zähler ist schreibgeschützt und wird alle 15 Sekunden abgefragt.

Weitere Fähigkeiten

Die SmartThings API stellt auch Einheitenstrings für Leistung und Energie, den Gerätezustand (Health) und eine Aktualisierungsfähigkeit (Refresh) zum Erzwingen einer sofortigen Statusaktualisierung bereit. Diese können in einem zukünftigen Vorlagen-Update hinzugefügt werden.

Fehlerbehebung

Integration funktioniert nach 24 Stunden nicht mehr

Standard SmartThings PAT-Tokens laufen nach 24 Stunden ab. Generiere einen neuen Token unter account.smartthings.com/tokens und aktualisiere die Token-Variable im TapHome-Modul. Wenn häufige Token-Erneuerung unpraktisch ist, prüfe, ob ein älterer Token mit längerer Gültigkeit auf dem Konto verfügbar ist.

Gerät antwortet nicht
  1. Überprüfe, ob das SmartThings-Gerät online ist — kontrolliere den Status in der SmartThings-App
  2. Bestätige, dass die DeviceId-Variable mit der korrekten Geräte-UUID übereinstimmt
  3. Teste die API manuell: GET https://api.smartthings.com/v1/devices/{DeviceId}/status mit dem Header Authorization: Bearer {Token} — es sollte eine JSON-Antwort mit dem Gerätezustand zurückgeben
  4. Stelle sicher, dass der Token die korrekte Berechtigung hat (Devices — Lesen und Ausführen)
Leistungswerte zeigen Null an
  1. Bestätige, dass das Gerät tatsächlich Strom verbraucht — schalte eine angeschlossene Last ein
  2. Überprüfe, ob das SmartThings-Gerät die Fähigkeiten powerMeter und energyMeter unterstützt — nicht alle Schalter melden Leistungsdaten
  3. Frage die Status-API manuell ab und überprüfe, ob components.main.powerMeter.power.value einen Wert ungleich Null zurückgibt

Dies ist eine Cloud-basierte Integration — sie erfordert eine aktive Internetverbindung am TapHome CCU. Die Vorlage kommuniziert mit Samsungs Servern, nicht mit dem physischen Gerät im lokalen Netzwerk.

Verfügbare Geräte

SmartThings Schalter/Steckdose Modul
Benutzerdefinierte Variablen
Token (string) = 0ead2552-e331-4355-b483-81d3898eb5baSmartThings Personal Access Token for API authentication (generate at my.smartthings.com)
DeviceId (string) = 47eff6bf-83c9-4374-a367-b254759b486dSmartThings device UUID — identifies the target switch or plug

SmartThings Switch/Plug with Power Metering

Lesen (Modul)
VAR response := SENDHTTPREQUEST("/v1/devices/"+DeviceId+"/status", "GET", "", "Authorization: Bearer "+Token);
IF response.IsSuccess
 StatusJson := response.Content;
ELSE
 ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
END
Stromzähler Stromzähler Nur lesen

Leistungs- und Energiemessung — Momentanleistung (kW) und kumulativer Energieverbrauch (kWh) über SmartThings Cloud API

numeric Einheit: kW / kWh JSON
Variable: DeviceId

Stromzähler

Gesamtverbrauch lesen
VAR value := PARSEJSON(StatusJson, "components.main.energyMeter.energy.value", 1);
IF(ISNULL(value), NaN, value);
Bedarf lesen
VAR value := PARSEJSON(StatusJson, "components.main.powerMeter.power.value", 1);
IF(ISNULL(value), NaN, value / 1000);
Schalter Schalter
boolean JSON
Werte / Zustände: ON · OFF

Schalter

Schaltzustand lesen
VAR value := PARSEJSON(StatusJson, "components.main.switch.switch.value", 1);
IF(ISNULL(value), NaN, if(value="on", 1, 0));
Schaltzustand schreiben
# Set Http request method, body and headers
VAR response := SENDHTTPREQUEST("/v1/devices/"+DeviceId+"/commands", 
"POST", 
"{\"commands\": [ { \"component\": \"main\", \"capability\": \"switch\", \"command\": \""+IF(St=1, "on", "off")+"\", \"arguments\": [] } ] }",
"Authorization: Bearer "+Token);


# Wait a little an read the state again to prevent state shuffle
SLEEP(500);
response := SENDHTTPREQUEST("/v1/devices/"+DeviceId+"/status", "GET", "", "Authorization: Bearer "+Token);
IF response.IsSuccess
 StatusJson := response.Content;
 # ADDINFO("StatusJson refreshed");
ELSE
 ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
END
Verbindung: Packet Parser → HTTP
Mögliche Verbesserungen (4)
  • Power Unit — Unit string for power reading (W), available in status response
  • Energy Unit — Unit string for energy reading (kWh), available in status response
  • Health Check — Device health/online status, available via SmartThings Health API
  • Refresh — Force refresh device state via SmartThings refresh capability command

Quellen