TapHome

Shelly Plus H&T

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

Lo Shelly Plus H&T (SNSN-0013A) è un sensore di temperatura e umidità Wi-Fi alimentato a batteria (4x AA) con display e-paper. È un dispositivo Gen2 (serie Plus), ora fuori produzione e sostituito dallo Shelly H&T Gen3, ma ancora ampiamente utilizzato. TapHome comunica con il dispositivo tramite MQTT utilizzando topic /status/ individuali per ogni componente. Questo è l’approccio standard per i dispositivi Shelly Gen2 — lo script listener si iscrive a <device-id>/# ed elabora i messaggi di stato in arrivo quando il sensore si sveglia dal sonno profondo e pubblica dati.

Il template crea un singolo dispositivo Sensore di temperatura e umidità con 9 attributi di servizio a livello dispositivo che coprono batteria, rete e diagnostica di connettività. A differenza della variante Gen3 (che utilizza notifiche events/rpc consolidate), questo template Gen2 elabora topic individuali /status/temperature:0, /status/humidity:0, /status/devicepower:0 e altri topic specifici per componente.

Configurazione

Device ID

Ogni Shelly Plus H&T ha un Device ID univoco nel formato shellyplusht-<MACADDRESS>, dove <MACADDRESS> è l’indirizzo MAC completo a 12 caratteri in esadecimale maiuscolo (es. shellyplusht-A8032AB12CD3). Questo ID serve anche come prefisso dei topic MQTT.

Il Device ID si trova:

  • Sull’etichetta del dispositivo (indirizzo MAC)
  • Nell’interfaccia web Shelly: SettingsDevice InfoDevice ID
  • Tramite API: GET http://<device-ip>/rpc/Mqtt.GetConfig → campo client_id
Configurazione del template

Dopo l’importazione del template in TapHome:

  1. Apri il modulo Shelly Plus H&T MQTT
  2. Imposta l’MQTT Broker IP sull’indirizzo del broker MQTT
  3. Imposta la Port (predefinita 1883)
  4. Imposta il parametro di importazione Device ID sul Device ID del dispositivo (es. shellyplusht-A8032AB12CD3)

Il modulo si iscrive a <device-id>/# e lo script listener analizza i messaggi JSON /status/ individuali dai topic di ogni componente.

Assicurati che MQTT sia abilitato sullo Shelly Plus H&T e che status_ntf (notifiche di stato) sia impostato su true. Il template si basa su topic di stato individuali (/status/temperature:0, /status/humidity:0 ecc.), non sul topic consolidato events/rpc.

Comportamento di misurazione e segnalazione

Lo Shelly Plus H&T opera diversamente in base alla fonte di alimentazione:

  • Modalità batteria — risveglio ogni 1 minuto per la misurazione. Segnala tramite MQTT se la temperatura cambia di più di 0,5 °C o l’umidità di più del 5%. Una segnalazione incondizionata viene inviata ogni 2 ore se non sono state attivate segnalazioni basate su soglia. Un periodo di protezione di 5 minuti impedisce risvegli eccessivi.
  • Alimentazione USB — risveglio ogni 5 minuti per misurazione, aggiornamento display e segnalazione incondizionata ad ogni ciclo.

Il display e-paper si aggiorna quando la temperatura cambia di più di 0,2 °C o l’umidità di più del 3%.

Il dispositivo è alimentato a batteria e trascorre la maggior parte del tempo in sonno profondo. TapHome non può interrogare attivamente il sensore — si basa sul dispositivo che invia lo stato tramite MQTT al risveglio. Aspettati intervalli tra le letture, specialmente in modalità batteria. L’alimentazione USB Type-C fornisce aggiornamenti più frequenti ma non ricarica le batterie interne.

Capacità del dispositivo

Temperatura e umidità

Il dispositivo sensore legge temperatura e umidità da topic di stato MQTT individuali:

  • Temperatura — temperatura ambiente in Celsius, letta da tC nel topic /status/temperature:0
  • Umidità — umidità relativa in percentuale, letta da rh nel topic /status/humidity:0 (lo script readhumidity divide il valore per 100 per convertirlo nell’intervallo 0–1 atteso da TapHome)

Entrambi i valori sono in sola lettura e si aggiornano ogni volta che il sensore si sveglia e pubblica dati.

La soglia di segnalazione della temperatura è configurabile sul dispositivo (predefinita 0,5 °C, intervallo 0,5–5,0 °C). La soglia di umidità è predefinita al 5% (intervallo 1–20%). Queste soglie possono essere regolate tramite l’interfaccia web Shelly o API per bilanciare la frequenza di segnalazione rispetto alla durata della batteria.

Attributi di servizio

Il template espone 9 attributi di servizio a livello dispositivo che coprono lo stato della batteria e la diagnostica del dispositivo:

Monitoraggio batteria:

  • Battery — percentuale di carica della batteria da battery.percent in /status/devicepower:0
  • Battery voltage — tensione della batteria in Volt da battery.V in /status/devicepower:0
  • External power — se l’alimentazione esterna USB Type-C è collegata, da external.present in /status/devicepower:0

Diagnostica di rete:

  • WiFi — SSID della rete WiFi connessa da /status/wifi
  • IP Address — indirizzo IP del dispositivo da /status/wifi
  • MAC Address — indirizzo MAC del dispositivo da /status/sys

Stato connettività:

  • Cloud connected — stato connessione Shelly Cloud da /status/cloud
  • MQTT connected — stato connessione broker MQTT da /status/mqtt
  • BLE enabled — stato Bluetooth Low Energy da /status/ble

Tutti gli attributi di servizio mostrano "-" quando non sono ancora stati ricevuti dati (stato iniziale dopo l’importazione del template, prima del primo risveglio del sensore).

Capacità aggiuntive

Lo Shelly Plus H&T pubblica anche la temperatura in Fahrenheit (campo tF in /status/temperature:0), potenza del segnale WiFi (RSSI in dBm) e supporta il componente HT_UI per configurare l’unità di temperatura sul display e-paper (°C/°F). Il dispositivo fornisce anche lo stato online/offline tramite il topic MQTT Last Will and Testament (LWT). Queste capacità possono essere aggiunte in un futuro aggiornamento del template.

Risoluzione dei problemi

Il sensore non segnala dati
  1. Verifica che lo Shelly Plus H&T sia connesso al Wi-Fi e che MQTT sia abilitato nelle impostazioni del dispositivo (SettingsMQTTEnable)
  2. Controlla che status_ntf sia impostato su true — il template richiede notifiche di stato individuali sui topic /status/
  3. Conferma che il parametro di importazione Device ID corrisponda esattamente al Device ID del dispositivo (es. shellyplusht-A8032AB12CD3)
  4. Usa un client MQTT (es. MQTT Explorer) per iscriverti a <device-id>/# e verifica che il sensore pubblichi messaggi di stato al risveglio
  5. Controlla il livello della batteria del dispositivo — batterie scariche impediscono al sensore di connettersi al Wi-Fi
La lettura dell’umidità sembra errata
  1. Il template TapHome divide il valore grezzo dell’umidità per 100 (es. rh: 55.3 diventa 0.553 in TapHome). Questo è il comportamento previsto — TapHome utilizza internamente un intervallo 0–1
  2. Il sensore ha un offset di umidità configurabile (Humidity.SetConfigoffset) — verifica che non sia impostato su un valore errato
  3. L’intervallo operativo di umidità del sensore è 30–70% RH. Le letture al di fuori di questo intervallo possono essere meno precise
Attributi di servizio mostrano “-”
  1. Gli attributi di servizio mostrano "-" finché il sensore non si sveglia e pubblica dati sul topic di stato corrispondente
  2. Con alimentazione a batteria, il dispositivo può impiegare fino a 2 ore per inviare il primo report incondizionato — premi il pulsante di reset (dietro il coperchio posteriore) per avviare una misurazione e segnalazione immediata
  3. Verifica che il broker MQTT riceva messaggi su tutti i topic previsti (/status/sys, /status/wifi, /status/cloud, /status/mqtt, /status/ble)
Differenze rispetto allo Shelly H&T Gen3

Lo Shelly Plus H&T (Gen2) e lo Shelly H&T Gen3 hanno capacità sensoriali simili ma differiscono nella comunicazione MQTT:

  • Gen2 (Plus H&T) utilizza topic /status/ individuali per componente — richiede status_ntf: true
  • Gen3 (H&T Gen3) utilizza il topic consolidato events/rpc con eventi JSON-RPC NotifyStatus — richiede rpc_ntf: true
  • Il template Gen3 include anche il rilevamento offline basato su timestamp (>12 ore avviso, >24 ore errore), che il template Gen2 non implementa

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 Plus H&T MQTT Modulo
Variabili personalizzate
deviceId (string)ID dispositivo MQTT usato come prefisso topic — formato: shellyplusht-{MACADDRESS} (nell'interfaccia web Shelly → Settings → Device Info)
Open http://shellyIpAddress → Settings → Device info → copy Device ID (e.g. shellyplusht-A8032AB12CD3)
Sensore di temperatura e umidità Sensore di temperatura Solo lettura

Temperatura ambiente (°C) e umidità relativa da topic /status/ MQTT individuali — umidità convertita nell'intervallo 0–1 per TapHome

json Unità: °C / %RH json_path
Attributi di servizio
BatteriaPercentuale di carica della batteria — mostra '-' fino al primo risveglio del sensore
Tensione batteriaTensione della batteria in Volt — utile per monitorare il degrado della batteria nel tempo
Alimentazione esternaSe l'alimentazione esterna USB Type-C è collegata (true/false)
WiFiSSID della rete WiFi connessa
Indirizzo IP
Indirizzo MAC
Cloud connessoStato connessione Shelly Cloud (true/false)
MQTT connessoStato connessione broker MQTT (true/false)
BLE abilitatoStato Bluetooth Low Energy abilitato (true/false)

Sensore di temperatura e umidità

Lettura umidità
Hu := listenHum / 100.0;
Listener
IF (INDEXOF(RECEIVEDMSG.TOPIC, deviceid +"/status/temperature:0") >= 0)
    Te := PARSEJSON(RECEIVEDMSG.PAYLOAD,"tC", true);
ELSEIF (INDEXOF(RECEIVEDMSG.TOPIC, deviceid +"/status/humidity:0") >= 0)
    listenHum := PARSEJSON(RECEIVEDMSG.PAYLOAD,"rh", true);
ELSEIF (INDEXOF(RECEIVEDMSG.TOPIC, deviceid +"/status/devicepower:0") >= 0)
    batteryPerc := PARSEJSON(RECEIVEDMSG.PAYLOAD,"battery.percent", true);
    batteryV := PARSEJSON(RECEIVEDMSG.PAYLOAD,"battery.V", true);
    externalPower := PARSEJSON(RECEIVEDMSG.PAYLOAD,"external.present", true);
ELSEIF (INDEXOF(RECEIVEDMSG.TOPIC, deviceid +"/status/sys") >= 0)
    macAddress := PARSEJSON(RECEIVEDMSG.PAYLOAD,"mac", true);
ELSEIF (INDEXOF(RECEIVEDMSG.TOPIC, deviceid +"/status/wifi") >= 0)
    ipaddress := PARSEJSON(RECEIVEDMSG.PAYLOAD,"sta_ip", true);
    wifi := PARSEJSON(RECEIVEDMSG.PAYLOAD,"ssid", true);
ELSEIF (INDEXOF(RECEIVEDMSG.TOPIC, deviceid +"/status/cloud") >= 0)
    cloudConnected := PARSEJSON(RECEIVEDMSG.PAYLOAD,"connected", true);
ELSEIF (INDEXOF(RECEIVEDMSG.TOPIC, deviceid +"/status/mqtt") >= 0)
    mqttConnected := PARSEJSON(RECEIVEDMSG.PAYLOAD,"connected", true);
ELSEIF (INDEXOF(RECEIVEDMSG.TOPIC, deviceid +"/status/ble") >= 0)
    BLEenabled := PARSEJSON(RECEIVEDMSG.PAYLOAD,"enable", true);
END
Attributi di servizio
Battery
IF (ISNAN(batteryPerc), "-", batteryPerc + "%");
Battery voltage
IF (ISNAN(batteryV), "-", batteryV + "V");
External power
IF (LENGTH(externalPower) = 0, "-", externalPower);
WiFi
IF (LENGTH(wifi) = 0, "-", wifi);
IP Address
IF (LENGTH(ipaddress) = 0, "-", ipaddress);
MAC Address
IF (LENGTH(macAddress) = 0, "-", macAddress);
Cloud connected
IF (LENGTH(cloudConnected) = 0, "-", cloudConnected);
MQTT connected
IF (LENGTH(mqttConnected) = 0, "-", mqttConnected);
BLE enabled
IF (LENGTH(BLEenabled) = 0, "-", BLEenabled);
Connessione: Packet Parser → MQTT
Possibili miglioramenti (5)
  • RPC Event Notifications — Gen3 templates use consolidated events/rpc topic with NotifyFullStatus. This Gen2 template uses individual /status/ topics instead — functionally equivalent.
  • Connection Status (LWT) — Last Will and Testament topic — true on connect, false on disconnect. Not used by template.
  • Temperature in Fahrenheit — Temperature also available in Fahrenheit (tF field in /status/temperature:0). Template uses tC only.
  • E-Paper Display Configuration — Temperature unit (C/F) display setting — display-only configuration, not sensor data.
  • WiFi Signal Strength (RSSI) — WiFi signal strength in dBm. Template reads only SSID and IP, not RSSI.

Fonti