---
title: "QDW90A Pressure Transmitter"
description: "Qidian QDW90A Modbus RTU pressure transmitter with RS-485 interface. Supports pressure, level, temperature and pH measurement via TapHome."
url: "https://taphome.com/en/compatibility/general-qdw90a-pressure-transmitter/"
language: en
lastmod: 2026-04-19
generator: hugo
ai:
  topics: ["modbus-rtu","sensor","rs485","pressure-transmitter","level-measurement"]
  questions: ["How to integrate QDW90A pressure transmitter with TapHome?","How to connect QDW90A via RS-485 to TapHome Multi-Protocol Gateway?","What measurement units does the QDW90A support?","How does the QDW90A decimal scaling work?"]
---

# QDW90A Pressure Transmitter

Communication: Modbus RTU

## Integration guide

The QDW90A is a generic piezoresistive pressure and level transmitter manufactured by Qidian (Anhui Qidian Automation Technology Co., Ltd.). It communicates via Modbus RTU over RS-485 and connects to TapHome through the Multi-Protocol Gateway. The same hardware platform supports pressure, level, temperature, and pH measurement depending on the installed sensor element.

The template reads the measurement value from holding register H:4 with automatic decimal scaling based on H:3. Four service attributes display the current device configuration (slave address, baud rate, measurement unit, and decimal format), and one service action allows remote slave address changes.

## Hardware connection

### RS-485 wiring

Connect the QDW90A to the TapHome Multi-Protocol Gateway using the RS-485 terminals:

| Sensor wire | Connection | Description |
|-------------|------------|-------------|
| **RED** | +24 V | Power supply positive |
| **BLACK** | GND | Power supply ground |
| **BLUE** | A (RS485+) | Modbus data line A |
| **YELLOW** | B (RS485-) | Modbus data line B |

> [!WARNING]
> Wire colors may vary between OEM variants. Always verify the wiring against the documentation included with your specific unit before connecting.

### Communication parameters

| Parameter | Default value |
|-----------|---------------|
| Baud rate | 9600 |
| Parity | None |
| Data bits | 8 |
| Stop bits | 1 |
| Slave ID | 1 |

The baud rate is configurable from 1200 to 115200 via register H:1. The slave address range is 1--255 and can be changed remotely using the **Rewrite the Slave Address** service action in TapHome.

> [!NOTE]
> After changing the slave address or baud rate, the transmitter replies using the **original** settings before switching to the new values. You must also write H:15 = 0 to persist changes to non-volatile memory.

## Device capabilities

### Pressure/level measurement

The template exposes one device --- **Pressure Level** --- that reads the measurement value from holding register H:4 (Int16). The raw value is automatically divided by 10 raised to the power of the decimal point setting from H:3:

```text
actual_value = raw_value / 10^(decimal_points)
```

The measurement unit depends on the sensor configuration stored in H:2. The transmitter supports 23 different units:

| Code | Unit | Category |
|------|------|----------|
| 0 | MPa | Pressure |
| 1 | KPa | Pressure |
| 2 | Pa | Pressure |
| 3 | bar | Pressure |
| 4 | mbar | Pressure |
| 5 | Kgcm2 | Pressure |
| 6 | PSI | Pressure |
| 7 | mH2O | Pressure |
| 8 | mmH2O | Pressure |
| 9 | inH2O | Pressure |
| 10 | H2O | Pressure |
| 11 | mHg | Pressure |
| 12 | mmHg | Pressure |
| 13 | inHg | Pressure |
| 14 | atm | Pressure |
| 15 | Torr | Pressure |
| 16 | m | Level |
| 17 | cm | Level |
| 18 | mm | Level |
| 19 | Kg | Weight |
| 20 | °C | Temperature |
| 21 | pH | pH value |
| 22 | °F | Temperature |

The template script applies an additional conversion for meters (code 16) and centimeters (code 17) to handle their specific scaling requirements.

### Service attributes

The module exposes four service attributes for monitoring the device configuration:

- **Slave Address** (H:0) --- current Modbus slave address (1--255)
- **Baud Rate** (H:1) --- decoded baud rate from the internal code (1200, 2400, 4800, 9600, 19200, 38400, 57600, or 115200)
- **Unit** (H:2) --- currently configured measurement unit displayed as its abbreviation (MPa, KPa, bar, PSI, mH2O, °C, pH, etc.)
- **Decimal Points** (H:3) --- decimal point format (####, ###.#, ##.##, #.###, or .####)

### Service action

- **Rewrite the Slave Address** --- writes a new slave address (1--255) to H:0 and saves to non-volatile memory by writing H:15 = 0. The transmitter responds using the original address before switching.

### Additional capabilities

The QDW90A also provides a Float32 measurement value at registers H:22--H:23 (IEEE 754, big-endian ABCD byte order) which gives the direct reading without decimal scaling. Additional registers include the range zero point (H:5), range full point (H:6), zero offset calibration (H:12), serial parity configuration (H:37), and a factory reset command (H:16). These can be added as custom Modbus devices in TapHome if needed.

## Available devices 1

These devices appear in TapHome after import.

QDW90A Pressure Transmitter Module

Service Attributes

|                |                                                                                                     |
|----------------|-----------------------------------------------------------------------------------------------------|
| Slave Address  | Current Modbus slave address (1-255, default 1)                                                     |
| Baud Rate      | Current baud rate decoded from internal code (1200-115200)                                          |
| Unit           | Currently configured measurement unit (MPa, KPa, Pa, bar, mbar, PSI, mH2O, mmH2O, °C, °F, pH, etc.) |
| Decimal Points | Decimal point display format (####, ###.#, ##.##, #.###, .####)                                     |

Service Actions

|                           |
|---------------------------|
| Rewrite the Slave Address |

Service Attributes

Slave Address

```taphome
modbusr(H, 0, int16);
```

Baud Rate

```taphome
SWITCH(modbusr(H, 1, int16),
	0, 1200,
	1, 2400,
	2, 4800,
	3, 9600,
	4, 19200,
	5, 38400,
	6, 57600,
	7, 115200,
      NaN
);
```

Unit

```taphome
switch(modbusr(H, 2, int16),
	0, "MPa",
	1, "KPa",
	2, "Pa",
	3, "bar",
	4, "mbar",
	5, "Kgcm2",
	6, "PSI",
	7, "mH2O",
	8, "mmH2O",
	9, "inH2O",
	10, "H2O",
	11, "mHg",
	12, "mmHg",
	13, "inHg",
	14, "atm",
	15, "Torr",
	16, "m",
	17, "cm",
	18, "mm",
	19, "Kg",
	20, "°C",
	21, "PH",
	22, "°F",
	NaN
);
```

Decimal points

```taphome
SWITCH(modbusr(H, 3, int16),
	0, "####",
	1, "###.#",
	2, "##.##",
	3, "#.###",	
	4, "#.###",
	NaN
);
```

Service Actions

Rewrite the Slave Address

Parameters: Slave Address (1–255 SlaveAddr)

```taphome
modbusw(SH, 0, int16, SlaveAddr);
modbusw(SH, 15, int16, 0);  # Save to user area
```

Pressure Level Variable Read-only

Measurement value with dynamic decimal scaling — reads H:4 divided by 10^(H:3) with unit-specific conversion for m and cm

Register: H:4 Int16 numeric

Read

```taphome
VAR val := MODBUSR(H, 4, Int16)/power(10, modbusr(H, 3, int16));

switch(modbusr(H, 2, int16),
	16, val,
	17, val / 100, 
	val
);
```

**Connection:** Modbus RTU • 9600 baud• 8N1 • Slave ID: $\[SlaveId]

Possible improvements (7)

- H:22-23 Float Measurement Value — Float32 IEEE 754, big-endian ABCD byte order — direct measurement without decimal scaling. Alternative to H:4 integer method used by template.
- H:5 Range Zero Point — Transmitter zero calibration value — useful for diagnostics
- H:6 Range Full Point — Transmitter full scale calibration value — useful for diagnostics
- H:12 Zero Offset — Int16 R/W, factory default 0. PV output = calibration value + offset. Writable via FC 0x06.
- H:37 Serial Parity — Int16 R/W; 0=None, 1=Odd, 2=Even. Configures RS485 serial parity.
- H:1 Baud Rate (write) — Int16 writable; code 0-7 to change baud rate. Readable as service attribute but no write action in template.
- H:16 Factory Reset — Write 1 to restore factory parameters. Caution: reverts address, baud rate, and calibration data.

## Import parameters

Enter these values when you import the XML.

| Asked in the app | Default       |
|------------------|---------------|
| Slave Id         | `1`           |
| IP address       | `192.168.1.0` |

## Sources

- QDW90A Modbus RTU Communication Protocol
  
  [s2ins.com](https://s2ins.com/wp-content/uploads/2024/11/Pressure-Sensor-Transmitter-QDW90A-O4-0-500Bar-Output-RS485.pdf) 2026-04-19
  
  [PDF](https://taphome.com/compatibility/devices/general-qdw90a-pressure-transmitter/manufacturer/modbus-protocol.pdf)
- Home Assistant Community — QDW90A Modbus Integration
  
  [community.home-assistant.io](https://community.home-assistant.io/t/modbus-with-ew11-qdw90a-3-rs485-water-pressure-measure-probe-0-10-bar/784472) 2026-04-19

Manufacturer documents are © their respective owners. They are provided as published by the manufacturer, for reference only.

## Related Documentation

- [Modbus Integration](https://taphome.com/en/compatibility/modbus-guide/)
- [Modbus](https://taphome.com/en/docs/integration/modbus/)
- [Simple configuration using templates](https://taphome.com/en/docs/integration/modbus/templates/)
- [Modbus scripts and prefetch](https://taphome.com/en/docs/script/modbus-scripts/)
- [Modbus functions](https://taphome.com/en/docs/script/modbus/)
- [Modbus data types](https://taphome.com/en/docs/script/modbus-data-types/)

