TapHome

SmartThings Spínač/Zásuvka s Měřením Spotřeby

Packet Parser → HTTP
Přidal
Poslední aktualizace: 03. 2026
SmartThings Spínač/Zásuvka s Měřením Spotřeby

Tato šablona integruje jakýkoli SmartThings-kompatibilní spínač nebo zásuvku s měřením spotřeby do TapHome. Komunikace probíhá přes SmartThings Cloud REST API v1 na api.smartthings.com přes HTTPS — šablona nekomunikuje přímo s fyzickým zařízením. Zařízení může být ZigBee, Z-Wave nebo Matter — pokud je připojeno ke SmartThings účtu a vystavuje schopnosti switch, powerMeter a energyMeter, šablona bude fungovat.

Šablonu vytvořil Csongor Varga a demonstroval ji na ZigBee zásuvce BlitzWolf BW-SHP15, ale není omezena na tento model.

Konfigurace

Šablona vyžaduje dvě proměnné nakonfigurované v TapHome po importu:

  • Token — SmartThings Personal Access Token (PAT) používaný pro Bearer autentizaci
  • DeviceId — UUID cílového zařízení v platformě SmartThings
Vygenerování Personal Access Tokenu
  1. Přejdi na account.smartthings.com/tokens a přihlas se Samsung účtem
  2. Klikni na Generate new token a pojmenuj ho (např. „TapHome Integration")
  3. Vyber oprávnění Devices — je potřeba pro čtení stavu a odesílání příkazů
  4. Klikni na Generate Token a okamžitě zkopíruj token — toto je jediná příležitost k získání hodnoty

Standardní Personal Access Tokeny (vytvořené po 30. prosinci 2024) jsou platné pouze 24 hodin. Token musí být přegenerován a aktualizován v TapHome před vypršením, jinak integrace přestane fungovat. Starší tokeny vytvořené před tímto datem mohou mít delší platnost.

Nalezení Device ID
  1. Přihlas se na my.smartthings.com
  2. Najdi cílové zařízení v seznamu zařízení
  3. Zkopíruj Device ID ze stránky s detaily zařízení — jedná se o UUID řetězec (např. 47eff6bf-83c9-4374-a367-b254759b486d)
Přidání více zařízení

Každé SmartThings zařízení vyžaduje vlastní instanci modulu. Pro přidání dalšího zařízení importuj šablonu znovu a nakonfiguruj nové DeviceId. Stejný Token lze použít pro všechny moduly.

Schopnosti zařízení

Ovládání spínače

Šablona vystavuje zařízení jako spínač. Stav se čte ze SmartThings status odpovědi (components.main.switch.switch.value"on" nebo "off", mapováno na 1/0). Příkazy spínače se odesílají přes POST /v1/devices/{DeviceId}/commands se schopností switch.

Po odeslání příkazu spínače šablona čeká 500 ms a znovu načte stav zařízení, aby zabránila promíchání stavů mezi příkazem a dalším cyklem pollingu. Spínač se polluje každé 2,5 sekundy.

Měření spotřeby

Vestavěný elektroměr čte dvě hodnoty ze status odpovědi:

  • Okamžitý výkoncomponents.main.powerMeter.power.value reportovaný ve wattech, konvertovaný na kW šablonou (÷ 1000)
  • Celková spotřebacomponents.main.energyMeter.energy.value reportovaná přímo v kWh

Elektroměr je pouze ke čtení a polluje se každých 15 sekund.

Další schopnosti

SmartThings API také vystavuje řetězce jednotek výkonu a energie, stav zařízení (health) a schopnost refresh pro vynucení okamžité aktualizace stavu. Tyto mohou být přidány v budoucí aktualizaci šablony.

Řešení problémů

Integrace přestane fungovat po 24 hodinách

Standardní SmartThings PAT tokeny vyprší po 24 hodinách. Vygeneruj nový token na account.smartthings.com/tokens a aktualizuj proměnnou Token v TapHome modulu. Pokud je časté obnovování tokenu nepraktické, ověř, zda je na účtu dostupný starší token s delší platností.

Zařízení neodpovídá
  1. Ověř, že SmartThings zařízení je online — zkontroluj jeho stav v aplikaci SmartThings
  2. Potvrď, že proměnná DeviceId odpovídá správnému UUID zařízení
  3. Otestuj API manuálně: GET https://api.smartthings.com/v1/devices/{DeviceId}/status s hlavičkou Authorization: Bearer {Token} — mělo by vrátit JSON odpověď se stavem zařízení
  4. Ujisti se, že Token má správné oprávnění (Devices — čtení a spouštění)
Měření výkonu ukazuje nulu
  1. Potvrď, že zařízení skutečně spotřebovává energii — zapni připojenou zátěž
  2. Ověř, že SmartThings zařízení podporuje schopnosti powerMeter a energyMeter — ne všechny spínače reportují výkon
  3. Manuálně odešli dotaz na status API a ověř, že components.main.powerMeter.power.value vrací nenulovou hodnotu

Toto je cloudová integrace — vyžaduje aktivní internetové připojení na TapHome CCU. Šablona komunikuje se servery Samsungu, ne s fyzickým zařízením v lokální síti.

Dostupná zařízení

SmartThings Spínač/Zásuvka Modul
Vlastní proměnné
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

Čtení (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
Elektroměr Elektroměr Pouze ke čtení

Měření spotřeby energie — okamžitý výkon (kW) a kumulativní energie (kWh) přes SmartThings Cloud API

numeric Jednotka: kW / kWh JSON
Proměnná: DeviceId

Elektroměr

Čtení celkové spotřeby
VAR value := PARSEJSON(StatusJson, "components.main.energyMeter.energy.value", 1);
IF(ISNULL(value), NaN, value);
Čtení odběru
VAR value := PARSEJSON(StatusJson, "components.main.powerMeter.power.value", 1);
IF(ISNULL(value), NaN, value / 1000);
Spínač Přepínač
boolean JSON
Hodnoty / Stavy: ON · OFF

Spínač

Čtení stavu přepínače
VAR value := PARSEJSON(StatusJson, "components.main.switch.switch.value", 1);
IF(ISNULL(value), NaN, if(value="on", 1, 0));
Zápis stavu přepínače
# 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
Připojení: Packet Parser → HTTP
Možná vylepšení (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

Zdroje