TapHome

Tuya TS0201 Temperature & Humidity Sensor

Packet Parser → MQTT
Inviato da
Ultimo aggiornamento: 06. 2026
Tuya TS0201 Temperature & Humidity Sensor

Il Tuya TS0201 è un sensore Zigbee economico di temperatura e umidità alimentato a batteria con un piccolo display LCD. Lo stesso hardware viene venduto anche con il marchio BlitzWolf BW-IS4 (white label). Il dispositivo è popolare come sensore economico del clima ambientale nella fascia di prezzo entry-level.

TapHome comunica con il TS0201 in modo indiretto — il sensore si abbina a un coordinatore Zigbee (ad es. Sonoff ZBDongle-P/E, stick basato su CC2652, CC2531), gestito da un bridge Zigbee2MQTT. Zigbee2MQTT traduce i messaggi Zigbee in payload JSON sui topic MQTT. TapHome si sottoscrive a questi topic tramite un modulo PacketParser MQTT e mappa i valori sui servizi di temperatura/umidità con attributi di batteria e qualità del collegamento.

Requisiti

Per utilizzare il TS0201 con TapHome sono necessari i seguenti componenti:

  • Coordinatore Zigbee — stick USB basato su CC2652P/CC2652R o CC2531, ad esempio Sonoff ZBDongle-P o Sonoff ZBDongle-E
  • Bridge Zigbee2MQTT — in esecuzione su un host dedicato (Raspberry Pi, NUC, NAS) o come container accanto al broker MQTT
  • Broker MQTT — Mosquitto è l’opzione consigliata; deve essere raggiungibile sia dall’host Zigbee2MQTT sia dalla CCU TapHome
  • CCU TapHome con supporto PacketParser (modello PacketParserCCU)

Il TS0201 stesso non si collega a Wi-Fi o Ethernet — tutta la comunicazione di rete IP avviene tra il broker MQTT e la CCU TapHome.

Abbinamento

Prima di importare il template TapHome, il TS0201 deve essere abbinato al coordinatore Zigbee2MQTT:

  1. Aprire l’interfaccia web Zigbee2MQTT e attivare la modalità di abbinamento (Permit join)
  2. Sul TS0201, tenere premuto il pulsante di reset per circa cinque secondi, finché l’indicatore di rete nella parte superiore del display inizia a lampeggiare
  3. Il dispositivo si unisce automaticamente alla rete Zigbee e appare nell’elenco dei dispositivi Zigbee2MQTT con un indirizzo IEEE (ad es. 0xa4c1388f85d9eca2)
  4. Facoltativamente rinominare il dispositivo e assegnare un friendly name leggibile (ad es. camera_clima) nell’interfaccia web Zigbee2MQTT

La percentuale di batteria potrebbe richiedere fino a 24 ore dopo l’abbinamento per apparire — il sensore riporta il valore della batteria solo periodicamente.

Configurazione

Parametri di importazione

Durante l’importazione del template in TapHome, fornire l’indirizzo del broker MQTT:

ParametroDescrizioneValore predefinito
Mqtt Broker ipAddressIndirizzo IP o hostname del broker MQTT192.168.0.1
Mqtt Broker portPorta TCP del broker MQTT1883
Variabile del modulo

Dopo aver importato il template, impostare la variabile personalizzata TS0201 per identificare il dispositivo sul broker MQTT:

VariabileDescrizioneCome ottenereEsempio
TS0201Friendly name Zigbee2MQTT o indirizzo IEEE del sensoreZigbee2MQTT web UI → Devices → trovare il TS0201 → copiare il Friendly name o l’indirizzo IEEE0xa4c1388f85d9eca2

La variabile viene utilizzata come suffisso del topic MQTT — lo script listener si sottoscrive a zigbee2mqtt/{TS0201} ed elabora il payload di stato JSON.

L’uso di un friendly name (ad es. camera_clima) invece dell’indirizzo IEEE rende la configurazione TapHome più leggibile. Il friendly name può essere modificato nell’interfaccia web Zigbee2MQTT nelle impostazioni del dispositivo.

Funzionalità del dispositivo

Il template mappa il TS0201 come dispositivo Temperature Sensor in TapHome ed espone l’umidità insieme agli attributi di batteria e segnale.

Temperatura e umidità

La temperatura (°C) e l’umidità relativa (%) vengono elaborate dal topic di stato JSON zigbee2mqtt/{TS0201}. Il sensore riporta nuovi valori ogni volta che una grandezza misurata cambia, o secondo una pianificazione periodica gestita dal bridge Zigbee2MQTT.

Esempio di payload pubblicato da Zigbee2MQTT:

1
2
3
4
5
6
7
{
  "battery": 95,
  "humidity": 54.2,
  "linkquality": 132,
  "temperature": 21.7,
  "voltage": 3000
}
Monitoraggio batteria e segnale

Il dispositivo espone tre attributi di servizio oltre ai valori primari di temperatura e umidità:

  • Battery — percentuale di batteria rimanente (0–100 %) dal payload di stato JSON. Il primo valore potrebbe richiedere fino a 24 ore dopo l’abbinamento.
  • Battery Voltage — tensione grezza della batteria in millivolt dal payload di stato JSON.
  • LinkQuality — indicatore della qualità del segnale Zigbee (LQI) dal payload di stato JSON, che varia da 0 (peggiore) a 255 (migliore).

Tutti gli attributi mostrano "-" finché non viene ricevuto il primo messaggio dal dispositivo.

Problemi noti

Valore di umidità diviso per 100

L’attuale script listener nel template divide il payload di umidità per 100 (Hu := payloadHum/100). Tuttavia, Zigbee2MQTT pubblica l’umidità direttamente come percentuale (ad es. 54.2 significa 54,2 %), quindi applicando /100 si ottiene 0.542 % invece del previsto 54.2 %.

Verificare l’umidità riportata su hardware reale. Se il valore è chiaramente spostato di due decimali, modificare lo script listener in Hu := payloadHum; (senza la divisione /100).

Non applicare aggiornamenti firmware OTA

L’immagine firmware del TS0201 pubblicata più di recente rende il dispositivo completamente inutilizzabile. Zigbee2MQTT espone aggiornamenti OTA per questo dispositivo, ma non devono essere applicati finché upstream non pubblica un’immagine sicura. Dettagli nell’issue GitHub Zigbee2MQTT #25207.

NON avviare un aggiornamento OTA per il TS0201 dall’interfaccia web Zigbee2MQTT. L’immagine attuale è nota per rendere il sensore inutilizzabile.

Risoluzione dei problemi

Nessun dato ricevuto
  1. Verificare che il TS0201 appaia nell’elenco dei dispositivi Zigbee2MQTT con un timestamp “Last seen” recente
  2. Verificare che la variabile personalizzata TS0201 in TapHome corrisponda esattamente al friendly name o all’indirizzo IEEE del dispositivo — la corrispondenza è case-sensitive
  3. Utilizzare un client MQTT (ad es. MQTT Explorer) per sottoscriversi a zigbee2mqtt/# e confermare che i payload JSON arrivano su zigbee2mqtt/{friendly_name}
  4. Confermare che l’IP e la porta del broker MQTT nei parametri di importazione TapHome corrispondono al broker raggiungibile dalla CCU
Il dispositivo appare offline in Zigbee2MQTT
  1. Il TS0201 è un dispositivo end-device a batteria — dorme tra i report per risparmiare energia. “Offline” potrebbe semplicemente significare che il dispositivo non ha trasmesso di recente; attendere il prossimo report programmato o premere brevemente il pulsante di reset per forzare un check-in.
  2. Se il dispositivo non torna mai online, il collegamento Zigbee potrebbe essere interrotto a causa della distanza dal coordinatore. Avvicinare il sensore o aggiungere un router Zigbee (dispositivo Zigbee alimentato dalla rete) per estendere la mesh.
  3. Controllare l’attributo LinkQuality — valori inferiori a ~30 lqi indicano un segnale debole.
Valori di batteria o qualità del collegamento obsoleti
  1. La batteria e la tensione si aggiornano solo quando il sensore si sveglia e riporta — potrebbe essere una volta ogni poche ore
  2. Se i valori mostrano "-", nessun messaggio MQTT è ancora stato ricevuto; attendere il prossimo report o riappaiare il dispositivo
  3. Dopo il riappaiamento, la batteria potrebbe rimanere "-" fino a 24 ore prima che venga pubblicato il primo valore

Dispositivi disponibili

Tuya TS0201 Modulo
Variabili personalizzate
TS0201 (string) = 0xa4c1388f85d9eca2Friendly name Zigbee2MQTT o indirizzo IEEE del sensore TS0201 — utilizzato come suffisso del topic MQTT (zigbee2mqtt/{friendly_name})
Open Zigbee2MQTT web UI → Devices → find the TS0201 → copy the Friendly name (or use the IEEE address, e.g. 0xa4c1388f85d9eca2)
Sensore di temperatura e umidità Sensore di temperatura Solo lettura

Temperatura (°C) e umidità relativa (%) elaborate dal payload di stato JSON di Zigbee2MQTT

JSON Unità: °C / % json_path
Attributi di servizio
BatteriaPercentuale di batteria rimanente (0–100 %); il primo valore potrebbe richiedere fino a 24 ore dopo l'abbinamento
Tensione batteriaTensione grezza della batteria in millivolt (mV) elaborata dal payload di stato JSON
LinkQualityIndicatore della qualità del segnale Zigbee (LQI) — 0 (peggiore) a 255 (migliore)

Sensore di temperatura e umidità

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
#
# 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
#
# 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
if RECEIVEDMSG.TOPIC = "zigbee2mqtt/"+ TS0201 
   VAR payloadTemp := PARSEJSON(RECEIVEDMSG.PAYLOAD, "temperature");
   Te := payloadTemp;
   VAR payloadHum := PARSEJSON(RECEIVEDMSG.PAYLOAD, "humidity");
   Hu := payloadHum/100;
   battery := PARSEJSON(RECEIVEDMSG.PAYLOAD,"battery", true);
   voltage := PARSEJSON(RECEIVEDMSG.PAYLOAD,"voltage", true);
   link := PARSEJSON(RECEIVEDMSG.PAYLOAD,"linkquality", true);
end
Attributi di servizio
Battery
IF(ISNAN(battery),"-",battery+"%");
Battery Voltage
IF(ISNAN(voltage),"-",voltage+"mV");
LinkQuality
IF(ISNAN(link),"-",link+"lqi");
Connessione: Packet Parser → MQTT
Possibili miglioramenti (5)
  • Temperature calibration (absolute offset) — Configurable via Zigbee2MQTT devices.yaml or frontend UI — not exposed via TapHome template. Applied at Z2M layer.
  • Temperature precision (decimal digits 0-3) — Configured at the Z2M layer, not in TapHome template.
  • Humidity calibration (absolute offset) — Configured at the Z2M layer, not in TapHome template.
  • Humidity precision (decimal digits 0-3) — Configured at the Z2M layer, not in TapHome template.
  • Availability status — Online/offline availability topic — could detect unreachable devices. Not subscribed by the current template.

Fonti

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.

Verificato da TapHome

Vuoi usarlo nel tuo TapHome Core?

Apri questo template nel Customer Portal per applicarlo a una delle tue case, o crea una proposta di modifica e inviala al catalogo.

Apri nel portale