Dragino LSE01 Payload Decoder
Decode Dragino LSE01 LoRaWAN payloads online: battery, soil moisture, soil temperature and conductivity (EC), with Dragino's exact negative-temperature formula. Includes payload structure, verified examples and a decodeUplink codec for ChirpStack v4 and The Things Stack.
Example payloads
CE2900F107A5099B6E2890
3.625 V · DS18B20 24.1 °C · moisture 19.57 % · soil 24.59 °C · EC 28200 µS/cm (official TTN repository test vector)
0B45000005DC010500C800
2.885 V · no probe (0.0) · moisture 15.00 % · soil 2.61 °C · EC 200 µS/cm (field examples from the manual)
0B45000005DCFF7E00C800
Negative soil temperature: 0xFF7E → −1.29 °C (Dragino's own formula)
Payload structure
| Bytes | Field | Type / scale | Description |
|---|---|---|---|
| 0–1 | Battery | uint16 & 0x3FFF → mV | The top 2 bits are reserved and must be masked off. Example: 0xCE29 & 0x3FFF = 0x0E29 = 3625 mV. |
| 2–3 | DS18B20 temperature | int16 ÷ 10 → °C | Optional external probe. Reads 0x0000 (0.0 °C) when no probe is fitted — there is no explicit sentinel. |
| 4–5 | Soil moisture | uint16 ÷ 100 → % | Range 0–10000 → 0–100 %. Example: 0x07A5 = 1957 → 19.57 %. |
| 6–7 | Soil temperature | (raw − 0xFFFF) ÷ 100 if negative | Dragino's official formula for negative values subtracts 0xFFFF (not 0x10000): 0xFF7E → −1.29 °C. Positive: raw ÷ 100. |
| 8–9 | Soil conductivity (EC) | uint16 → µS/cm | No scaling. Example: 0x6E28 = 28200 µS/cm. |
| 10 | Status | bitfield | Bit 7 = MOD (0 default, 1 raw mode: bytes 4–9 become dielectric constant and raw AD values on firmware ≥ 1.2.1). Bits 3–0 = interrupt flag. |
Ready-to-use codec
ChirpStack v4 and The Things Stack share the same decodeUplink(input) signature:
paste this into the device profile codec (ChirpStack) or the
payload formatter (TTN).
function decodeUplink(input) {
var b = input.bytes;
function u16(i) { return (b[i] << 8) | b[i + 1]; }
function int16(i) { var v = u16(i); return v >= 0x8000 ? v - 0x10000 : v; }
var soil = u16(6);
return {
data: {
battery: (u16(0) & 0x3FFF) / 1000,
temp_ds18b20: int16(2) / 10,
soil_moisture: u16(4) / 100,
soil_temperature: (soil & 0x8000 ? soil - 0xFFFF : soil) / 100,
soil_conductivity: u16(8),
mod: b[10] >> 7,
interrupt: b[10] & 0x0F
}
};
}
About the LSE01 uplink
The Dragino LSE01 measures soil moisture, soil temperature and electrical conductivity (EC) — the core trio for precision-agriculture irrigation decisions. It reports on FPort 2 as a fixed 11-byte, big-endian frame.
Decoder pitfalls specific to this device:
- Mask the battery. The top two bits of bytes 0–1 are not voltage; without the 0x3FFF mask a fresh battery reads as ~52 V.
- Dragino’s negative-temperature quirk. The official decoder computes
negative soil temperatures as
(raw − 0xFFFF) / 100— one less than standard two’s complement. 0xFF7E is −1.29 °C, not −1.30 °C. This tool reproduces the official behavior exactly. - No probe ≠ error. With no DS18B20 attached, bytes 2–3 simply read 0x0000. There is no 0x7FFF sentinel on this model (unlike the LHT52/65).
- Check the MOD bit. If bit 7 of the status byte is set (firmware ≥ 1.2.1 raw mode), bytes 4–9 carry the dielectric constant and raw AD values instead of calibrated readings — this tool warns when it sees it.
- EC is unscaled µS/cm; values in fertilized soil can exceed 20000.
References
- Dragino LSE01 user manual (payload sections 2.3.1–2.3.7) — wiki.dragino.com
- Official decoder: github.com/dragino/dragino-end-node-decoder,
LSE01/(v1.2.1)
More device decoders
Building your own LoRaWAN network? Get Yubox Gateway OS free, or learn hands-on in the LoRaWAN Master Training.