TapHome

Shelly H&T

Packet Parser → MQTT
Inviato da
Ultimo aggiornamento: 04. 2026
Shelly H&T

Lo Shelly H&T è un sensore Wi-Fi di temperatura e umidità a batteria (CR123A) della linea di prodotti Shelly Gen1. TapHome comunica con il dispositivo tramite MQTT — il protocollo consigliato per i sensori Shelly a batteria, poiché il dispositivo entra in sleep tra le misurazioni e pubblica i dati solo al risveglio.

Il template crea un singolo dispositivo Sensore di temperatura con un attributo di servizio Umidità, che monitora sia la temperatura ambiente che l’umidità relativa da un’unità Shelly H&T.

Configurazione

Device ID

Lo Shelly H&T utilizza un MQTT Device ID nel formato shellyht-<MAC6>, dove <MAC6> sono gli ultimi 6 caratteri dell’indirizzo MAC in formato esadecimale minuscolo (es. shellyht-112233).

Il Device ID si trova:

  • Sull’etichetta del dispositivo (indirizzo MAC)
  • Nell’interfaccia web Shelly: SettingsDevice Info
  • Tramite API: GET http://<device-ip>/settings → campo mqtt.id
Configurazione del template

Dopo aver importato il template in TapHome:

  1. Apri il modulo Shelly H&T MQTT
  2. Imposta MQTT Broker IP e Port (predefinito 1883)
  3. Imposta la variabile deviceId sul Device ID del tuo Shelly H&T (es. 112233 — gli ultimi 6 caratteri hex dell’indirizzo MAC)

Il modulo si iscrive a shellies/# e lo script listener filtra i messaggi in base al Device ID configurato.

Sui dispositivi Shelly Gen1, l’attivazione di MQTT disabilita Shelly Cloud — i due non possono coesistere. Attiva MQTT nell’interfaccia web Shelly in Internet & SecurityAdvanced - Developer Settings.

Il periodo di sleep predefinito è di 60 secondi. Per aggiornamenti più frequenti è disponibile un adattatore USB opzionale — con alimentazione esterna la modalità sleep viene disattivata e il sensore misura continuamente.

Funzionalità del dispositivo

Monitoraggio di temperatura e umidità

Il template fornisce un singolo dispositivo Sensore di temperatura che legge la temperatura ambiente dal topic MQTT shellies/shellyht-{deviceId}/sensor/temperature. I valori vengono pubblicati come numero decimale in gradi Celsius.

Un attributo di servizio Umidità legge l’umidità relativa da shellies/shellyht-{deviceId}/sensor/humidity. Il payload MQTT viene pubblicato nell’intervallo 0–100%, ma il template lo converte internamente nell’intervallo 0–1 (es. il valore MQTT 45.2 viene memorizzato come 0.452 in TapHome).

Entrambe le letture si aggiornano ad ogni risveglio del sensore dalla modalità sleep — ogni 60 secondi per impostazione predefinita, o continuamente con alimentazione USB.

Funzionalità aggiuntive

Lo Shelly H&T pubblica anche il livello della batteria (0–100%, CR123A), uno stato online/offline tramite MQTT Last Will and Testament e un messaggio di annuncio del dispositivo con modello, MAC, IP e versione firmware (firmware >=1.6.0). Queste funzionalità potranno essere aggiunte in un futuro aggiornamento del template.

Risoluzione dei problemi

Il sensore non invia dati
  1. Verifica che lo Shelly H&T sia connesso al Wi-Fi e che MQTT sia attivato nelle impostazioni del dispositivo (Internet & SecurityAdvanced - Developer Settings)
  2. Controlla che l’indirizzo e la porta del broker MQTT siano corretti sia nell’interfaccia web Shelly che nelle impostazioni del modulo TapHome
  3. Conferma che la variabile deviceId corrisponda esattamente al Device ID (ultimi 6 caratteri hex del MAC, es. 112233)
  4. Usa un client MQTT (es. MQTT Explorer) per iscriverti a shellies/shellyht-# e verificare che il sensore pubblichi messaggi al risveglio
Il valore di umidità sembra errato

Il template divide il valore di umidità MQTT per 100 — un’umidità del 45,2% viene memorizzata come 0,452 in TapHome. Questo è il comportamento atteso, poiché TapHome utilizza un intervallo 0–1 per i valori di umidità. L’interfaccia TapHome visualizza il valore correttamente come percentuale.

La batteria si scarica rapidamente
  1. Lo Shelly H&T è progettato per una durata della batteria fino a 18 mesi con il periodo di sleep predefinito di 60 secondi
  2. Le frequenti riconnessioni Wi-Fi (segnale debole, cambio canale) aumentano significativamente il consumo energetico
  3. Assicura un segnale Wi-Fi forte nella posizione del sensore — il dispositivo ha una portata di circa 30 m in ambienti interni

I dispositivi Shelly Gen1 non supportano MQTT su TLS. La comunicazione tra il sensore e il broker MQTT non è crittografata (plain MQTT, porta 1883). Assicurati che il broker MQTT si trovi su una rete locale affidabile.

Come installare in TapHome

Prerequisiti

  • Dispositivo Shelly connesso al Wi-Fi (vedi la guida alla connessione HTTP se non ancora fatto)
  • Broker MQTT attivo sulla rete locale (es. Mosquitto, Home Assistant o il broker integrato di TapHome)
  • TapHome CCU sulla stessa rete del broker

Sui dispositivi Gen1, l’attivazione di MQTT disabilita Shelly Cloud. Entrambi non possono funzionare contemporaneamente. Sui dispositivi Gen2/Plus questa limitazione non si applica.

Passaggio 1 — Abilitare MQTT sul dispositivo Shelly

Dispositivi Gen1 (Shelly 1, 1PM, 2.5, EM, 3EM, Plug S, RGBW2, Dimmer, TRV…)

  1. Apri l’interfaccia web Shelly: http://<device-ip>/
  2. Vai su Internet & SecurityAdvanced — MQTT
  3. Abilita MQTT
  4. Imposta MQTT Server: <broker-ip>:<port> (es. 192.168.1.10:1883)
  5. Opzionalmente imposta MQTT User e MQTT Password se il broker richiede l’autenticazione
  6. Clicca su Save — il dispositivo si riavvierà e si connetterà al broker

Dispositivi Gen2 / Plus (Shelly Plus 1, Plus 1PM, Plus 2PM, Plus Plug S, Plus H&T, Pro 3EM…)

  1. Apri l’interfaccia web Shelly: http://<device-ip>/
  2. Vai su SettingsMQTT
  3. Abilita MQTT
  4. Imposta Server: <broker-ip>:<port> (es. 192.168.1.10:1883)
  5. Il Client ID è precompilato con l’ID del dispositivo (es. shellyplus1pm-AABBCCDDEE) — lascialo così a meno che tu non abbia un motivo specifico per cambiarlo
  6. Clicca su Save e riavvia il dispositivo

Per verificare che MQTT funzioni, usa un client MQTT (es. MQTT Explorer) e sottoscrivi shellies/# (Gen1) o <device-id>/# (Gen2). Dovresti vedere i messaggi di stato dal dispositivo.

Passaggio 2 — Trovare il Device ID / MQTT Client ID

Alcuni template richiedono un parametro Device ID o MQTT Client ID. Questo è l’identificatore univoco utilizzato nei topic MQTT.

  • Gen1: si trova sull’etichetta come indirizzo MAC (es. AABBCCDDEE). Device ID = shelly<model>-<mac>, es. shelly1pm-AABBCCDDEE
  • Gen2/Plus: si trova nell’interfaccia web Shelly sotto SettingsDevice InfoDevice ID, oppure sull’etichetta del dispositivo

Passaggio 3 — Configurazione in TapHome

  1. In TapHome, aggiungi un nuovo modulo Packet Parser (MQTT)
  2. IP Address: inserisci l’IP del broker MQTT (es. 192.168.1.10)
  3. Port: 1883 (predefinito; usa 8883 per TLS)
  4. Device ID / MQTT Client ID: inserisci il valore dal passaggio 2 (se richiesto dal template)
  5. Importa il template — TapHome si sottoscriverà automaticamente ai topic del dispositivo

Dispositivi disponibili

Shelly H&T MQTT Modulo
Variabili personalizzate
deviceId (string)MQTT Device ID dello Shelly H&T — ultimi 6 caratteri hex dell'indirizzo MAC (es. 112233)
Sensore di temperatura Sensore di temperatura Solo lettura

Temperatura ambiente e umidità — lettura °C da MQTT, umidità convertita da 0–100% a intervallo 0–1

float Unità: °C

Sensore di temperatura

Lettura umidità
# Simple HTTP Request:
# VAR response := SENDHTTPREQUEST("/example/getValue");
# IF response.IsSuccess
#  VAR content := response.Content;
#  VAR responseHeaders := response.Headers;
#  RETURN(PARSEXML(content, "//element1/value1"));
# ELSE
#  ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
#  RETURN(NaN);
# END
Hu := listenHum;
# Set Http request method, body and headers
# VAR response := SENDHTTPREQUEST("/example/getValue", "GET", "some data", "header1:value1", "header2:value2", ...);
# OR
# VAR request := HTTPREQUEST("/example/getValue", "POST", "some data");
# request.headers := { "header1:value1", "header2:value2", ...};
# request.method := "GET";
# request.data := null;
# VAR response := SENDHTTPREQUEST(request);
#
#
# Send TCP, UDP data:
# VAR data1 := BYTECOLLECTION("0a bb ea df 01");
# SENDDATA(data1);
# VAR data2 := "{\"name\":\"John\", \"age\":32}";
# SENDDATA(data2);
# VAR data3 := TOBYTES("{\"name\":\"John\", \"age\":32}", "iso-8859-1");
# SENDDATA(data3);
# Process received TCP or UDP data and set device values in the Listener script
#
#
# Download data from FTP:
# FTPDOWNLOAD("filePath");
Lettura temperatura
# Simple HTTP Request:
# VAR response := SENDHTTPREQUEST("/example/getValue");
# IF response.IsSuccess
#  VAR content := response.Content;
#  VAR responseHeaders := response.Headers;
#  RETURN(PARSEXML(content, "//element1/value1"));
# ELSE
#  ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
#  RETURN(NaN);
# END
te := listenTemp;
# Set Http request method, body and headers
# VAR response := SENDHTTPREQUEST("/example/getValue", "GET", "some data", "header1:value1", "header2:value2", ...);
# OR
# VAR request := HTTPREQUEST("/example/getValue", "POST", "some data");
# request.headers := { "header1:value1", "header2:value2", ...};
# request.method := "GET";
# request.data := null;
# VAR response := SENDHTTPREQUEST(request);
#
#
# Send TCP, UDP data:
# VAR data1 := BYTECOLLECTION("0a bb ea df 01");
# SENDDATA(data1);
# VAR data2 := "{\"name\":\"John\", \"age\":32}";
# SENDDATA(data2);
# VAR data3 := TOBYTES("{\"name\":\"John\", \"age\":32}", "iso-8859-1");
# SENDDATA(data3);
# Process received TCP or UDP data and set device values in the Listener script
#
#
# Download data from FTP:
# FTPDOWNLOAD("filePath");
Listener
# Parse received bytes:
IF(RECEIVEDMSG.TOPIC = "shellies/shellyht-"+ deviceId +"/sensor/temperature")
 listenTemp := todouble(TOSTRING(RECEIVEDMSG.PAYLOAD));
END
IF(RECEIVEDMSG.TOPIC = "shellies/shellyht-"+ deviceId +"/sensor/humidity")
 listenHum := todouble(TOSTRING(RECEIVEDMSG.PAYLOAD))/100;
END
Connessione: Packet Parser → MQTT
Possibili miglioramenti (3)
  • Battery Level — Battery percentage (0–100%, CR123A). Available via MQTT but not parsed in template listener script.
  • Connection Status — LWT topic — true on connect, false on disconnect. Could detect offline sensor.
  • Device Announcement — JSON payload with device model, MAC, IP, firmware version. Published on connect (FW ≥1.6.0).

Fonti