RenKe RS-485 Temperature & Humidity Transmitter — Integration Guide
Model catalog
Search for these models in ThinkLink by name or ID.
| Model type | Name | id_name | Platform model ID |
|---|---|---|---|
| RPC | [UMTH4 ACT] 21311 | umth4_calib_21311 | 118656804031721474 |
| RPC | [UMTH4 GET] 21311 | umth4_get_21311 | 118656804031721473 |
| RPC | [UMTH4 SET] 21311 | umth4_set_21311 | 118656804031721472 |
| Template | UMTH4-21311 | umth4_21311 | 118658005754343424 |
| Thing Model | [UMTH4] | umth4_21311 | 118655647318175744 |
| Thing Model | [RS-21311-UMTH4资产] 区域聚合 | umth4_asset_21311 | 119677174411063301 |
| Parameter Thing Model | [UMTH4-PARA] | umth4_para_21311 | 118655647318175745 |
1. Sensor Overview
| Item | Value |
|---|---|
| Device | Temperature & Humidity Transmitter (wall-mount) |
| Model | UMxTH4xCN8F0 |
| Vendor | RenKe (Shandong RenKe / 建大仁科) |
| Protocol | Modbus-RTU (RS-485) |
| Business Code | 21311 |
| Connectivity | EdgeBus KC11 mains-powered DTU (LoRaWAN Class C) |
| Template | UMTH4-21311 |
A standard RS-485 Modbus-RTU temperature & humidity transmitter, bridged to LoRaWAN through a KC11 mains DTU into the ThinkLink platform for remote real-time monitoring, history curves and threshold alarms.
2. Product Features
- Wide-voltage supply DC 10–30V, ultra-low power 0.1W@24V — stable continuous power.
- Standard Modbus-RTU / RS-485, communication distance up to 2000m, multi-device bus.
- Signed (two's-complement) temperature range (sub-zero capable), humidity 0–100%RH, resolution 0.1.
- Temperature/humidity calibration registers (0x0050/0x0051) for remote field calibration.
3. Application Scenarios
- Server room / power distribution monitoring: wall-mounted continuous temp/humidity monitoring with threshold alarms.
- Warehouse / cold storage / archive rooms: storage-environment compliance (e.g. pharmaceutical GSP).
- Greenhouse / farming / industrial workshop: ambient monitoring, can drive dehumidify/ventilation control.
4. Gateway (DTU) Information
4.1 Hardware
| Item | Value |
|---|---|
| DTU model | KC11 (mains version) |
| Interface | RS-485 |
| DTU power | AC 85–270V (mains) |
| LoRaWAN Class | Class C (always-on) |
| Sensor power | DC 10–30V (independent field supply, max 0.1W@24V) |
Power supply confirmed as mains: KC11 mains version (Class C), device template MT-EB-POWER.
4.2 Wiring
T&H transmitter (4-wire) KC11 mains DTU
V+ (brown) ── DC 10~30V+ (field DC supply)
V- (black) ── DC 10~30V- (field DC supply)
485-A (yellow) ──────────── RS-485 A
485-B (blue) ──────────── RS-485 B
KC11 own power: AC 85~270V L/N (mains)| Wire | Signal | Connect to |
|---|---|---|
| Brown | V+ | Field DC 10–30V+ |
| Black | V- | Field DC 10–30V− |
| Yellow | 485-A | KC11 RS-485 A |
| Blue | 485-B | KC11 RS-485 B |
KC11 is powered by AC 85–270V mains; the sensor needs its own DC supply (the KC11 mains version does not feed DC to RS-485 sub-devices). Short the 120Ω terminator to 485-A at the bus end if needed.
5. Data Acquisition
Via Modbus-RTU function code 0x03, a single query reads 2 registers from 0x0000 (humidity + temperature).
- Query:
01 03 00 00 00 02 C4 0B - Response (e.g. temp -10.1℃ / humidity 65.8%RH):
01 03 04 02 92 FF 9B 5A 3D02 92= 658 → humidity 65.8%RHFF 9B= -101 (two's complement) → temperature -10.1℃
5.1 Register Map
| Register (PLC) | Item | Type | R/W | Notes |
|---|---|---|---|---|
| 0x0000 (40001) | Humidity | uint16 | R | /10 = %RH, 0–100% |
| 0x0001 (40002) | Temperature | int16 | R | /10 = ℃, signed (sub-zero) |
| 0x0050 (40081) | Temp calibration | int16 | R/W | /10, field offset |
| 0x0051 (40082) | Humidity calibration | int16 | R/W | /10, field offset |
| 0x07D0 (42001) | Device address | uint16 | R/W | 1–254 |
| 0x07D1 (42002) | Baud rate | uint16 | R/W | 0=2400/1=4800/2=9600 |
Defaults: 4800 8N1, address 0x01. Note the factory baud rate is 4800 (unlike many 9600 devices).
6. EdgeBus Model
6.1 EB Config
| Item | Value |
|---|---|
| name / port | umth4 / 22 |
| version / dataType | 0x87 / 0x10 |
| upPeriodIndex | app_70 |
| periodIndex | app_74 |
| indexAPP (Modbus addr) | app_150 |
| Serial | 4800 8N1 |
| Battery | false (mains, Class C) |
| BzType / BzVersion / SwVersion | 21311 / 1 / 31 |
6.2 EB Code
import { Buffer } from "buffer";
import { buildOtaFile } from "@EBSDK/run";
import {
ActionAfertExpr, CalcData,
CrcMode,
CvtRule,
EBBuffer,
EBModel,
ExprCondition,
LoraUpEvent,
QueryEvent, SetUpCovDataType,
UserConfUPItem, EventInfoItem, QuItemModBus, TypeVal, ValItem, EventConfig, Utils, UserConfQueryItem
} from "@EBSDK/EBCompiler/all_variable";
import { CheckbitEnum, getOtaConfig, HwTypeEnum, UpgrdTypeEnum } from "@EBSDK/otaConfig";
////////////////////////////////////////////////////////////////////////////////////////
const eventInfo:UserConfUPItem[]=[
{
name:"umth4", port:22, version:"0x87",dataType:"0x10",upPeriodIndex:70,
quInfo:[{
protocol:"modbus",addr:"0x01",code:"0x03", periodIndex:74,
indexAPP:150, indexCMD:0, copySize:1,isLast:false,
listVal:[
{ start: "0x0000", end: "0x0000" ,covType:"Uint16BE",covAppIndex:112},
{ start: "0x0001", end: "0x0001" ,covType:"Int16BE",covAppIndex:110},
]
}
]
}
]
let otaConfig = getOtaConfig({
BaudRate: 4800,
StopBits: 1,
DataBits: 8,
Checkbit: CheckbitEnum.NONE,
Battery: false,
ConfirmDuty: 60,
BzType: 21311,
BzVersion: 1
})
const MODBUS_TT = (ebModel: EBModel) => {
for (let i=0; i<eventInfo.length; i++){
let event=new EventInfoItem(eventInfo[i]);
event.upEventSetup()
event.eventInstall()
}
return JSON.stringify(ebModel, null, 2)
}
buildOtaFile(import.meta.url, otaConfig, MODBUS_TT)6.3 Notes
- One uplink event, one Modbus query: FC03 reads 2 registers from 0x0000 (humidity 0x0000 + temperature 0x0001).
- COV enabled: humidity threshold app_112, temperature threshold app_110 — uplink on change; upload period app_70 is the fallback window.
- Uplink frame
dataLen = 6 + 4: first 6 bytes are the standard DTU header (battery@4); bytes 6-7 = humidity register, bytes 8-9 = temperature register. - Modbus target address is dynamically injected from app_150 (factory default 0x01).
7. Thing Model
7.1 Basic Info
| Type | Name | id Name |
|---|---|---|
| Telemetry | [UMTH4] | umth4_21311 |
| Parameter | [UMTH4-PARA] | umth4_para_21311 |
7.2 Uplink Frame
frameInfo: port 22, dataLen -1 (auto), rssi true, battery true, tagList [{0:0x87},{1:0x10}]
| index | field_name | type | Notes |
|---|---|---|---|
| 6 | humidity | uint16be | /10 %RH |
| 8 | temperature | int16be | /10 ℃ (signed) |
7.3 Thing Model Script
Telemetry umth4_21311 (appInfo):
let appInfo = [
{name: "humidity", field_name: "humidity", unit:"%RH", index: 6, type: "uint16be", coefficient: 0.1, decimal:1},
{name: "temperature", field_name: "temperature", unit:"℃", index: 8, type: "int16be", coefficient: 0.1, decimal:1}
]Parameter umth4_para_21311: parses PTL-D01 params on port 214 (app_20/38/40/70/74/110/112/150); on other ports advances the RPC state machine via Utils.paraCheck and writes back shared_attrs.
8. Third-Party Subscription
8.1 MQTT Topic
/v32/{Organization Account}/tkl/up/telemetry/{eui}
8.2 Sample Payload
{
"eui": "6353012af10a9331",
"active_time": "2026-06-14T08:35:48.000Z",
"thingModelId": "118655647318175744",
"thingModelIdName": "umth4_21311",
"telemetry_data": {
"snr": 13.5,
"rssi": -51,
"battery": 3.37,
"humidity": 65.8,
"temperature": 23.5
}
}9. RPC
9.1 RPC Names
| Type | Name | id Name |
|---|---|---|
| Set | [UMTH4 SET] 21311 | umth4_set_21311 |
| Get | [UMTH4 GET] 21311 | umth4_get_21311 |
| Calibration | [UMTH4 ACT] 21311 | umth4_calib_21311 |
9.2 Parameter Definitions
| Slot | Name | field_name | Range/Unit | Description |
|---|---|---|---|---|
| app_38 | Power-on delay | pwron_delay | ≥100 ms | Settle time before query |
| app_40 | Heartbeat period | period_heart | 60–86400 s | Mains default 24h; <1h auto-raised |
| app_70 | Upload period | period_up | 1–86400 s | Cloud upload interval (COV fallback) |
| app_74 | Collect period | period_read | 1–86400 s | DTU poll interval |
| app_110 | Temp COV threshold | cov_temperature | /10 ℃ | Uplink on temp change over threshold |
| app_112 | Humidity COV threshold | cov_humidity | /10 %RH | Uplink on humidity change over threshold |
| app_150 | Modbus address | addr_modbus | 1–247 | DTU query target address |
9.3 RPC Code
- Set
umth4_set_21311: per KB-25, sets period + power-on delay (app_38) + heartbeat (app_40) together; heartbeat <1h auto-raised to 24h for power saving. - Get
umth4_get_21311: sends read-only frame to port 214; the parameter thing model parses and writes back shared_attrs. - Calibration
umth4_calib_21311: variant dropdown selects temp/humidity calibration, writes 0x0050/0x0051 via FC06 transparent (signed, /10), echo-verified then writes back shared_attrs.
10. Template Selection
Search in ThinkLink:
- UMTH4-21311
Or by business type:
- 21311 / Temperature-Humidity Transmitter
11. Additional Notes
- Factory defaults: address 0x01, 4800 8N1. Change baud via register 0x07D1 (0=2400/1=4800/2=9600).
- Change device address via register 0x07D0 (1–254).
- Calibration values are signed offsets (two's complement), written via the calibration RPC over FC06; can be negative.
- Heartbeat: the template ships a short heartbeat (900s) for commissioning connectivity; after the Set RPC it is auto-raised to 24h to save power.