Dragino LHT65N/S-DC LoRaWAN 干接点传感器对接文档
模型清单
可使用下列名称或 ID 在 ThinkLink 中搜索对应模型。
| 模型类型 | 名称 | id_name | 平台模型 ID |
|---|---|---|---|
| RPC | [LHT65N-S-DC GET] 21313 | lht65n_s_dc_get_21313 | 134064840598515716 |
| RPC | [LHT65N-S-DC SET] 21313 | lht65n_s_dc_set_21313 | 134064840598515715 |
| Template | LHT65N-S-DC | LHT65N-S-DC_21313 | 134064840598515712 |
| Thing Model | [LHT65N-S-DC] | lht65n_s_dc_21313 | 134064840598515713 |
| Parameter Thing Model | [LHT65N-S-DC-PARA] | lht65n_s_dc_para_21313 | 134064840598515714 |
1. 传感器简介
Dragino LHT65N-DC 与 LHT65S-DC 是 LoRaWAN 1.0.3 Class A 干接点传感器,支持开关状态/中断事件、32 位脉冲累计、内置温湿度、电池状态和链路质量采集。设备使用 OTAA 入网,采用 2400 mAh CR17450 一次性锂锰电池。
| 项目 | 值 |
|---|---|
| 项目名称 | DRAGINO-21313-LHT65N-S-DC |
| 业务编码 | 21313 |
| 厂商 / 型号 | Dragino / LHT65N-DC、LHT65S-DC |
| 租户 | PUBLIC |
| 模板 | LHT65N-S-DC |
| 默认区域 | CN470 |
| 默认上报周期 | 43200 s(12 小时) |
| 默认下行 FPort | 2 |
2. 产品特点
- 原生 LoRaWAN Class A,不需要 EdgeBus 或外接 DTU。
- EXT=4 支持干接点开关与中断触发,EXT=8 支持 32 位脉冲累计。
- 干接点模式可选择双边沿、下降沿或上升沿;计数模式可选择下降沿或上升沿。
- 实时帧同时携带内置温度、湿度、电池电压和电池状态。
- 可读取固件版本、频段、子频段与电池信息。
3. 适用范围与接线
- 门窗磁簧、继电器触点、漏水探头、烟感或 SOS 设备的无源触点采集。
- 流量计等低功耗脉冲源的累计计数。
- 需要同时观察开关事件与环境温湿度的低功耗场景。
无源干接点:一端接 VCC/VDD,另一端接 INT
有源脉冲源:VCC 接 VCC/VDD,GND 接 GND,信号接 INT外部有源信号接入前必须确认其电平低于 3.3 V。生命安全类应用不得只依赖本设备或单一无线链路。
4. 数据采集
4.1 FPort 2 实时帧
DC 模式的实时上行固定为 11 字节,大端编码:
| 字节 | 字段 | 编码与换算 |
|---|---|---|
| 0–1 | battery_status, battery | 高 2 位为状态,低 14 位为 mV;电压 ÷1000 V |
| 2–3 | temperature | int16BE ÷100 ℃ |
| 4–5 | humidity | uint16BE 低 12 位 ÷10 %RH |
| 6 bit7–4 | no_ack, poll_message, time_sync_ok, unix_time_request | 每项 0/1 |
| 6 bit3–0 | external_mode | 0x04=interrupt,0x08=counting |
| 7 | dry_contact_state | EXT=4;1=闭合,0=断开 |
| 8 | interrupt_event | EXT=4;1=中断触发,0=周期上报 |
| 7–10 | pulse_count | EXT=8;uint32BE |
示例:
FPort 2: CBA40ABB025C0401017FFF
battery=2.980 V, battery_status=Good, temperature=27.47 ℃,
humidity=60.4 %RH, external_mode=interrupt,
dry_contact_state=1, interrupt_event=1
FPort 2: CBA40ABB025C080000003C
external_mode=counting, pulse_count=60解析器只接受 EXT=4 或 EXT=8 的 11 字节帧,并在网关元数据存在时附加 rssi、snr 和 adr。
4.2 FPort 5 设备信息
| 字节 | 字段 | 编码 |
|---|---|---|
| 0 | sensor_model | 固定 0x0B |
| 1–2 | firmware_version | nibble 版本号 |
| 3 | frequency_band | Dragino 频段枚举 |
| 4 | sub_band | 0xFF=N/A |
| 5–6 | battery | uint16BE mV ÷1000 V |
FPort 5: 0B01560BFF0BA4
sensor_model=LHT65N/S, firmware_version=1.5.6,
frequency_band=CN470, sub_band=N/A, battery=2.980 VFPort 3 历史补传和非 DC 外接探头模式不纳入本模型。
5. EdgeBus 模型
本设备为 LoRaWAN 原生传感器,无需 EB 代码,设备通过 LoRaWAN 网络直接上报。
6. 物模型
数据物模型 lht65n_s_dc_21313 处理 FPort 2;参数物模型 lht65n_s_dc_para_21313 处理 FPort 5。
| 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
battery | number | V | 电池电压 |
battery_status | string | — | Ultra Low / Low / OK / Good |
temperature | number | ℃ | 内置温度 |
humidity | number | %RH | 内置湿度 |
external_mode | string | — | interrupt / counting |
dry_contact_state | number | — | 干接点状态,EXT=4 |
interrupt_event | number | — | 中断来源,EXT=4 |
pulse_count | number | count | 累计计数,EXT=8 |
no_ack / poll_message | number | — | 协议状态位 |
time_sync_ok / unix_time_request | number | — | 时间状态位 |
rssi / snr | number | dBm / dB | 网关链路质量 |
adr | boolean | — | 自适应数据速率状态 |
核心解析逻辑:
const rawBattery = bytes.readUInt16BE(0);
const externalModeCode = bytes[6] & 0x0f;
telemetry.battery = Number(((rawBattery & 0x3fff) / 1000).toFixed(3));
telemetry.temperature = Number((bytes.readInt16BE(2) / 100).toFixed(2));
telemetry.humidity = Number(((bytes.readUInt16BE(4) & 0x0fff) / 10).toFixed(1));
if (externalModeCode == 0x04) {
telemetry.dry_contact_state = bytes[7] ? 1 : 0;
telemetry.interrupt_event = bytes[8] ? 1 : 0;
} else {
telemetry.pulse_count = bytes.readUInt32BE(7);
}7. 第三方平台数据订阅
MQTT Topic:
/v32/{Organization Account}/tkl/up/telemetry/{eui}示例数据:
{
"eui": "6353012af10a9331",
"active_time": "2026-07-26T08:35:48.000Z",
"thingModelId": "134064840598515713",
"thingModelIdName": "lht65n_s_dc_21313",
"telemetry_data": {
"battery": 2.98,
"battery_status": "Good",
"temperature": 27.47,
"humidity": 60.4,
"external_mode": "interrupt",
"dry_contact_state": 1,
"interrupt_event": 1,
"rssi": -72,
"snr": 8.5
}
}8. RPC
8.1 设置参数
lht65n_s_dc_set_21313 每次构造一条 Class A 用户下行:
| 设置项 | 参数 | 范围 | 下行载荷 |
|---|---|---|---|
| 上报周期 | period_up | 1–16777215 s | 01 + uint24BE |
| 干接点双边沿 | interrupt_both | — | A2 04 01 |
| 干接点下降沿 | interrupt_falling | — | A2 04 02 |
| 干接点上升沿 | interrupt_rising | — | A2 04 03 |
| 下降沿计数 | counting_falling | — | A2 08 01 00 |
| 上升沿计数 | counting_rising | — | A2 08 01 01 |
| 设置累计值 | pulse_count | 0–4294967295 | A2 08 02 + uint32BE |
period_up=43200 -> 01 00 A8 C0
pulse_count=60 -> A2 08 02 00 00 00 3C8.2 读取设备信息
lht65n_s_dc_get_21313 固定发送 26 01,设备在后续 FPort 5 上行返回设备信息。
Class A 设备通常只能在上行后的接收窗口接收下行。RPC 成功表示平台已构造并提交下行,不单独证明设备已应用设置。
9. 模板选择
在 PUBLIC 模型中选择:
- 模板:
LHT65N-S-DC - id_name:
LHT65N-S-DC_21313 - 模板 ID:
134064840598515712
模板默认值:
| 属性 | 默认值 |
|---|---|
class_mode | ClassA |
standard | CN470 |
period_up | 43200 s |
downlink_port | 2 |
external_mode | interrupt_both |
pulse_count | 0 |
部署时使用设备标签上的 DevEUI、JoinEUI/AppEUI 与 AppKey 完成 OTAA 注册,且不得把密钥写入项目文件。频段必须与设备固件和网络一致;首次入网后建议执行一次设备信息读取。
10. 测试与补充说明
本地测试 test/lht65n_s_dc.test.mjs 覆盖 EXT=4、EXT=8、负温度、状态位、错误端口/长度/EXT、FPort 5、全部 SET 命令、GET 命令以及 JSON/模板/索引一致性。
官方资料:
- https://www.dragino.com/products/lorawan-nb-iot-door-sensor-water-leak/item/328-lht65n-s-dc.html
- https://wiki.dragino.com/docs/LoRaWAN-End-Node/temperature-humidity-sensors/lht65n/
- https://wiki.dragino.com/docs/Configuration/end-node/lht65n-dc-connection-instruction/
- https://github.com/dragino/dragino-end-node-decoder/tree/main/LHT65N