
Il Zhong Sheng (XY) Temperatura, umidità, barometro è un sensore cinese tre-in-uno RS-485 Modbus che espone temperatura ambiente, umidità relativa e pressione barometrica. Appartiene alla stessa famiglia OEM del noto trasmettitore di temperatura/umidità XY-MD02, esteso con un chip di pressione di classe BMP — ma con una mappatura registri non standard, specifica di questo rebrand.
Il template TapHome si collega al sensore tramite Modbus TCP attraverso un gateway Ethernet ↔ RS-485, non direttamente. Il gateway collega TapHome Core (LAN) al bus RS-485 su cui risiede il sensore con uno Slave ID configurabile. Sono esposte tre letture — temperatura, umidità relativa e pressione barometrica — ciascuna combinata con un offset di calibrazione per installazione (CORTE, CORH, CORBAR).
Collegamento hardware
Il sensore è un dispositivo Modbus RTU su RS-485. TapHome Core lo raggiunge tramite rete attraverso un gateway Ethernet ↔ RS-485 (è adatto qualsiasi gateway Modbus TCP ↔ RTU standard, ad es. USR-TCP232, Waveshare o un convertitore DIN equivalente).
| |
Cablaggio RS-485

Il sensore utilizza un cavo con terminali a pressione a quattro conduttori secondo la convenzione del riferimento Seeed S-THP-01A (pin-out identico alla maggior parte dei sensori della serie XY):
| Colore del filo | Funzione |
|---|---|
| Rosso | V+ (alimentazione, 4,5–18 V DC) |
| Nero | GND (massa alimentazione / segnale) |
| Giallo | RS-485 A+ |
| Bianco | RS-485 B− |
Collega A+ e B− ai morsetti corrispondenti del gateway Ethernet ↔ RS-485 e condividi la GND tra sensore, alimentatore e gateway per evitare problemi di modo comune.

I colori esatti dei fili possono variare leggermente tra lotti OEM — verifica sempre l’etichetta sul cavo prima di alimentare il sistema. L’inversione di polarità dell’alimentazione non danneggia il sensore (ha una protezione contro l’inversione di polarità), ma il sensore semplicemente non risponderà.
Per tratte di bus superiori a ~100 m usa cavo a coppie intrecciate schermato per
A+/B−e aggiungi una resistenza di terminazione da 120 Ω all’estremità della linea. Mantieni tutti i sensori sullo stesso potenziale di riferimento GND.
Attivazione comunicazione Modbus
Non sono coinvolti menu o DIP switch — il sensore viene consegnato con Modbus RTU già abilitato. L’integrazione consiste unicamente nel cablaggio del bus RS-485, nella configurazione del gateway e nell’immissione di due valori durante l’importazione in TapHome.
Parametri seriali RS-485 (valori di fabbrica)
La serie XY e il riferimento Seeed S-THP-01A escono di fabbrica con le stesse impostazioni seriali. Il template TapHome assume questi valori predefiniti:
| Impostazione | Valore |
|---|---|
| Baud rate | 9600 bps |
| Bit dati | 8 |
| Parità | nessuna |
| Bit di stop | 1 |
| Indirizzo slave | 1 |
Baud rate e indirizzo slave sono configurabili via software tramite holding register direttamente sul sensore (vedi la guida utente Seeed S-THP-01A, registri 0x0200 / 0x0201, o il datasheet XY-MD02). Il template TapHome intenzionalmente non espone questi registri — modificarli da TapHome interromperebbe la connessione attiva.
Configurazione del gateway
Configura il gateway Ethernet ↔ RS-485 come slave Modbus TCP (server) sulla porta TCP 502, che fa da proxy verso il bus RS-485 sottostante a 9600, 8-N-1. Assegnagli un indirizzo IP statico (o una prenotazione DHCP) in modo che non cambi dopo un’interruzione di alimentazione.
Se il gateway supporta più mapping slave, tieni il sensore su Slave ID 1 — è più semplice che riscrivere l’indirizzo del sensore e corrisponde al valore predefinito del template.
Parametri di importazione TapHome
Quando importi il template in TapHome, fornisci due valori:
| Parametro | Predefinito | Descrizione |
|---|---|---|
| Indirizzo IP | 192.168.1.0 | IP del gateway Ethernet ↔ RS-485 sulla LAN |
| Slave ID | 1 | Indirizzo Modbus del sensore sul bus RS-485 |
Variabili di modulo — offset di calibrazione
Dopo l’importazione, in TapHome → Variabili di modulo sono disponibili tre variabili a livello di modulo per la calibrazione per installazione. Vengono applicate sopra ogni lettura grezza:
| Variabile | Predefinito | Unità | Scopo |
|---|---|---|---|
CORTE | 0,5 | °C | Offset di temperatura aggiunto a ogni lettura grezza di temperatura |
CORH | 0,01 | %RH | Offset di umidità aggiunto a ogni lettura grezza di umidità |
CORBAR | 17 | hPa | Offset di pressione aggiunto a ogni lettura grezza di pressione |
CORBAR = 17è una correzione per quota specifica del sito — deve essere ri-tarata per ogni installazione. Lasciare il valore di fabbrica introdurrà un bias di +17 hPa su ogni lettura di pressione rispetto alla pressione atmosferica locale reale. Parti daCORBAR = 0e tara rispetto a un barometro di riferimento noto alla quota di installazione. AncheCORTEeCORHvanno verificati rispetto a un termometro/igrometro di riferimento posizionato accanto al sensore.
Capacità del dispositivo
Il template espone tre dispositivi sensore in sola lettura, tutti che leggono holding register attraverso il gateway:
Temperatura
Temperatura dell’aria dal chip integrato di classe SHT, letta da H:0 (uInt16) e scalata come raw / 10 + CORTE. Riportata in °C con risoluzione 0,1 °C e precisione tipica ±0,5 °C.
Umidità relativa
Umidità relativa dallo stesso chip di classe SHT, letta da H:1 (uInt16) e scalata come raw × 0,001 + CORH. Riportata in %RH.
Il fattore di scala dell’umidità è sospetto. Un moltiplicatore di
×0,001implica che il registro grezzo conterrebbe ≈ 100 000 al 100 %RH, valore che va oltre i limiti di un registro a 16 bit (max 65 535). Il riferimento XY-MD02 usa/10e il Seeed S-THP-01A usa/100. La formula probabilmente corretta èraw / 10— conforme alla convenzione XY-MD02. Verifica le letture su hardware reale prima di fidarti; se l’umidità riportata è tagliata o del tutto fuori scala, modifica il template o usa una variante XY diversa.
Pressione barometrica
Pressione atmosferica dal chip integrato di classe BMP, letta da H:4 come intero unsigned a 32 bit (distribuito su H:4–H:5) e scalata come raw / 100 + CORBAR. Riportata in hPa con risoluzione 0,1 hPa.
L’intervallo di polling a livello di dispositivo nel template XML è di 1 000 ms per il barometro, un valore troppo aggressivo — la pressione atmosferica varia nell’ordine dei minuti, non dei secondi. Dopo l’importazione aumenta l’intervallo di polling del barometro in TapHome → Variabili di dispositivo a 15 000–30 000 ms per ridurre il carico sul bus senza perdere risoluzione utile. L’intervallo di modulo da 30 000 ms già usato da temperatura e umidità è un buon punto di partenza anche per il barometro.
Riepilogo registri
| Registro | Parametro | Tipo di dato | Scala / offset | Unità | Intervallo di polling |
|---|---|---|---|---|---|
H:0 | Temperatura | uInt16 | / 10 + CORTE (0,5) | °C | 30 000 ms (modulo) |
H:1 | Umidità | uInt16 | × 0,001 + CORH (0,01) — verificare | %RH | 30 000 ms (modulo) |
H:4–H:5 | Pressione barometrica | uInt32 | / 100 + CORBAR (17) | hPa | 1 000 ms (troppo aggressivo) |
Il tipo di dato grezzo
uInt16non può rappresentare nativamente valori negativi. Sull’hardware XY-MD02 reale, le temperature sotto lo zero arrivano come interi con segno in complemento a due. Se il sensore è installato in un ambiente che scende regolarmente sotto 0 °C, verifica su hardware reale che le temperature negative vengano decodificate correttamente prima di fare affidamento su di esse.
Risoluzione problemi
Nessuna lettura dopo l’importazione
- Pinga l’IP del gateway dalla stessa sottorete di TapHome Core — se non risponde, il problema è sulla LAN o sull’alimentazione, non su Modbus.
- Verifica che il gateway sia configurato come server Modbus TCP sulla porta 502, non come bridge TCP trasparente.
- Controlla che le impostazioni seriali RS-485 del gateway corrispondano a 9600, 8-N-1 — un disallineamento qui produce silenziosamente timeout senza letture.
- Verifica che lo Slave ID del sensore corrisponda al valore inserito durante l’importazione in TapHome (predefinito
1). Un secondo sensore sullo stesso bus con lo stesso indirizzo causerà una collisione. - Ispeziona il cablaggio RS-485:
A+suA+,B−suB−, GND condivisa tra sensore, alimentatore e gateway.
Valori di umidità non plausibili
Il template XML usa un moltiplicatore di umidità × 0,001 che è incoerente con la famiglia XY-MD02 (/10) e il riferimento Seeed S-THP-01A (/100). Se l’umidità rimane bloccata vicino allo zero o non raggiunge mai valori plausibili, il registro grezzo probabilmente usa la convenzione XY-MD02. Confronta il valore del registro grezzo con uno strumento di debug Modbus (ad es. qModbus) contro un igrometro di riferimento; se valori grezzi attorno a 500 corrispondono a ~50 %RH, la formula deve essere /10 e il template va corretto.
Lettura pressione con bias di ~17 hPa
Il valore predefinito del template CORBAR = 17 è una vecchia correzione per quota specifica del sito. Se la pressione è costantemente ~17 hPa superiore rispetto a un barometro di riferimento vicino (ad es. una stazione meteo), imposta CORBAR a 0 in TapHome → Variabili di modulo e tara rispetto al riferimento.
Alto carico del bus / errori di comunicazione
Aumenta l’intervallo di polling del barometro da 1 000 ms a 15 000–30 000 ms in TapHome → Variabili di dispositivo. Un polling a 1 Hz su un bus RS-485 condiviso lascia poca banda agli altri slave e non offre alcun vantaggio per un barometro.
La temperatura negativa appare come un grande numero positivo
Il template legge la temperatura come uInt16. L’hardware XY reale restituisce le temperature negative come interi con segno in complemento a due — un valore grezzo di 0xFF33 (≈ 65 331) decodificato come unsigned diventa ≈ 6 533,1 °C, ma dovrebbe essere decodificato come −20,5 °C. Se il sensore è installato in un ambiente che può scendere sotto 0 °C, verifica il comportamento su hardware reale e valuta la sostituzione del template con una variante Int16 con segno prima di fare affidamento sulle letture sotto lo zero.