TapHome

SmartThings Interruttore/Presa con Misurazione di Potenza

Packet Parser → HTTP
Inviato da
Ultimo aggiornamento: 03. 2026
SmartThings Interruttore/Presa con Misurazione di Potenza

Questo template integra qualsiasi interruttore o presa compatibile con SmartThings con misurazione di potenza in TapHome. La comunicazione avviene tramite la SmartThings Cloud REST API v1 su api.smartthings.com via HTTPS — il template non comunica direttamente con il dispositivo fisico. Il dispositivo può essere ZigBee, Z-Wave o Matter — purché sia connesso a un account SmartThings e esponga le capacità switch, powerMeter ed energyMeter, il template funzionerà.

Il template è stato creato da Csongor Varga e dimostrato con una presa ZigBee BlitzWolf BW-SHP15, ma non è limitato a quel modello.

Configurazione

Il template richiede due variabili configurate in TapHome dopo l’importazione:

  • Token — un SmartThings Personal Access Token (PAT) utilizzato per l’autenticazione Bearer
  • DeviceId — l’UUID del dispositivo di destinazione nella piattaforma SmartThings
Generazione del Personal Access Token
  1. Vai su account.smartthings.com/tokens e accedi con un account Samsung
  2. Clicca su Generate new token e assegna un nome (es. „TapHome Integration")
  3. Seleziona il permesso Devices — è necessario per leggere lo stato e inviare comandi
  4. Clicca su Generate Token e copia immediatamente il token — questa è l’unica opportunità per recuperare il valore

I Personal Access Token standard (creati dopo il 30 dicembre 2024) sono validi solo per 24 ore. Il token deve essere rigenerato e aggiornato in TapHome prima della scadenza, altrimenti l’integrazione smetterà di funzionare. I token legacy creati prima di tale data possono avere periodi di validità più lunghi.

Trovare il Device ID
  1. Accedi a my.smartthings.com
  2. Individua il dispositivo di destinazione nell’elenco dei dispositivi
  3. Copia il Device ID dalla pagina dei dettagli del dispositivo — è una stringa UUID (es. 47eff6bf-83c9-4374-a367-b254759b486d)
Aggiungere più dispositivi

Ogni dispositivo SmartThings richiede la propria istanza del modulo. Per aggiungere un altro dispositivo, importa nuovamente il template e configura un nuovo DeviceId. Lo stesso Token può essere riutilizzato per tutti i moduli.

Capacità del dispositivo

Controllo interruttore

Il template espone il dispositivo come interruttore. Lo stato viene letto dalla risposta di stato SmartThings (components.main.switch.switch.value"on" o "off", mappati a 1/0). I comandi di commutazione vengono inviati tramite POST /v1/devices/{DeviceId}/commands con la capacità switch.

Dopo l’invio di un comando di commutazione, il template attende 500 ms e rilegge lo stato del dispositivo per evitare mescolamenti di stato tra il comando e il successivo ciclo di polling. L’interruttore viene interrogato ogni 2,5 secondi.

Misurazione di potenza

Il contatore di energia integrato legge due valori dalla risposta di stato:

  • Potenza in tempo realecomponents.main.powerMeter.power.value riportata in watt, convertita in kW dal template (÷ 1000)
  • Consumo totalecomponents.main.energyMeter.energy.value riportato direttamente in kWh

Il contatore è in sola lettura e viene interrogato ogni 15 secondi.

Capacità aggiuntive

L’API SmartThings espone anche stringhe delle unità di potenza ed energia, stato di salute del dispositivo e una capacità di refresh per forzare un aggiornamento immediato dello stato. Queste possono essere aggiunte in un futuro aggiornamento del template.

Risoluzione dei problemi

L’integrazione smette di funzionare dopo 24 ore

I token PAT SmartThings standard scadono dopo 24 ore. Genera un nuovo token su account.smartthings.com/tokens e aggiorna la variabile Token nel modulo TapHome. Se il rinnovo frequente del token non è pratico, verifica se è disponibile un token legacy con validità più lunga sull’account.

Il dispositivo non risponde
  1. Verifica che il dispositivo SmartThings sia online — controlla il suo stato nell’app SmartThings
  2. Conferma che la variabile DeviceId corrisponda all’UUID corretto del dispositivo
  3. Testa l’API manualmente: GET https://api.smartthings.com/v1/devices/{DeviceId}/status con l’header Authorization: Bearer {Token} — dovrebbe restituire una risposta JSON con lo stato del dispositivo
  4. Assicurati che il Token abbia il permesso corretto (Devices — lettura ed esecuzione)
Le letture di potenza mostrano zero
  1. Conferma che il dispositivo stia effettivamente consumando energia — accendi un carico collegato
  2. Verifica che il dispositivo SmartThings supporti le capacità powerMeter ed energyMeter — non tutti gli interruttori riportano la potenza
  3. Interroga manualmente l’API di stato e verifica che components.main.powerMeter.power.value restituisca un valore diverso da zero

Questa è un’integrazione basata su cloud — richiede una connessione internet attiva sul TapHome CCU. Il template comunica con i server Samsung, non con il dispositivo fisico sulla rete locale.

Dispositivi disponibili

SmartThings Interruttore/Presa Modulo
Variabili personalizzate
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

Lettura (modulo)
VAR response := SENDHTTPREQUEST("/v1/devices/"+DeviceId+"/status", "GET", "", "Authorization: Bearer "+Token);
IF response.IsSuccess
 StatusJson := response.Content;
ELSE
 ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
END
Contatore elettrico Contatore elettrico Solo lettura

Misurazione consumo energetico — potenza istantanea (kW) ed energia cumulativa (kWh) tramite SmartThings Cloud API

numeric Unità: kW / kWh JSON
Variabile: DeviceId

Contatore elettrico

Lettura consumo totale
VAR value := PARSEJSON(StatusJson, "components.main.energyMeter.energy.value", 1);
IF(ISNULL(value), NaN, value);
Lettura domanda
VAR value := PARSEJSON(StatusJson, "components.main.powerMeter.power.value", 1);
IF(ISNULL(value), NaN, value / 1000);
Interruttore Interruttore
boolean JSON
Valori / Stati: ON · OFF

Interruttore

Lettura stato interruttore
VAR value := PARSEJSON(StatusJson, "components.main.switch.switch.value", 1);
IF(ISNULL(value), NaN, if(value="on", 1, 0));
Scrittura stato interruttore
# 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
Connessione: Packet Parser → HTTP
Possibili miglioramenti (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

Fonti