TapHome
Community Beta Integrazione HVAC

LinkedGo ST802-B Fan Coil Thermostat (Powered by Shelly)

LinkedGo ST802-B è un termostato Wi-Fi da parete per fan coil e riscaldamento a pavimento, powered by Shelly. TapHome usa la sua API HTTP locale per leggere temperatura e umidità ambiente e per impostare setpoint di temperatura, velocità del ventilatore, modalità di funzionamento, accensione/spegnimento, antigelo e setpoint di umidità. Template della community, beta.

LinkedGoPacket Parser → HTTP6 dispositiviRevisione 1.0 Ultimo aggiornamento: 10 novembre 2026

Inviato da Libor Kratochvíl

LinkedGo ST802-B Fan Coil Thermostat (Powered by Shelly)

Importa nell'app TapHomeHardware › Packet Parser › Aggiungi da modello

Scarica template
In questa pagina

Indirizzo di rete

TapHome raggiunge il dispositivo all'indirizzo inserito durante l'importazione. Assegna al dispositivo un indirizzo fisso — una prenotazione IP nel router, oppure il suo nome mDNS se lo supporta —, altrimenti l'integrazione smette di funzionare quando il router cambia l'indirizzo.

Preparazione della rete

Guida all'integrazione

Il LinkedGo ST802-B è un termostato da parete a incasso per fan coil e riscaldamento a pavimento, “Powered by Shelly”. Comanda direttamente le tre velocità del ventilatore del fan coil, la valvola del fan coil e la valvola del riscaldamento a pavimento, e ha un sensore integrato di temperatura e umidità ambiente. TapHome comunica con il termostato tramite l’API locale Shelly RPC (HTTP sulla porta 80, Wi-Fi): non serve alcuna connessione cloud.

Il template legge la temperatura e l’umidità ambiente e imposta il setpoint di temperatura, la velocità del ventilatore, la modalità di funzionamento, l’accensione/spegnimento, l’antigelo e il setpoint di umidità. È un template della community realizzato da Libor Kratochvíl.

Collegamento hardware

Il termostato si installa in una scatola da incasso da 60 mm, solo in ambienti interni (IP20). È alimentato dalla rete a 230 V AC; la knowledge base Shelly indica un intervallo di ingresso di 90–240 V AC, 50/60 Hz. Il carico massimo è 1 A induttivo o 2 A resistivo. L’installazione e ogni modifica del cablaggio spettano a un elettricista qualificato, con i morsetti scollegati dalla rete.

Morsetti

MorsettoFunzione
N, Lalimentazione, neutro e fase
H, M, Lovelocità alta, media e bassa del ventilatore — uscita 230 V, 1 A ciascuna
NO, NCvalvola del fan coil — relè con contatto normalmente aperto e normalmente chiuso, 230 V
FLvalvola del riscaldamento a pavimento — uscita 230 V
C1, C2contatto pulito (uscita digitale) per accendere e spegnere una pompa di calore o una caldaia a gas
0-10V, GNDuscita analogica per la velocità di un motore del ventilatore DC, e comune
A1/B1, A2/B2RS485 — non usato da questo template
Disposizione dei morsetti dell'ST802-B: morsetti di rete N, L, H, M, Lo, NO, NC, FL con i collegamenti di ventilatore e valvole, più i morsetti a bassa tensione A1/B1, A2/B2, C1/C2, GND, 0-10V.

Cablaggio per funzione del termostato (parametro H02)

Il cablaggio di ventilatore e valvole dipende dal tipo di impianto, che l’installatore imposta sul termostato con il parametro H02. Le istruzioni tecniche LinkedGo riportano uno schema per ogni valore di H02:

H02ImpiantoModalità disponibili
0fan coil AC a 2 tubi — ventilatore su H/M/Lo, valvola del fan coil su NO/NCraffrescamento, riscaldamento, deumidificazione, ventilazione
1fan coil DC — velocità del ventilatore dall’uscita 0-10V, valvola del fan coil su NO/NCraffrescamento, riscaldamento, deumidificazione, ventilazione
2solo riscaldamento a pavimento — valvola del riscaldamento a pavimento su FLriscaldamento a pavimento
3raffrescamento con fan coil AC + riscaldamento a pavimentoraffrescamento con fan coil, riscaldamento a pavimento
4raffrescamento e riscaldamento con fan coil AC + riscaldamento a pavimentoraffrescamento, riscaldamento, riscaldamento a pavimento, deumidificazione, ventilazione
6raffrescamento con fan coil DC + riscaldamento a pavimentoraffrescamento con fan coil, riscaldamento a pavimento, deumidificazione, ventilazione
7raffrescamento e riscaldamento con fan coil DC + riscaldamento a pavimentoraffrescamento, riscaldamento, riscaldamento a pavimento, deumidificazione, ventilazione
17fan coil AC a 4 tubi — valvola di raffrescamento su NO/NC, valvola di riscaldamento su FLraffrescamento, riscaldamento, deumidificazione, ventilazione
Schemi elettrici LinkedGo ST802 per le impostazioni H02 0, 1, 2, 3/4, 6/7 e 17 (cablaggio del fan coil e della valvola del riscaldamento a pavimento) e rete RS485, con la tabella delle funzioni H02.

Configurazione

Collegare il termostato al Wi-Fi

Il termostato si aggiunge alla rete con l’app gratuita Shelly Smart Control (App Store, Google Play o AppGallery; serve un account Shelly gratuito). Usa una rete Wi-Fi a 2,4 GHz e attiva il Bluetooth sul telefono prima di iniziare.

  1. Apri l’app Shelly Smart Control e tocca + nell’angolo in basso a destra.
  2. Seleziona Add via Bluetooth e tocca Next; compare un elenco dei dispositivi supportati.
  3. Seleziona il termostato e tocca Next.
  4. Inserisci il nome e la password della rete Wi-Fi e tocca Add device. L’aggiunta può richiedere alcuni minuti; alla fine compare un messaggio di conferma.
  5. Assegna al dispositivo un nome e un’immagine, scegli una stanza e tocca Save.

Se l’app non trova il termostato, tieni premuto il pulsante ON/OFF sul termostato per 10 secondi e ripeti la ricerca. Quando il termostato è connesso, sul display compare l’icona del segnale Wi-Fi.

Indirizzo IP fisso

TapHome raggiunge il termostato tramite il suo indirizzo IP. Assegnagli un indirizzo fisso — il modo più semplice è una prenotazione DHCP per l’indirizzo MAC del termostato nel router — così l’indirizzo non cambia dopo un riavvio del router o del termostato. Questo indirizzo ti serve quando importi il template.

Protezione con password disattivata

Lascia disattivata la protezione con password del termostato nell’app Shelly. TapHome non supporta l’autenticazione HTTP Digest dei dispositivi Shelly Gen2+; con una password impostata il termostato risponde HTTP 401 e ogni dispositivo TapHome mostra l’errore “Thermostat asks for a password (HTTP 401)”.

Per verificarlo, apri http://<thermostat IP>/rpc/Shelly.GetDeviceInfo in un browser nella stessa rete. Se restituisce un JSON senza chiedere il login, TapHome può leggere il termostato.

Unità di temperatura in °C

Mantieni l’unità di temperatura del termostato impostata su gradi Celsius. TapHome legge tutte le temperature in °C; quando il termostato è impostato su Fahrenheit, il modulo mostra l’avviso “Thermostat uses degrees Fahrenheit”. L’impostazione attuale è visibile su http://<thermostat IP>/rpc/Service.GetConfig?id=0 ("temp_unit": "C").

Parametri installatore sul termostato

Imposta i parametri installatore dalla tastiera del termostato prima di collegarlo a TapHome, perché determinano quali modalità e setpoint il termostato accetta:

  • H02 — tipo di impianto e modalità di funzionamento offerte dal termostato (tabella sopra).
  • H05 — 0 riscaldamento e raffrescamento, 1 solo raffrescamento, 2 solo riscaldamento.
  • H23 / H24 — setpoint minimo e massimo (predefiniti 5 °C e 35 °C).
  • A05 / A06 — protezione antigelo attiva/disattiva e relativa soglia di temperatura ambiente (0–21 °C, predefinita 5 °C).

Per accedere ai parametri installatore tieni premuto il pulsante Mode per 5 secondi; il display mostra i gruppi di parametri (H, P, F …). Seleziona gruppo e parametro con i pulsanti su e giù, modifica il valore e salvalo. L’elenco completo dei parametri si trova nelle istruzioni tecniche LinkedGo.

Aggiungere il termostato in TapHome

In TapHome aggiungi il modulo da questo template sotto un’interfaccia Packet Parser e inserisci l’indirizzo IP del termostato.

Funzionalità del dispositivo

DispositivoCosa fa
Thermostattemperatura ambiente, setpoint di temperatura (5–35 °C, passo 0,5 °C) e umidità ambiente
Fan speedAuto, Low, Medium, High (automatica, bassa, media, alta)
Working modeCool, Heat, Dry, Ventilation, Floor heating (raffrescamento, riscaldamento, deumidificazione, ventilazione, riscaldamento a pavimento)
Thermostat on/offattiva o disattiva la funzione di regolazione del termostato
Anti-freezeprotezione antigelo attiva o disattiva
Target humiditysetpoint di umidità per la modalità Dry (40–75%)

Le modalità di funzionamento accettate dal termostato dipendono da H02. Un’unità configurata per un fan coil AC a 2 tubi (H02 = 0) offre Cool, Dry, Heat e Ventilation. Se scegli una modalità che il termostato non offre (per esempio Floor heating senza valvola del riscaldamento a pavimento), il termostato la rifiuta e TapHome mostra la modalità che resta attiva. Una modalità che il template non conosce viene mostrata come errore sul dispositivo Working mode.

Informazioni sul modulo e azioni di servizio

Il modulo mostra la rete Wi-Fi, l’indirizzo IP, l’intensità del segnale, l’indirizzo MAC, lo stato di servizio, la modalità del termostato (cool, heat o auto), l’unità di temperatura e gli offset di calibrazione di temperatura e umidità. Avvisa quando è disponibile un aggiornamento firmware, quando è necessario un riavvio, quando il termostato segnala un errore di servizio e quando è impostato su gradi Fahrenheit. Azioni di servizio: aggiornamento firmware e riavvio.

Quale uscita relè è commutata in un dato momento (velocità del ventilatore, valvola del fan coil, valvola del riscaldamento a pavimento) non è disponibile nell’API Shelly, quindi TapHome non può mostrarlo.

Comportamenti da conoscere

  • Dopo un riavvio di TapHome Core ogni dispositivo legge il proprio valore dal termostato, quindi una modifica fatta dalla tastiera del termostato mentre Core era spento viene mantenuta, mai sovrascritta.
  • Un valore fuori dall’intervallo del termostato (per esempio setpoint di umidità 80%, o un setpoint fuori da H23–H24) viene rifiutato dal termostato; TapHome mostra allora il valore che resta impostato.
  • I valori vengono letti ogni 5–15 secondi; una modifica dalla tastiera compare in TapHome entro questo tempo.

Risoluzione dei problemi

Tutti i dispositivi mostrano “HTTP 401”

La protezione con password è attiva sul termostato. Disattivala nell’app Shelly, poi verifica http://<thermostat IP>/rpc/Shelly.GetDeviceInfo in un browser: deve rispondere senza chiedere il login.

I dispositivi mostrano “Thermostat answered HTTP …” o nessun valore

  1. Verifica che il termostato mostri l’icona Wi-Fi e che il suo indirizzo IP non sia cambiato (indirizzo fisso o prenotazione DHCP).
  2. Apri http://<thermostat IP>/rpc/Shelly.GetDeviceInfo da un dispositivo nella stessa rete di TapHome Core: se restituisce un JSON, il termostato è raggiungibile.
  3. Assicurati che TapHome Core e il termostato siano nella stessa rete o che l’instradamento tra le due reti sia consentito.

Le temperature sembrano errate

  • Controlla l’unità di temperatura: il modulo avvisa quando il termostato è impostato su Fahrenheit.
  • Controlla gli offset di calibrazione di temperatura e umidità mostrati sul modulo.

Working mode o Fan speed mostra un errore

Il termostato ha segnalato un valore che il template non conosce. L’API Shelly elenca le velocità del ventilatore auto, low, medium e high; le istruzioni tecniche LinkedGo indicano cinque velocità per un fan coil DC. Controlla l’impostazione H02 e il valore sul display del termostato.

Il display mostra E03

E03 è il codice di allarme LinkedGo per un guasto del sensore ambiente. Gli errori che il termostato segnala tramite l’API Shelly compaiono sul modulo come avviso “Thermostat reports: …”.

Dispositivi disponibili 6

Questi dispositivi compaiono in TapHome dopo l'importazione.

LinkedGo ST802-B Modulo
Attributi di servizio
Wi-Fi
${ipAddress}
${xml_signal_strength} [dB]
MAC
Service state
Thermostat mode
Temperature unit
Temperature offset
Humidity offset [%]
Azioni di servizio
${xml_update_fw}
Reboot
Variabili personalizzate
SysStatus (string)
WiFiStatus (string)
ServiceConfig (string)
ServiceStatus (string)

LinkedGo ST802-B

Lettura (modulo)
VAR r := SENDHTTPREQUEST("/rpc/Sys.GetStatus");
IF r.IsSuccess
    SysStatus := r.Content;
ELSE
    IF r.StatusCode = 401
        ADDERROR(401, "Thermostat asks for a password (HTTP 401). Turn off password protection in the Shelly app, TapHome does not support HTTP Digest.");
    ELSE
        ADDERROR(1, "Thermostat answered HTTP " + TOSTRING(r.StatusCode));
    END
    RETURN(0);
END
r := SENDHTTPREQUEST("/rpc/WiFi.GetStatus");
IF r.IsSuccess
    WiFiStatus := r.Content;
END
r := SENDHTTPREQUEST("/rpc/Service.GetConfig?id=0");
IF r.IsSuccess
    ServiceConfig := r.Content;
END
r := SENDHTTPREQUEST("/rpc/Service.GetStatus?id=0");
IF r.IsSuccess
    ServiceStatus := r.Content;
END
IF PARSEJSON(ServiceConfig, "$.temp_unit", true) = "F"
    ADDWARNING(4, "Thermostat uses degrees Fahrenheit. Set the temperature unit to Celsius in the Shelly app, TapHome reads the values as degrees Celsius.");
END
VAR errors := PARSEJSON(ServiceStatus, "$.errors", true);
IF ! ISNULL(errors)
    ADDWARNING(5, "Thermostat reports: " + TOSTRING(errors));
END
IF ! ISNULL(PARSEJSON(SysStatus, "available_updates.stable", true))
    ADDWARNING(2, "New firmware update is available");
END
IF PARSEJSON(SysStatus, "restart_required", true)
    ADDWARNING(3, "Restart required");
END
Attributi di servizio
Wi-Fi
PARSEJSON(WiFiStatus, "ssid", true)
${ipAddress}
PARSEJSON(WiFiStatus, "sta_ip", true)
${xml_signal_strength} [dB]
PARSEJSON(WiFiStatus, "rssi", true)
MAC
PARSEJSON(SysStatus, "mac", true)
Service state
PARSEJSON(ServiceStatus, "state", true)
Thermostat mode
PARSEJSON(ServiceConfig, "thermostat_mode", true)
Temperature unit
PARSEJSON(ServiceConfig, "temp_unit", true)
Temperature offset
PARSEJSON(ServiceConfig, "temp_offset", true)
Humidity offset [%]
PARSEJSON(ServiceConfig, "humidity_offset", true)
Azioni di servizio
${xml_update_fw}
VAR r := SENDHTTPREQUEST("/rpc/Shelly.Update?stage=\"stable\"");
IF r.IsSuccess
    RETURN("OK");
ELSE
    RETURN("Error " + TOSTRING(r.StatusCode));
END
Reboot
VAR r := SENDHTTPREQUEST("/rpc/Shelly.Reboot");
IF r.IsSuccess
    RETURN("OK");
ELSE
    RETURN("Error " + TOSTRING(r.StatusCode));
END
Thermostat Termostato

Thermostat

Lettura temperatura
VAR r := SENDHTTPREQUEST("/rpc/Number.GetStatus?owner=\"service:0\"&role=\"current_temperature\"");
IF r.IsSuccess
    RETURN(PARSEJSON(r.Content, "$.value"));
END
IF r.StatusCode = 401
    ADDERROR(401, "Thermostat asks for a password (HTTP 401). Turn off password protection in the Shelly app, TapHome does not support HTTP Digest.");
ELSE
    ADDERROR(1, "Thermostat answered HTTP " + TOSTRING(r.StatusCode));
END
RETURN(NaN);
Lettura umidità
VAR r := SENDHTTPREQUEST("/rpc/Number.GetStatus?owner=\"service:0\"&role=\"current_humidity\"");
IF r.IsSuccess
    RETURN(PARSEJSON(r.Content, "$.value"));
END
IF r.StatusCode = 401
    ADDERROR(401, "Thermostat asks for a password (HTTP 401). Turn off password protection in the Shelly app, TapHome does not support HTTP Digest.");
ELSE
    ADDERROR(1, "Thermostat answered HTTP " + TOSTRING(r.StatusCode));
END
RETURN(NaN);
Lettura temperatura desiderata
VAR r := SENDHTTPREQUEST("/rpc/Number.GetStatus?owner=\"service:0\"&role=\"target_temperature\"");
IF r.IsSuccess
    RETURN(PARSEJSON(r.Content, "$.value"));
END
IF r.StatusCode = 401
    ADDERROR(401, "Thermostat asks for a password (HTTP 401). Turn off password protection in the Shelly app, TapHome does not support HTTP Digest.");
ELSE
    ADDERROR(1, "Thermostat answered HTTP " + TOSTRING(r.StatusCode));
END
RETURN(NaN);
Scrittura temperatura desiderata
SENDHTTPREQUEST("/rpc/Number.Set?owner=\"service:0\"&role=\"target_temperature\"&value=" + TOSTRING(Se, "F1"));
Fan speed Interruttore multivalore
Valori / Stati: Auto · Low · Medium · High

Fan speed

Lettura stato interruttore
VAR r := SENDHTTPREQUEST("/rpc/Enum.GetStatus?owner=\"service:0\"&role=\"fan_speed\"");
IF r.IsSuccess = false
    IF r.StatusCode = 401
        ADDERROR(401, "Thermostat asks for a password (HTTP 401). Turn off password protection in the Shelly app, TapHome does not support HTTP Digest.");
    ELSE
        ADDERROR(1, "Thermostat answered HTTP " + TOSTRING(r.StatusCode));
    END
    RETURN(NaN);
END
VAR v := PARSEJSON(r.Content, "$.value", true);
IF v = "auto"
    RETURN(0);
ELSEIF v = "low"
    RETURN(1);
ELSEIF v = "medium"
    RETURN(2);
ELSEIF v = "high"
    RETURN(3);
END
ADDERROR(2, "Unknown fan speed: " + TOSTRING(v));
RETURN(NaN);
Scrittura stato interruttore
VAR val := "high";
IF Mu = 0
    val := "auto";
ELSEIF Mu = 1
    val := "low";
ELSEIF Mu = 2
    val := "medium";
END
SENDHTTPREQUEST("/rpc/Enum.Set?owner=\"service:0\"&role=\"fan_speed\"&value=\"" + val + "\"");
Working mode Interruttore multivalore
Valori / Stati: Cool · Heat · Dry · Ventilation · Floor Heating

Working mode

Lettura stato interruttore
VAR r := SENDHTTPREQUEST("/rpc/Enum.GetStatus?owner=\"service:0\"&role=\"working_mode\"");
IF r.IsSuccess = false
    IF r.StatusCode = 401
        ADDERROR(401, "Thermostat asks for a password (HTTP 401). Turn off password protection in the Shelly app, TapHome does not support HTTP Digest.");
    ELSE
        ADDERROR(1, "Thermostat answered HTTP " + TOSTRING(r.StatusCode));
    END
    RETURN(NaN);
END
VAR v := PARSEJSON(r.Content, "$.value", true);
IF v = "cool"
    RETURN(0);
ELSEIF v = "heat"
    RETURN(1);
ELSEIF v = "dry"
    RETURN(2);
ELSEIF v = "ventilation"
    RETURN(3);
ELSEIF v = "floor_heating"
    RETURN(4);
END
ADDERROR(2, "Unknown working mode: " + TOSTRING(v));
RETURN(NaN);
Scrittura stato interruttore
VAR val := "floor_heating";
IF Mu = 0
    val := "cool";
ELSEIF Mu = 1
    val := "heat";
ELSEIF Mu = 2
    val := "dry";
ELSEIF Mu = 3
    val := "ventilation";
END
SENDHTTPREQUEST("/rpc/Enum.Set?owner=\"service:0\"&role=\"working_mode\"&value=\"" + val + "\"");
Thermostat on/off Interruttore
Valori / Stati: ON · OFF

Thermostat on/off

Lettura stato interruttore
VAR r := SENDHTTPREQUEST("/rpc/Boolean.GetStatus?owner=\"service:0\"&role=\"enable\"");
IF r.IsSuccess
    RETURN(PARSEJSON(r.Content, "$.value"));
END
IF r.StatusCode = 401
    ADDERROR(401, "Thermostat asks for a password (HTTP 401). Turn off password protection in the Shelly app, TapHome does not support HTTP Digest.");
ELSE
    ADDERROR(1, "Thermostat answered HTTP " + TOSTRING(r.StatusCode));
END
RETURN(NaN);
Scrittura stato interruttore
SENDHTTPREQUEST("/rpc/Boolean.Set?owner=\"service:0\"&role=\"enable\"&value=" + IF(St, "true", "false"));
Anti-freeze Interruttore
Valori / Stati: ON · OFF

Anti-freeze

Lettura stato interruttore
VAR r := SENDHTTPREQUEST("/rpc/Boolean.GetStatus?owner=\"service:0\"&role=\"anti_freeze\"");
IF r.IsSuccess
    RETURN(PARSEJSON(r.Content, "$.value"));
END
IF r.StatusCode = 401
    ADDERROR(401, "Thermostat asks for a password (HTTP 401). Turn off password protection in the Shelly app, TapHome does not support HTTP Digest.");
ELSE
    ADDERROR(1, "Thermostat answered HTTP " + TOSTRING(r.StatusCode));
END
RETURN(NaN);
Scrittura stato interruttore
SENDHTTPREQUEST("/rpc/Boolean.Set?owner=\"service:0\"&role=\"anti_freeze\"&value=" + IF(St, "true", "false"));
Target humidity Variabile

Target humidity

Lettura
VAR r := SENDHTTPREQUEST("/rpc/Number.GetStatus?owner=\"service:0\"&role=\"target_humidity\"");
IF r.IsSuccess
    RETURN(PARSEJSON(r.Content, "$.value"));
END
IF r.StatusCode = 401
    ADDERROR(401, "Thermostat asks for a password (HTTP 401). Turn off password protection in the Shelly app, TapHome does not support HTTP Digest.");
ELSE
    ADDERROR(1, "Thermostat answered HTTP " + TOSTRING(r.StatusCode));
END
RETURN(NaN);
Scrittura
SENDHTTPREQUEST("/rpc/Number.Set?owner=\"service:0\"&role=\"target_humidity\"&value=" + TOSTRING(Va, "F0"));
Connessione: Packet Parser → HTTP

Parametri di importazione

Inserisci questi valori quando importi l'XML.

Richiesto nell'appPredefinito
Indirizzo IP192.168.1.100

Hai trovato un problema con questo template?

Dicci cosa non funziona, cosa manca o come dovrebbe comportarsi il template. Il tuo feedback ci aiuta a mantenere il catalogo accurato.

Modello · portale TapHome LinkedGo ST802-B Fan Coil Thermostat (Powered by Shelly) Apri questo template nel Customer Portal per applicarlo a una delle tue case, o crea una proposta di modifica e inviala al catalogo. Packet Parser → HTTP Vedi nel portale TapHome