The Aqara Temperature and Humidity Sensor T1 reports temperature, relative humidity, and atmospheric pressure over Zigbee. Pair it directly with a Home Assistant coordinator using Zigbee2MQTT or ZHA, and you can keep those readings and your local automations under your own control.
This guide covers identifying the model, pairing through either integration, checking the readings, applying calibration offsets in Zigbee2MQTT, and using the data in fan controls, alerts, and dashboard cards.
Disclosure: Some links in this article may be affiliate links. We may earn a small commission at no extra cost to you.
T1 vs older WSDCGQ11LM — which sensor do you have?
The label matters more than the shop’s “T1” wording. Aqara’s global specification names TH-S02D; Zigbee2MQTT groups it with WSDCGQ12LM. The Traditional Chinese section of its user manual uses 溫濕度感測器 T1, which can help when comparing regional packaging.
| Model | Temperature | Humidity | Pressure | Generation |
|---|---|---|---|---|
| WSDCGQ11LM | Yes | Yes | Yes | Older Aqara Zigbee sensor |
| WSDCGQ12LM / TH-S02D (T1) | Yes | Yes | Yes | T1; Aqara specifies Zigbee 3.0 |
The older WSDCGQ11LM already measures pressure. It is not an added feature unique to T1, so pressure alone is not a reason to replace a working older unit. The T1 has its own device support and firmware requirements; check the exact label and the model recognised by your integration.
See the older sensor definition, T1 definition and aliases, and Aqara’s TH-S02D specification. An unfamiliar regional suffix such as “RH” is not sufficient to identify different hardware.
Prerequisites
- A Home Assistant installation with a compatible Zigbee coordinator.
- Either Zigbee2MQTT with a local MQTT broker and HA discovery, or the ZHA integration. One coordinator belongs to one Zigbee stack at a time.
- A working CR2032 battery; remove an insulating tab if one is fitted.
For a fresh network, follow the Xiaomi Zigbee setup overview. On an older adapter, check the T1 device page’s minimum firmware: it lists 20211114 for CC1352/CC2652, 20211115 for CC2530/CC2531, 20211222 for CC2538, and 0x26720700 for ConBee II. These are historical minimums, not instructions to downgrade a current adapter. The device may need to be paired again after an adapter firmware upgrade.
Pairing via Zigbee2MQTT (recommended)
Zigbee2MQTT provides a documented set of T1 measurements and calibration options. Use it if you want the workflow below, or stay on a working ZHA network rather than migrating solely because of an old pressure-bug claim.
Step 1: Enable permit join
Open the Zigbee2MQTT frontend and enable Permit join. Use the coordinator or a suitable nearby router in its dropdown if you want to choose the joining path. A permanent permit_join: true configuration is unnecessary and is not the current setup method.
Step 2: Enter pairing mode on the sensor
Hold the sensor’s reset button for about five seconds and release when the blue indicator begins blinking. This reset/join procedure also prepares it to move from another network. If joining stalls, try a short button press to wake it, and check the cell and the join window before repeating the long press.
Step 3: Wait for device interview
Watch for the interview to complete and for the device to be recognised as WSDCGQ12LM/T1. Log formatting changes between versions; the important milestones look like this:
Starting interview of the device
Interview completed successfully
Device recognised as Aqara WSDCGQ12LM
Give it a room-specific friendly name, such as bathroom_t1, then find its entities under Home Assistant’s MQTT integration. A short button press can prompt a report; some diagnostic or battery readings arrive later.
Step 4: Disable permit join
Close the join window when you finish adding devices. Open it again only when you intend to add another device.
Entities exposed in Zigbee2MQTT
| Z2M property | Unit | Use |
|---|---|---|
temperature |
°C | Room temperature |
humidity |
% RH | Relative humidity |
pressure |
hPa | Local atmospheric pressure |
device_temperature |
°C | Internal device diagnostic, separate from room temperature |
battery |
% | Estimated remaining charge |
voltage |
mV | Reported battery voltage; not named battery_voltage in Z2M |
power_outage_count |
count | Power interruption diagnostic |
Aqara specifies ±0.3°C temperature accuracy, ±3% relative humidity, and ±0.12 kPa pressure accuracy within its stated operating conditions. Display precision is a different matter: adding decimal places in HA does not improve the sensor’s accuracy.
Check the actual entity IDs before copying an example. Diagnostics can be disabled in HA by default. An increasing outage count is a reason to inspect the battery and contacts, not proof of a particular drain fault.
Pairing via ZHA
Pairing steps
- Open Settings → Devices & services → Zigbee Home Automation and choose Add device.
- Hold the sensor button for about five seconds, releasing when the indicator blinks.
- Wait for discovery to finish, then check temperature, humidity, and pressure on its device page.
- Assign a room and test a short button press or a changing reading.
If the pressure entity is missing or inaccurate
Do not assume ZHA lacks pressure support for every T1. The current T1 device handler includes a pressure cluster. That establishes support in the handler; the version bundled with your HA installation and your exact device signature still matter.
- Check the device page for disabled entities, and wait for a fresh report rather than using an initial empty state.
- Confirm the recognised model and inspect its device diagnostics for the matching quirk. Update Home Assistant if the bundled handler is old.
- Check units: about 1000 hPa and about 100 kPa describe the same pressure. A value near 10 hPa is a different problem, not normal altitude variation.
- If the interview was incomplete, retry pairing near a reliable radio path with a good cell. Save diagnostics if a reproducible missing or scaled reading remains.
Zigbee2MQTT is an alternative if its converter better supports your particular unit. Changing stacks means re-pairing devices; they cannot share one coordinator concurrently. A second coordinator can run a separate network. Avoid a full migration just to fix a disabled entity or a missing first report.
Calibration offsets in Zigbee2MQTT
Z2M applies the following offsets to new reports in software. Use the device’s Settings options, or its documented bridge/request/device/options MQTT request. These are configuration options, rather than writable sensor measurements on the device’s /set topic.
Setting a temperature offset
For a sensor consistently reading 1.5°C high, save temperature_calibration: -1.5. This complete HA action sends that option to Zigbee2MQTT:
action: mqtt.publish
data:
topic: zigbee2mqtt/bridge/request/device/options
payload: '{"id":"bathroom_t1","options":{"temperature_calibration":-1.5}}'
retain: false
Setting a humidity offset
humidity_calibration is an absolute percentage-point offset. A value of 5 adds five points, such as changing 45% to 50%; it is not a five-percent multiplier.
action: mqtt.publish
data:
topic: zigbee2mqtt/bridge/request/device/options
payload: '{"id":"bathroom_t1","options":{"humidity_calibration":5}}'
retain: false
Setting a pressure offset
pressure_calibration adds or subtracts hPa from incoming readings. For a consistent 2.5 hPa high reading against a comparable reference:
action: mqtt.publish
data:
topic: zigbee2mqtt/bridge/request/device/options
payload: '{"id":"bathroom_t1","options":{"pressure_calibration":-2.5}}'
retain: false
Replace bathroom_t1 with your friendly name and the base topic if it differs. Check the response on zigbee2mqtt/bridge/response/device/options for success and any restart requirement. The MQTT options API documents this request format.
How to determine your offset
Place the T1 and a trusted reference together, away from direct sun, vents, or warm equipment. Let both settle and compare several fresh readings before deciding on an offset. Calculate reference minus sensor: if the reference is 24.0°C and the T1 reads 25.5°C, the correction is -1.5°C.
Offsets affect the next device report, not old history. Aqara says small changes may report only about hourly, with larger changes reporting sooner; a lack of a new value immediately after saving is not necessarily a failure. Avoid using calibration to compensate for a poor mounting position.
Pressure is measured at the sensor’s elevation. Forecast services commonly show pressure adjusted to sea level, so compare like with like before applying an offset. A proper elevation adjustment is separate from correcting a sensor bias.
Practical automations
The automation mappings below each belong in a separate automation’s Edit in YAML view. Replace every entity ID and the phone notification action. In automations.yaml, each automation instead needs a list entry beginning with - alias:.
Humidity-triggered ventilation fan
A bathroom humidity threshold can start a fan, with a lower threshold to stop it. These values are examples to tune against your normal humidity, not a universal comfort rule.
alias: Bathroom fan - high humidity
triggers:
- trigger: numeric_state
entity_id: sensor.bathroom_t1_humidity
above: 75
conditions: []
actions:
- action: switch.turn_on
target:
entity_id: switch.bathroom_fan
mode: single
alias: Bathroom fan - humidity recovered
triggers:
- trigger: numeric_state
entity_id: sensor.bathroom_t1_humidity
below: 60
for:
minutes: 10
conditions: []
actions:
- action: switch.turn_off
target:
entity_id: switch.bathroom_fan
mode: single
The ten-minute wait requires humidity to remain below 60% continuously. HA restarts reset for waits. Check that automatic switching suits your fan and other controls, and keep the sensor out of direct spray or condensing steam.
Temperature alert
For a server cupboard, an alert can draw attention to a cooling problem. This threshold is a household example; choose a value appropriate to the equipment and measurement position.
alias: Server cupboard - temperature alert
triggers:
- trigger: numeric_state
entity_id: sensor.server_closet_t1_temperature
above: 35
conditions: []
actions:
- action: notify.mobile_app_your_phone
data:
title: Server cupboard
message: Temperature is above 35°C. Check cooling.
mode: single
Find your actual notify.mobile_app_… action under Developer Tools → Actions and test it before relying on the alert. A numeric-state trigger fires when the reading enters the threshold; add a scheduled reminder if you want repeated warnings while it stays high.
Pressure-based weather automation
A falling pressure trend is useful to plot and compare with a forecast. It is not enough to predict rain by itself. To calculate a rate, use HA’s Derivative helper, rather than comparing a reading to its timestamp.
Create it through Settings → Devices & services → Helpers, or merge this sensor entry into HA’s configuration.yaml. A source measured in hPa and unit_time: h produces hPa/hour. The one-hour window smooths rates; it is not an exact subtraction from the value exactly one hour ago.
sensor:
- platform: derivative
source: sensor.living_room_t1_pressure
name: T1 pressure rate
unique_id: t1_pressure_rate
unit_time: h
time_window: "01:00:00"
max_sub_interval: "00:15:00"
round: 2
After reloading or restarting as appropriate, confirm the helper’s actual entity ID and unit. This separate automation flags a sustained falling rate for you to inspect:
alias: T1 - falling pressure trend
triggers:
- trigger: numeric_state
entity_id: sensor.t1_pressure_rate
below: -2
for:
minutes: 10
conditions: []
actions:
- action: notify.mobile_app_your_phone
data:
title: Pressure trend
message: Local pressure is falling. Check the graph and forecast.
mode: single
Two hPa/hour is a starting observation threshold, not a validated rain trigger for every climate. Reporting gaps, noisy readings, and sensor movement can distort the rate. Keep the T1 indoors in its rated conditions and compare a useful history before automating anything around the trend.
Dashboard setup
Dashboard snippets go into a card’s code editor, not automations.yaml. Replace their entity IDs before saving.
Mushroom Entity Card (quick glance)
If Mushroom is already installed, its Entity card gives a compact view. Otherwise use a built-in Tile or Entities card; custom cards require their own installation.
type: custom:mushroom-entity-card
entity: sensor.living_room_t1_temperature
name: Living room
icon: mdi:thermometer
tap_action:
action: more-info
Add another card for humidity or pressure if you want those visible at a glance.
History Graph
type: history-graph
entities:
- entity: sensor.living_room_t1_temperature
- entity: sensor.living_room_t1_humidity
hours_to_show: 24
Use the history graph to compare overnight changes and ventilation cycles. Temperature and humidity have different units, so separate graphs can be easier to read.
Gauge Card
type: gauge
entity: sensor.living_room_t1_humidity
min: 0
max: 100
severity:
green: 0
yellow: 60
red: 75
The colour thresholds are your dashboard choices; tune them to the room instead of treating them as sensor specifications.
Battery life and placement tips
The T1 uses one CR2032. Battery estimates are approximate, and cold, weak radio paths, frequent reporting, or a poor cell can shorten service life. It is a battery end device, so it does not extend the Zigbee mesh.
- Keep it away from direct sunlight, radiators, and warm electronics.
- Allow air to circulate; a closed cabinet measures its own interior rather than the room.
- Check that it still reports from the final mounting position.
- Avoid metal mounting surfaces and direct steam, spray, or condensation.
- Aqara specifies indoor use. A homemade cover does not make it a weather-rated outdoor sensor.
For a remote room, improve the Zigbee route with a compatible powered router. If reports stop, check the battery and the radio path before changing calibration or reporting settings.
Cloud and network isolation
The sensor sends Zigbee packets to the coordinator. With ZHA, HA receives them directly through that stack; with Zigbee2MQTT, the broker carries the readings to HA. Neither direct pairing route requires an Aqara app or account.
The sensor itself has no IP address to place on a Wi-Fi VLAN. Network isolation applies to your HA host, broker, or network coordinator, with the necessary local connections allowed. A phone push notification, a cloud-controlled fan, or software updates can still involve external services; choose local targets if offline operation matters.
To migrate from an Aqara hub, use the documented five-second reset/join sequence and pair it to the new network. A Zigbee sensor cannot be a member of both networks at once.
Which integration to use
Use Zigbee2MQTT if you want its documented calibration options and device controls. Use ZHA if the sensor’s readings already work on that network. Check an actual missing pressure entity before deciding to migrate: both sensor generations have pressure hardware, and ZHA’s current T1 handler includes pressure support.
After pairing, confirm fresh readings and sensible units, choose a representative mounting position, and test one automation. Those checks matter more than adding offsets or changing Zigbee stacks before you have seen a problem.
