Novus RHT Climate Modbus register map
Also covers RHT Climate WM, RHT Climate DM
Temperature and humidity transmitter (wall and duct mount) with two analog outputs, two alarm outputs, buzzer and Modbus RTU over RS485: temperature, humidity and psychrometric values, min/max, outputs, alarms, forcing and diagnostics
- Official
- 126 registers
- Modbus RTU
- Revision 1 · 2026-10-31
- Identity: firmware, serial number
Official: Written from the manufacturer's documentation, but not tested on a device yet. Check the map against the manufacturer's documentation before you write to a live device. Tested it? Report a test.
Communication
- Protocol
- Modbus RTU
- Unit ID
- 1
- Serial
- 19200 8N1 · 19200 baud, 8 data bits, none parity, 1 stop bit
- Byte / word order
- CDAB · bytes big-endian, words low first (word swap)
- Addresses
- 0-based
Connection values are defaults: the device may be configured differently.
Map
- Registers
- 126 holding registers
- Groups
- 13
- Translation tables
- 4
- Revision
- 1 · 2026-10-31
- Firmware
- from 1.4 V1.4x or later
- Added
- ()
- File
- maps/novus/rht-climate.mbmap.json · 27 KB · history
- SHA-256
- e31d5d871dd05e9086ce37c645de327b4640c6a7482247767a9b51c6ab818b46
- Manufacturer
- novus.com.br
Device identity
What a tool can read to check that this map fits the connected device (SPEC.md section 4.7). Registers with a role are read like any other register.
| Role | Register | Address | Type | Values |
|---|---|---|---|---|
| Serial number | Serial number | holding 300 | uint32 ABCD | |
| Firmware | Firmware version | holding 302 | uint16 |
Sources and notes
- Transmissor RHT Climate, modelos WM e DM - Manual de Instruções · version V1.4x I linked in issue #93; section 10.1 and the option tables of chapter 7
Source: Novus RHT Climate WM / DM instruction manual V1.4x I (Portuguese), chapters 7 and 10
- Functions 03, 05, 06 and 16; writes with address 0 are broadcast.
- Serial defaults: address 1, 19200 bit/s, no parity. The device answers whatever the stop bits are.
- 32-bit values are two registers, least significant word first; every register is big-endian. Both registers of a 32-bit value must be read or written together.
- The measurements are shown with two decimals. Units follow the unit system (register 127): SI (°C, mbar, g/m³, g/kg, kJ/kg) or US (°F, psi, gr/ft³, gr/lb, BTU/lb).
- The manual does not give the decimals of the 32-bit output limits and alarm setpoints; this map reads them with two decimals, like the measurements. Their ranges depend on the quantity chosen for the output or alarm.
- Settings with an input pair (103-106, 115-118, 135-138, 152-155, 169-172) are copied to the working pair (108-111, 120-123, 145-148, 162-165, 179-182) when in range; out-of-range inputs are flagged in register 343.
- Alarm 3 in the register table is the buzzer (models with display).
- Written from the manufacturer's manual; not tested on a device.
| Area | Address | Name | Type | Access | Unit | Scale | Description |
|---|---|---|---|---|---|---|---|
| HR | 0 | int32 CDAB | R | %RH | ×0.01 | %RH | |
| HR | 2 | int32 CDAB | R | ×0.01 | °C (°F in US units) | ||
| HR | 4 | int32 CDAB | R | ×0.01 | °C (°F in US units) | ||
| HR | 6 | int32 CDAB | R | ×0.01 | °C (°F in US units) | ||
| HR | 8 | int32 CDAB | R | ×0.01 | °C (°F in US units) | ||
| HR | 10 | int32 CDAB | R | ×0.01 | kJ/kg (BTU/lb in US units) | ||
| HR | 12 | int32 CDAB | R | ×0.01 | g/m³ (gr/ft³ in US units) | ||
| HR | 14 | int32 CDAB | R | ×0.01 | mbar (psi in US units) | ||
| HR | 16 | int32 CDAB | R | ×0.01 | g/kg (gr/lb in US units) | ||
| HR | 18 | int32 CDAB | R | ×0.01 | The manual gives a range of 0-1000 for this pair, unlike the measurement; read here with two decimals like the measurement | ||
| HR | 20 | int32 CDAB | R | ×0.01 | The manual gives a range of 0-1000 for this pair, unlike the measurement; read here with two decimals like the measurement | ||
| HR | 22 | int32 CDAB | R | ×0.01 | The manual gives a range of 0-1000 for this pair, unlike the measurement; read here with two decimals like the measurement | ||
| HR | 24 | int32 CDAB | R | ×0.01 | The manual gives a range of 0-1000 for this pair, unlike the measurement; read here with two decimals like the measurement | ||
| HR | 26 | int32 CDAB | R | ×0.01 | The manual gives a range of 0-1000 for this pair, unlike the measurement; read here with two decimals like the measurement | ||
| HR | 28 | int32 CDAB | R | ×0.01 | The manual gives a range of 0-1000 for this pair, unlike the measurement; read here with two decimals like the measurement | ||
| HR | 217 | uint16 | RW | Write 1 to reset every minimum and maximum | |||
| HR | 101 | uint16 | RW | ||||
| HR | 102 | uint16 | RW | ||||
| HR | 103 | int32 CDAB | RW | ×0.01 | Two decimals assumed, as in the measurements; copied to register 108 when valid | ||
| HR | 105 | int32 CDAB | RW | ×0.01 | Two decimals assumed, as in the measurements; copied to register 110 when valid | ||
| HR | 107 | uint16 | RW | ||||
| HR | 108 | int32 CDAB | R | ×0.01 | Two decimals assumed, as in the measurements | ||
| HR | 110 | int32 CDAB | R | ×0.01 | Two decimals assumed, as in the measurements | ||
| HR | 113 | uint16 | RW | ||||
| HR | 114 | uint16 | RW | ||||
| HR | 115 | int32 CDAB | RW | ×0.01 | Two decimals assumed, as in the measurements; copied to register 120 when valid | ||
| HR | 117 | int32 CDAB | RW | ×0.01 | Two decimals assumed, as in the measurements; copied to register 122 when valid | ||
| HR | 119 | uint16 | RW | ||||
| HR | 120 | int32 CDAB | R | ×0.01 | Two decimals assumed, as in the measurements | ||
| HR | 122 | int32 CDAB | R | ×0.01 | Two decimals assumed, as in the measurements | ||
| HR | 133 | uint16 | RW | ||||
| HR | 134 | uint16 | RW | ||||
| HR | 135 | int32 CDAB | RW | ×0.01 | Two decimals assumed, as in the measurements; copied to register 145 when valid | ||
| HR | 137 | int32 CDAB | RW | ×0.01 | Two decimals assumed, as in the measurements; copied to register 147 when valid | ||
| HR | 139 | uint16 | RW | ||||
| HR | 140 | uint16 | RW | ×0.1 | In the unit of the alarm quantity | ||
| HR | 141 | uint16 | RW | s | |||
| HR | 142 | uint16 | RW | s | |||
| HR | 143 | uint16 | RW | ||||
| HR | 144 | uint16 | RW | ||||
| HR | 145 | int32 CDAB | R | ×0.01 | Two decimals assumed, as in the measurements | ||
| HR | 147 | int32 CDAB | R | ×0.01 | Two decimals assumed, as in the measurements | ||
| HR | 150 | uint16 | RW | ||||
| HR | 151 | uint16 | RW | ||||
| HR | 152 | int32 CDAB | RW | ×0.01 | Two decimals assumed, as in the measurements; copied to register 162 when valid | ||
| HR | 154 | int32 CDAB | RW | ×0.01 | Two decimals assumed, as in the measurements; copied to register 164 when valid | ||
| HR | 156 | uint16 | RW | ||||
| HR | 157 | uint16 | RW | ×0.1 | In the unit of the alarm quantity | ||
| HR | 158 | uint16 | RW | s | |||
| HR | 159 | uint16 | RW | s | |||
| HR | 160 | uint16 | RW | ||||
| HR | 161 | uint16 | RW | ||||
| HR | 162 | int32 CDAB | R | ×0.01 | Two decimals assumed, as in the measurements | ||
| HR | 164 | int32 CDAB | R | ×0.01 | Two decimals assumed, as in the measurements | ||
| HR | 167 | uint16 | RW | ||||
| HR | 168 | uint16 | RW | ||||
| HR | 169 | int32 CDAB | RW | ×0.01 | Two decimals assumed, as in the measurements; copied to register 179 when valid | ||
| HR | 171 | int32 CDAB | RW | ×0.01 | Two decimals assumed, as in the measurements; copied to register 181 when valid | ||
| HR | 173 | uint16 | RW | ||||
| HR | 174 | uint16 | RW | ×0.1 | In the unit of the alarm quantity | ||
| HR | 175 | uint16 | RW | s | |||
| HR | 176 | uint16 | RW | s | |||
| HR | 177 | uint16 | RW | ||||
| HR | 178 | uint16 | RW | ||||
| HR | 179 | int32 CDAB | R | ×0.01 | Two decimals assumed, as in the measurements | ||
| HR | 181 | int32 CDAB | R | ×0.01 | Two decimals assumed, as in the measurements | ||
| HR | 125 | uint16 | RW | s | |||
| HR | 126 | uint16 | RW | s | |||
| HR | 127 | uint16 | RW | ||||
| HR | 192 | int16 | RW | ×0.1 | ±5.0 °C (±9.0 °F) | ||
| HR | 193 | int16 | RW | %RH | ×0.1 | ||
| HR | 200 | uint16 | RW | Used for the psychrometric calculations: 1013 = 1013 mbar in SI units, 147 = 14.7 psi in US units | |||
| HR | 187 | uint16 | RW | ||||
| HR | 209 | uint16 | RW | ||||
| HR | 221 | uint16 | RW | ||||
| HR | 222 | uint16 | RW | ||||
| HR | 201 | uint16 | RW | ||||
| HR | 202 | uint16 | RW | 0-10.00 V or 3.6-21.00 mA; the manual does not give the encoding | |||
| HR | 203 | uint16 | RW | ||||
| HR | 204 | uint16 | RW | 0-10.00 V or 3.6-21.00 mA; the manual does not give the encoding | |||
| HR | 205 | uint16 | RW | ||||
| HR | 206 | uint16 | RW | ||||
| HR | 207 | uint16 | RW | ||||
| HR | 208 | uint16 | RW | ||||
| HR | 211 | uint16 | RW | ||||
| HR | 212 | uint16 | RW | ||||
| HR | 213 | uint16 | RW | ||||
| HR | 215 | uint16 | RW | ||||
| HR | 214 | uint16 | RW | %RH | ×0.1 | ||
| HR | 216 | int16 | RW | ×0.1 | °C (°F in US units) | ||
| HR | 184 | uint16 | RW | ||||
| HR | 185 | uint16 | RW | ||||
| HR | 186 | uint16 | RW | ||||
| HR | 341 | bool bit 1 | R | ||||
| HR | 341 | bool bit 2 | R | ||||
| HR | 341 | bool bit 3 | R | ||||
| HR | 341 | bool bit 4 | R | ||||
| HR | 341 | bool bit 5 | R | ||||
| HR | 341 | bool bit 6 | R | ||||
| HR | 341 | bool bit 7 | R |
Help improve this map
- I tested it on a deviceReport whether it worked, even if you did not write the map.
- Suggest a correctionEdit the file on GitHub; it opens a pull request.
- Report a problemA wrong address, type, scale or byte order.
- Read the formatWhat each key of the file means (SPEC.md).