TapHome

Samsung WindFree Air Conditioner

Packet Parser → HTTP
Trimis de
Ultima actualizare: 04. 2026
Samsung WindFree Air Conditioner

Șablonul pentru aerul condiționat Samsung WindFree conectează TapHome la unitățile split Samsung prin API-ul cloud Samsung SmartThings. Toată comunicația trece prin HTTPS la api.smartthings.com — nu este nevoie de cablare în rețeaua locală sau de adaptoare de protocol. Este nevoie doar de un cont Samsung cu SmartThings, de un Personal Access Token (PAT) și de Device ID-ul unității de aer condiționat.

Șablonul oferă 8 dispozitive pentru controlul complet al aerului condiționat: pornire/oprire, selectarea modului HVAC, viteza ventilatorului, direcția de baleiere a aerului, temperatura setată, citirea temperaturii și umidității din cameră și modurile presetate exclusive Samsung, inclusiv WindFree și WindFree Sleep.

Configurare

Configurarea accesului la API-ul SmartThings
  1. Conectați-vă la portalul pentru dezvoltatori Samsung SmartThings la account.smartthings.com/tokens cu contul Samsung asociat unității de aer condiționat
  2. Faceți clic pe Generate new token
  3. Denumiți tokenul (de ex. „TapHome”) și selectați domeniul Devices (citire + execuție)
  4. Faceți clic pe Generate Token și copiați șirul tokenului — nu va mai fi afișat a doua oară
Găsirea Device ID-ului

Device ID este un GUID (de ex. a1b2c3d4-e5f6-7890-abcd-ef1234567890) care identifică unitatea de aer condiționat concretă în SmartThings.

  1. Deschideți un browser sau un instrument API și trimiteți o cerere GET la:
    1
    
    https://api.smartthings.com/v1/devices
    
    cu antetul Authorization: Bearer <your-token>
  2. Găsiți în răspuns aparatul de aer condiționat Samsung WindFree — câmpul deviceId conține GUID-ul necesar
  3. Alternativ, folosiți SmartThings CLI sau aplicația mobilă Samsung SmartThings (secțiunea Device Info)
Parametri de import

La importul șablonului în TapHome introduceți:

ParametruDescriereFormat
TokenSmartThings Personal Access TokenȘir alfanumeric lung
DeviceIdIdentificatorul dispozitivului în SmartThingsFormat UUID / GUID

SmartThings Personal Access Token (PAT) este destinat testării și uzului personal. Poate expira sau poate fi revocat. Dacă tokenul devine nevalid, generați unul nou la account.smartthings.com/tokens și actualizați variabila modulului în TapHome.

Dependența de internet

Aceasta este o integrare exclusiv prin cloud. Toate datele trec prin serverele Samsung SmartThings (api.smartthings.com:443). Șablonul necesită o conexiune activă la internet pe TapHome Core. Unitatea de aer condiționat trebuie să fie înregistrată și online în aplicația SmartThings.

Funcțiile dispozitivelor

Pornire/oprire și mod HVAC

Comutatorul Pornire/oprire pornește și oprește unitatea de aer condiționat prin capabilitatea SmartThings switch.

Selectorul Mod HVAC oferă cinci moduri de funcționare: Heat, Cool, Cool+Heat (auto), Dry și Fan Only. Numele modurilor din TapHome corespund valorilor API SmartThings heat, cool, auto, dry și wind.

Controlul ventilatorului și al fluxului de aer

Selectorul Mod ventilator oferă cinci viteze: Auto, Low, Medium, High și Turbo.

Selectorul Mod baleiere controlează oscilația clapetelor de aer, cu patru opțiuni: Fixed (fără mișcare), All (ambele axe), Vertical și Horizontal.

Moduri presetate (WindFree)

Selectorul Mod presetat controlează modurile opționale specifice Samsung prin capabilitatea custom.airConditionerOptionalMode. Sunt disponibile șapte presetări:

ValoareModDescriere
0OffNiciun mod presetat activ
1SleepAjustare treptată a temperaturii pentru confort pe timpul nopții
2QuietFuncționare cu zgomot redus
3SmartOptimizare bazată pe AI
4SpeedRăcire sau încălzire rapidă
5WindFreeAer dispersat prin mii de microorificii — fără curent de aer direct
6WindFree SleepCombină dispersia aerului WindFree cu modul de somn

WindFree este o funcție proprietară Samsung, disponibilă doar în seria WindFree. Elimină fluxul de aer direct prin dispersarea aerului condiționat prin microperforațiile din panoul frontal.

Dispozitivul Mod presetat citește starea dintr-un endpoint dedicat al capabilității (/v1/devices/{DeviceId}/components/main/capabilities/custom.airConditionerOptionalMode/status), nu din endpointul cu starea completă a dispozitivului, ceea ce asigură citirea fiabilă a presetării active.

Controlul și monitorizarea temperaturii

Dispozitivul Termostat setează temperatura țintă de răcire în 10 trepte discrete, de la 18 °C la 27 °C. Fiecare treaptă corespunde unui index al comutatorului multivaloare (0 = 18 °C, 9 = 27 °C). API-ul SmartThings acceptă un interval mai larg (16–30 °C), dar șablonul folosește subintervalul 18–27 °C.

Dispozitivul Temperatură setată pentru răcire (recitire) este un senzor de temperatură doar pentru citire, care reflectă temperatura setată curentă raportată de unitatea de aer condiționat. Oferă feedback vizual în TapHome fără posibilitate de scriere — pentru schimbarea temperaturii folosiți dispozitivul Termostat.

Senzorul Temperatură + umiditate citește temperatura din cameră (°C) și umiditatea relativă de la senzorii integrați ai unității de aer condiționat. API-ul returnează umiditatea ca număr întreg 0–100, care este convertit într-un raport 0–1 pentru intrarea analogică TapHome (de ex. 55 % devine 0,55). Acest dispozitiv interoghează la intervale de 15 secunde (mai rar decât intervalul de 2,5 secunde folosit de dispozitivele de control).

Funcții suplimentare

Unele modele WindFree oferă și senzori pentru nivelul de praf (PM2,5/PM10), nivelul mirosurilor și calitatea aerului combinată, precum și controlul sarcinii pentru răspunsul la cerere (demand response) și modul automat de autocurățare. Aceste funcții sunt disponibile prin API-ul SmartThings, dar nu sunt încă implementate în șablon. Pot fi adăugate într-o actualizare viitoare a șablonului.

Depanare

Erori de autentificare (HTTP 401)
  1. Verificați dacă Personal Access Token este încă valid — PAT poate expira sau poate fi revocat manual
  2. Generați din nou tokenul la account.smartthings.com/tokens și actualizați variabila Token în setările modulului TapHome
  3. Asigurați-vă că tokenul are activat domeniul Devices
Dispozitivul nu a fost găsit (HTTP 404)
  1. Verificați dacă DeviceId este corect — interogați GET /v1/devices cu tokenul și verificați GUID-ul
  2. Verificați dacă unitatea de aer condiționat este încă înregistrată în aplicația SmartThings și apare online
  3. Dacă dispozitivul a fost adăugat din nou în SmartThings, este posibil să fi primit un DeviceId nou
Limitarea numărului de cereri (HTTP 429)

API-ul SmartThings impune limite pentru numărul de cereri. Șablonul interoghează dispozitivele de control la fiecare 2,5 secunde și senzorii la fiecare 15 secunde. Dacă alte integrări (Home Assistant, automatizări SmartThings) folosesc același cont, numărul total de cereri poate depăși limita. Dacă apare limitarea, luați în considerare mărirea intervalelor de interogare în șablonul TapHome.

Aceasta este o integrare exclusiv prin cloud, care depinde de disponibilitatea serverelor Samsung SmartThings și de o conexiune activă la internet. În timpul întreruperilor cloud sau ale conexiunii la internet, șablonul nu poate citi și nici controla unitatea de aer condiționat. Nu există o cale de comunicație locală de rezervă.

Dispozitive disponibile

SmartThings — Samsung WindFree AC Modul
Variabile personalizate
Token (string)SmartThings Personal Access Token — generați-l la account.smartthings.com/tokens
DeviceId (string)Device ID SmartThings al unității de aer condiționat Samsung (format GUID)
Mod ventilator Comutator cu mai multe valori

Controlul vitezei ventilatorului — Auto, Low, Medium, High, Turbo

enum JSON PARSEJSON()
Valori / Stări: AUTO · LOW · MEDIUM · HIGH · TURBO

Mod ventilator

Citirea stării comutatorului
VAR response := SENDHTTPREQUEST("/v1/devices/"+DeviceId+"/status", "GET", "", "Authorization:Bearer " + Token);
IF(response.IsSuccess = 1)
    VAR state := PARSEJSON(response.Content, "components.main.airConditionerFanMode.fanMode.value");
    if state = "auto"
    return(0);
        elseif state = "low"
        return(1);
        elseif state = "medium"
        return(2);
        elseif state = "high"
        return(3);
        elseif state = "turbo"
        return(4);
        end    
END
Scrierea stării comutatorului
VAR localfan := SWITCH(Mu, 0, "auto", 1, "low", 2, "medium", 3, "high", 4, "turbo", "");

SENDHTTPREQUEST("/v1/devices/"+DeviceId+"/commands", "POST", "{\"commands\":[{\"component\": \"main\", \"capability\": \"airConditionerFanMode\", \"command\": \"setFanMode\", \"arguments\": [\""+localfan+"\"]}]}", "Authorization:Bearer " + Token);
Mod HVAC Comutator cu mai multe valori

Mod de funcționare — Heat, Cool, Cool+Heat (auto), Dry, Fan Only

enum JSON PARSEJSON()
Valori / Stări: OFF · HEAT · COOL · COOL + HEAT · DRY · FAN ONLY

Mod HVAC

Citirea stării comutatorului
VAR response := SENDHTTPREQUEST("/v1/devices/"+DeviceId+"/status", "GET", "", "Authorization:Bearer " + Token);
IF(response.IsSuccess = 1)
    VAR state := PARSEJSON(response.Content, "components.main.airConditionerMode.airConditionerMode.value");        
        if state = "heat"
        return(1);
        elseif state = "cool"
        return(2);
        elseif state = "auto"
        return(3);
        elseif state = "dry"
        return(4);
        elseif state = "wind"
        return(5);             
        end    
END
Scrierea stării comutatorului
VAR localhvac := SWITCH(Mu, 1, "heat", 2, "cool", 3, "auto", 4, "dry", 5, "wind", "");

SENDHTTPREQUEST("/v1/devices/"+DeviceId+"/commands", "POST", "{\"commands\":[{\"component\": \"main\", \"capability\": \"airConditionerMode\", \"command\": \"setAirConditionerMode\", \"arguments\": [\""+localhvac+"\"]}]}", "Authorization:Bearer " + Token);
Pornire/oprire Comutator
boolean JSON PARSEJSON()
Valori / Stări: ON · OFF

Pornire/oprire

Citirea stării comutatorului
VAR response := SENDHTTPREQUEST("/v1/devices/"+DeviceId+"/status", "GET", "", "Authorization:Bearer " + Token);
IF(response.IsSuccess = 1)
    VAR state := PARSEJSON(response.Content, "components.main.switch.switch.value");
    if state = "off"
    return(0);
    elseif state = "on"
        return(1);
        end    
END
Scrierea stării comutatorului
VAR localpower := SWITCH(St, 0, "off", 1, "on", "");

SENDHTTPREQUEST("/v1/devices/"+DeviceId+"/commands", "POST", "{\"commands\":[{\"component\": \"main\", \"capability\": \"switch\", \"command\": \""+localpower+"\"}]}", "Authorization:Bearer " + Token);
Mod presetat Comutator cu mai multe valori

Moduri opționale Samsung — Off, Sleep, Quiet, Smart, Speed, WindFree, WindFree Sleep

enum JSON PARSEJSON()
Valori / Stări: OFF · SLEEP · QUIET · SMART · SPEED · WindFree · WindFreeSleep

Mod presetat

Citirea stării comutatorului
VAR response := SENDHTTPREQUEST("/v1/devices/"+DeviceId+"/components/main/capabilities/custom.airConditionerOptionalMode/status", "GET", "", "Authorization:Bearer " + Token);
IF(response.IsSuccess = 1)
    VAR state := PARSEJSON(response.Content, "acOptionalMode.value");
    if state = "sleep"
        return(1);
        elseif state = "off"
        return(0);
        elseif state = "quiet"
        return(2);
        elseif state = "smart"
        return(3);
        elseif state = "speed"
        return(4);
        elseif state = "windFree"
        return(5);         
        elseif state = "windFreeSleep"
        return(6);        
        end
end
Scrierea stării comutatorului
VAR localpreset := SWITCH(Mu, 0, "off", 1, "sleep", 2, "quiet", 3, "smart", 4, "speed", 5, "windFree", 6, "windFreeSleep", "");

SENDHTTPREQUEST("/v1/devices/"+DeviceId+"/commands", "POST", "{\"commands\":[{\"component\": \"main\", \"capability\": \"custom.airConditionerOptionalMode\", \"command\": \"setAcOptionalMode\", \"arguments\": [\""+localpreset+"\"]}]}", "Authorization:Bearer " + Token);
Mod baleiere Comutator cu mai multe valori

Oscilația clapetelor de aer — Fixed, All, Vertical, Horizontal

enum JSON PARSEJSON()
Valori / Stări: FIXED · ALL · VERTICAL · HORIZONTAL
Variabilă: swing

Mod baleiere

Citirea stării comutatorului
VAR response := SENDHTTPREQUEST("/v1/devices/"+DeviceId+"/status", "GET", "", "Authorization:Bearer " + Token);
IF(response.IsSuccess = 1)
    VAR state := PARSEJSON(response.Content, "components.main.fanOscillationMode.fanOscillationMode.value");
    if state = "fixed"
    return(0);
    elseif state = "all"
        return(1);
        elseif state = "vertical"
        return(2);
        elseif state = "horizontal"
        return(3);
        end    
END
Scrierea stării comutatorului
VAR localswing := SWITCH(Mu, 0, "fixed", 1, "all", 2, "vertical", 3, "horizontal", "");

SENDHTTPREQUEST("/v1/devices/"+DeviceId+"/commands", "POST", "{\"commands\":[{\"component\": \"main\", \"capability\": \"fanOscillationMode\", \"command\": \"setFanOscillationMode\", \"arguments\": [\""+localswing+"\"]}]}", "Authorization:Bearer " + Token);
Temperatură + umiditate Senzor de temperatură Doar citire

Temperatura din cameră (°C) și umiditatea relativă de la senzorii integrați ai unității de aer condiționat

numeric Unitate: °C / % JSON PARSEJSON()

Temperatură + umiditate

Citirea umidității
VAR response := SENDHTTPREQUEST("/v1/devices/"+DeviceId+"/status", "GET", "", "Authorization:Bearer " + Token);
IF(response.IsSuccess = 1)
    VAR state := PARSEJSON(response.Content, "components.main.relativeHumidityMeasurement.humidity.value");
    return(ToDouble(state / 100));
END
Citirea temperaturii
VAR response := SENDHTTPREQUEST("/v1/devices/"+DeviceId+"/status", "GET", "", "Authorization:Bearer " + Token);
IF(response.IsSuccess = 1)
    VAR state := PARSEJSON(response.Content, "components.main.temperatureMeasurement.temperature.value");
    return(ToDouble(state));
END
Temperatură setată pentru răcire (recitire) Senzor de temperatură Doar citire

Recitire, doar pentru citire, a temperaturii țintă curente raportate de unitatea de aer condiționat

numeric Unitate: °C JSON PARSEJSON()

Temperatură setată pentru răcire (recitire)

Citirea temperaturii
VAR response := SENDHTTPREQUEST("/v1/devices/"+DeviceId+"/status", "GET", "", "Authorization:Bearer " + Token);
IF(response.IsSuccess = 1)
    VAR state := PARSEJSON(response.Content, "components.main.thermostatCoolingSetpoint.coolingSetpoint.value");
    return(ToDouble(state));
END
Termostat Comutator cu mai multe valori

Temperatura țintă de răcire — 10 trepte de la 18 °C la 27 °C

integer Unitate: °C JSON PARSEJSON()
Valori / Stări: 18°C · 19°C · 20°C · 21°C · 22°C · 23°C · 24°C · 25°C · 26°C · 27°C

Termostat

Citirea stării comutatorului
VAR response := SENDHTTPREQUEST("/v1/devices/"+DeviceId+"/status", "GET", "", "Authorization:Bearer " + Token);
IF(response.IsSuccess = 1)
    VAR state := PARSEJSON(response.Content, "components.main.thermostatCoolingSetpoint.coolingSetpoint.value");        
    if state = 18
    return(0);
        elseif state = 19
        return(1);
        elseif state = 20
        return(2);
        elseif state = 21
        return(3);
        elseif state = 22
        return(4);
        elseif state = 23
        return(5);
        elseif state = 24
        return(6);
        elseif state = 25
        return(7);
        elseif state = 26
        return(8);
        elseif state = 27
        return(9);            
        end    
END
Scrierea stării comutatorului
VAR localtemperature := SWITCH(Mu, 0, "18", 1, "19", 2, "20", 3, "21", 4, "22", 5, "23", 6, "24", 7, "25", 8, "26", 9, "27", "");

SENDHTTPREQUEST("/v1/devices/"+DeviceId+"/commands", "POST", "{\"commands\":[{\"component\": \"main\", \"capability\": \"thermostatCoolingSetpoint\", \"command\": \"setCoolingSetpoint\", \"arguments\": ["+localtemperature+"]}]}", "Authorization:Bearer " + Token);
Conexiune: Packet Parser → HTTP
Îmbunătățiri posibile (5)
  • Dust Level — PM2.5/PM10 dust sensor available on some WindFree models. Not all models support this capability
  • Odor Level — Air quality odor level sensor. Available on select WindFree models with air purification
  • Air Quality — Combined air quality index. Available on WindFree models with built-in air quality sensors
  • Demand Response Load Control — Energy demand response capability for smart grid integration. Allows utility-driven load shedding
  • Auto Cleaning Mode — Automatic self-cleaning function. Available on most WindFree models — enables/disables auto-clean cycle

Surse

Ați găsit o problemă la acest șablon de dispozitiv?

Spuneți-ne ce nu funcționează, ce lipsește sau cum ar trebui să se comporte șablonul. Feedbackul dvs. ne ajută să păstrăm catalogul corect.

Verificat de TapHome

Doriți să folosiți acest șablon în TapHome Core?

Deschideți acest șablon în Customer Portal pentru a-l aplica într-una dintre locuințele dvs. sau pentru a propune o îmbunătățire și a o trimite înapoi în catalog.

Deschideți în portal