---
title: "Tuya TS0201 Temperature \u0026 Humidity Sensor"
description: "Monitorowanie temperatury i wilgotności przez bramkę Zigbee2MQTT MQTT. Atrybuty baterii, napięcia i jakości połączenia. Szablon TapHome dla czujnika Zigbee Tuya TS0201."
url: "https://taphome.com/pl/compatibility/zigbee2mqtt-ts0201-temperature-humidity/"
language: pl
lastmod: 2026-04-23
generator: hugo
ai:
  topics: ["mqtt","sensor","zigbee","zigbee2mqtt","temperature-humidity","battery-powered"]
  questions: ["Jak zintegrować Tuya TS0201 z TapHome przez Zigbee2MQTT?","Jak sparować czujnik TS0201 z koordynatorem Zigbee2MQTT?","Dlaczego moja wartość wilgotności TS0201 jest raportowana jako ułamek zamiast procentu?","Jak skonfigurować friendly name Zigbee2MQTT dla TS0201 w TapHome?","Czy aktualizować firmware TS0201 przez OTA w Zigbee2MQTT?","Jakie atrybuty usług szablon TS0201 udostępnia w TapHome?"]
---

# Tuya TS0201 Temperature & Humidity Sensor

Komunikacja: Packet Parser → MQTT

- [Strona urządzenia Zigbee2MQTT TS0201](https://www.zigbee2mqtt.io/devices/TS0201.html)

> Adres w sieci
> 
> Przy brokerze MQTT wbudowanym w TapHome wpisz w TapHome jako adres brokera `127.0.0.1`. W urządzeniu wpisz adres IP TapHome Core i nadaj jednostce Core rezerwację IP w routerze.
> 
> [Przygotowanie sieci](https://taphome.com/pl/docs/setup/network-preparation/)

## Poradnik integracji

Tuya TS0201 to tani czujnik Zigbee temperatury i wilgotności zasilany z baterii, z małym wyświetlaczem LCD. Ten sam sprzęt jest również sprzedawany pod marką BlitzWolf BW-IS4 (white label). Urządzenie jest popularne jako tani czujnik klimatu pomieszczenia w kategorii cenowej wstępnej.

TapHome komunikuje się z TS0201 pośrednio — czujnik paruje się z koordynatorem Zigbee (np. Sonoff ZBDongle-P/E, stick oparty na CC2652, CC2531), który jest zarządzany przez bramkę Zigbee2MQTT. Zigbee2MQTT tłumaczy wiadomości Zigbee na payloady JSON na topikach MQTT. TapHome subskrybuje te topiki przez moduł PacketParser MQTT i mapuje wartości na usługi temperatury/wilgotności z atrybutami baterii i jakości połączenia.

## Wymagania

Aby używać TS0201 z TapHome, wymagane są następujące komponenty:

- **Koordynator Zigbee** — USB stick oparty na CC2652P/CC2652R lub CC2531, na przykład Sonoff ZBDongle-P lub Sonoff ZBDongle-E
- **Bramka Zigbee2MQTT** — działająca na dedykowanym hoście (Raspberry Pi, NUC, NAS) lub jako kontener obok brokera MQTT
- **Broker MQTT** — zalecana jest Mosquitto; musi być osiągalna zarówno z hosta Zigbee2MQTT, jak i z TapHome CCU
- **TapHome CCU** z obsługą PacketParser (model PacketParserCCU)

Sam TS0201 nie łączy się z Wi-Fi ani Ethernet — cała komunikacja sieciowa IP odbywa się między brokerem MQTT a TapHome CCU.

## Parowanie

Przed importem szablonu TapHome należy sparować TS0201 z koordynatorem Zigbee2MQTT:

1. Otwórz interfejs webowy Zigbee2MQTT i włącz tryb parowania (**Permit join**)
2. Na TS0201 przytrzymaj przycisk reset przez około pięć sekund, aż wskaźnik sieci w górnej części wyświetlacza zacznie migać
3. Urządzenie automatycznie dołącza do sieci Zigbee i pojawia się na liście urządzeń Zigbee2MQTT z adresem IEEE (np. `0xa4c1388f85d9eca2`)
4. Opcjonalnie zmień nazwę urządzenia i przypisz czytelny friendly name (np. `sypialnia_klimat`) w interfejsie webowym Zigbee2MQTT

> [!NOTE]
> Procent baterii po sparowaniu może pojawić się nawet po 24 godzinach — czujnik raportuje wartość baterii tylko okresowo.

## Konfiguracja

### Parametry importu

Podczas importu szablonu w TapHome podaj adres brokera MQTT:

| Parametr | Opis | Wartość domyślna |
|----------|------|------------------|
| `Mqtt Broker ipAddress` | Adres IP lub hostname brokera MQTT | `192.168.0.1` |
| `Mqtt Broker port` | Port TCP brokera MQTT | `1883` |

### Zmienna modułu

Po imporcie szablonu ustaw zmienną niestandardową `TS0201`, która identyfikuje urządzenie na brokerze MQTT:

| Zmienna | Opis | Jak uzyskać | Przykład |
|---------|------|-------------|----------|
| `TS0201` | Friendly name Zigbee2MQTT lub adres IEEE czujnika | Zigbee2MQTT web UI → Devices → znajdź TS0201 → skopiuj Friendly name lub adres IEEE | `0xa4c1388f85d9eca2` |

Zmienna jest używana jako sufiks topiku MQTT — skrypt listener subskrybuje `zigbee2mqtt/{TS0201}` i parsuje payload stanu JSON.

> [!TIP]
> Użycie friendly name (np. `sypialnia_klimat`) zamiast adresu IEEE sprawia, że konfiguracja TapHome jest bardziej czytelna. Friendly name można zmienić w interfejsie webowym Zigbee2MQTT w ustawieniach urządzenia.

## Możliwości urządzenia

Szablon mapuje TS0201 jako urządzenie typu Temperature Sensor w TapHome i oprócz temperatury udostępnia również wilgotność wraz z atrybutami baterii i sygnału.

### Temperatura i wilgotność

Temperatura (°C) i wilgotność względna (%) są parsowane z topiku stanu JSON `zigbee2mqtt/{TS0201}`. Czujnik raportuje nowe wartości za każdym razem, gdy zmienia się mierzona wielkość, lub zgodnie z okresowym harmonogramem zarządzanym przez bramkę Zigbee2MQTT.

Przykładowy payload publikowany przez Zigbee2MQTT:

```json
{
  "battery": 95,
  "humidity": 54.2,
  "linkquality": 132,
  "temperature": 21.7,
  "voltage": 3000
}
```

### Monitorowanie baterii i sygnału

Urządzenie oprócz głównych wartości temperatury i wilgotności udostępnia trzy atrybuty usług:

- **Battery** — pozostały procent baterii (0–100 %) z payloadu stanu JSON. Pierwsza wartość może pojawić się nawet 24 godziny po sparowaniu.
- **Battery Voltage** — surowe napięcie baterii w miliwoltach z payloadu stanu JSON.
- **LinkQuality** — wskaźnik jakości sygnału Zigbee (LQI) z payloadu stanu JSON, w zakresie od 0 (najgorszy) do 255 (najlepszy).

Wszystkie atrybuty wyświetlają `"-"` dopóki nie dotrze pierwsza wiadomość z urządzenia.

## Znane problemy

### Wartość wilgotności dzielona przez 100

Obecny skrypt listener w szablonie dzieli payload wilgotności przez 100 (`Hu := payloadHum/100`). Zigbee2MQTT publikuje jednak wilgotność bezpośrednio jako procent (np. `54.2` oznacza 54,2 %), więc zastosowanie `/100` daje `0.542 %` zamiast oczekiwanych `54.2 %`.

> [!WARNING]
> Sprawdź raportowaną wilgotność na żywym sprzęcie. Jeśli wartość jest wyraźnie przesunięta o dwa miejsca dziesiętne, dostosuj skrypt listener na `Hu := payloadHum;` (bez dzielenia `/100`).

### Nie stosuj aktualizacji firmware OTA

Najnowiej opublikowany obraz firmware TS0201 unieruchamia urządzenie i czyni je całkowicie nieużywalnym. Zigbee2MQTT udostępnia aktualizacje OTA dla tego urządzenia, ale nie mogą być stosowane, dopóki upstream nie opublikuje bezpiecznego obrazu. Szczegóły w Zigbee2MQTT GitHub issue [#25207](https://github.com/Koenkk/zigbee2mqtt/issues/25207).

> [!WARNING]
> NIE uruchamiaj aktualizacji OTA dla TS0201 z interfejsu webowego Zigbee2MQTT. Obecny obraz jest znany z unieruchamiania czujnika.

## Rozwiązywanie problemów

### Brak otrzymywanych danych

1. Sprawdź, czy TS0201 pojawia się na liście urządzeń Zigbee2MQTT z niedawnym znacznikiem czasu "Last seen"
2. Sprawdź, czy zmienna niestandardowa `TS0201` w TapHome dokładnie pasuje do friendly name lub adresu IEEE urządzenia — dopasowanie rozróżnia wielkość liter
3. Użyj klienta MQTT (np. MQTT Explorer), aby zasubskrybować `zigbee2mqtt/#` i potwierdzić, że payloady JSON przychodzą na `zigbee2mqtt/{friendly_name}`
4. Potwierdź, że IP i port brokera MQTT w parametrach importu TapHome odpowiadają brokerowi osiągalnemu z CCU

### Urządzenie pokazuje się jako offline w Zigbee2MQTT

1. TS0201 to urządzenie końcowe zasilane bateryjnie — śpi między raportami, aby oszczędzać energię. "Offline" może po prostu oznaczać, że urządzenie nie transmitowało ostatnio; poczekaj na następny zaplanowany raport lub krótko naciśnij przycisk reset, aby wymusić zameldowanie.
2. Jeśli urządzenie nigdy nie wraca online, łącze Zigbee może być zerwane z powodu odległości od koordynatora. Przenieś czujnik bliżej lub dodaj router Zigbee (urządzenie Zigbee zasilane z sieci) w celu rozszerzenia mesh.
3. Sprawdź atrybut LinkQuality — wartości poniżej ~30 lqi wskazują na słaby sygnał.

### Nieaktualne wartości baterii lub jakości połączenia

1. Bateria i napięcie są aktualizowane tylko wtedy, gdy czujnik się budzi i raportuje — może to być raz na kilka godzin
2. Jeśli wartości pokazują `"-"`, jeszcze nie otrzymano żadnej wiadomości MQTT; poczekaj na następny raport lub sparuj urządzenie ponownie
3. Po ponownym sparowaniu bateria może pozostać `"-"` nawet przez 24 godziny, zanim zostanie opublikowana pierwsza wartość

## Dostępne urządzenia 1

Te urządzenia pojawią się w TapHome po imporcie.

Tuya TS0201 Moduł

Zmienne niestandardowe

`TS0201` (string) = 0xa4c1388f85d9eca2 Friendly name Zigbee2MQTT lub adres IEEE czujnika TS0201 — używany jako sufiks topiku MQTT (zigbee2mqtt/{friendly\_name})

Open Zigbee2MQTT web UI → Devices → find the TS0201 → copy the Friendly name (or use the IEEE address, e.g. 0xa4c1388f85d9eca2)

Czujnik temperatury i wilgotności Czujnik temperatury Tylko do odczytu

Temperatura (°C) i wilgotność względna (%) parsowane z payloadu stanu JSON Zigbee2MQTT

JSON Jednostka: °C / % json\_path

Atrybuty serwisowe

|                  |                                                                                                       |
|------------------|-------------------------------------------------------------------------------------------------------|
| Bateria          | Pozostały procent baterii (0–100 %); pierwsza wartość może pojawić się nawet 24 godziny po sparowaniu |
| Napięcie baterii | Surowe napięcie baterii w miliwoltach (mV) parsowane z payloadu stanu JSON                            |
| LinkQuality      | Wskaźnik jakości sygnału Zigbee (LQI) — 0 (najgorszy) do 255 (najlepszy)                              |

Odczyt wilgotności

```taphome
# 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");
```

Odczyt temperatury

```taphome
# 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");
```

Nasłuchiwanie

```taphome
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
```

Atrybuty serwisowe

Battery

```taphome
IF(ISNAN(battery),"-",battery+"%");
```

Battery Voltage

```taphome
IF(ISNAN(voltage),"-",voltage+"mV");
```

LinkQuality

```taphome
IF(ISNAN(link),"-",link+"lqi");
```

**Połączenie:** Packet Parser → MQTT

Możliwe ulepszenia (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.

## Parametry importu

Te wartości podajesz podczas importu pliku XML.

| Pytanie w aplikacji  | Domyślnie     |
|----------------------|---------------|
| Mqtt Broker Adres IP | `192.168.0.1` |
| Mqtt Broker port     | `1883`        |

## Źródła

- Zigbee2MQTT — TS0201 device page
  
  [www.zigbee2mqtt.io](https://www.zigbee2mqtt.io/devices/TS0201.html) 2026-04-23
- Zigbee2MQTT GitHub — TS0201 device definition
  
  [github.com](https://github.com/Koenkk/zigbee2mqtt.io/blob/master/docs/devices/TS0201.md) 2026-04-23

## Powiązana dokumentacja

- [MQTT Integration](https://taphome.com/pl/compatibility/mqtt-guide/)
- [Packet Parser (HTTP, TCP, UDP, FTP, MQTT)](https://taphome.com/pl/docs/integration/packet-parser/)
- [Funkcje Packet parser](https://taphome.com/pl/docs/script/packet-parser/)
- [Funkcje parsowania](https://taphome.com/pl/docs/script/parsing-functions/)
- [Broker MQTT](https://taphome.com/pl/docs/integration/packet-parser/mqtt-broker/)
- [Skrypty listener](https://taphome.com/pl/docs/script/listener-scripts/)

