Milesight EM300-SLD: LoRaWAN Spot Water Leak Sensor
Milesight EM300-SLD LoRaWAN spot leak sensor: own ChirpStack/ThingsBoard decoder, decoded example, leak alarms plus temperature and humidity monitoring.
- LoRaWAN
- Class A, OTAA
- Band / port
- EU868 / port 85
- Detection
- Spot leak via electrode probe, water depth from 5 mm
- Temperature
- -20 to +60 °C (SHT)
- Humidity
- 0 to 100 % RH
- Ingress protection
- IP65 (housing)
- Battery
- Replaceable 4000 mAh, up to several years
What the EM300-SLD measures
Leakage status
Probe reports normal or leak when a conductive liquid bridges the electrodes (from about 5 mm depth).
Temperature
Built-in SHT sensor, -20 to +60 °C, for ambient context.
Humidity
Relative humidity 0 to 100 % RH, non-condensing.
Battery level
Reported periodically as a percentage with on-device storage and retransmission.
Integration
Sensor / controller
Measures or controls in the field and sends LoRaWAN uplinks.
LoRaWAN gateway
Receives the radio packets and forwards them to the server.
ChirpStack
Network server: manages sessions and decodes the payload.
ThingsBoard / Grafana
Dashboards, alarms, rules and reports.
function decodeUplink(input) {
var bytes = input.bytes;
var data = {};
for (var i = 0; i < bytes.length; ) {
var channel = bytes[i++];
var type = bytes[i++];
if (channel === 0x01 && type === 0x75) { // battery (%)
data.battery = bytes[i]; i += 1;
} else if (channel === 0x03 && type === 0x67) { // temperature (°C)
data.temperature = readInt16LE(bytes, i) / 10; i += 2;
} else if (channel === 0x04 && type === 0x68) { // humidity (%RH)
data.humidity = bytes[i] / 2; i += 1;
} else if (channel === 0x05 && type === 0x00) { // leakage status
data.leakage = bytes[i] === 1 ? "leak" : "normal"; i += 1;
} else if (channel === 0x20 && type === 0xce) { // history record
data.history = data.history || [];
data.history.push({
timestamp: readUInt32LE(bytes, i),
temperature: readInt16LE(bytes, i + 4) / 10,
humidity: bytes[i + 6] / 2,
leakage: bytes[i + 7] === 1 ? "leak" : "normal"
});
i += 8;
} else {
break;
}
}
return { data: data };
}
function readInt16LE(b, i) {
var v = (b[i + 1] << 8) | b[i];
return v > 0x7fff ? v - 0x10000 : v;
}
function readUInt32LE(b, i) {
return ((b[i + 3] << 24) | (b[i + 2] << 16) | (b[i + 1] << 8) | b[i]) >>> 0;
}
Implemented from the published Milesight byte specification (Communication Protocol / User Guide).
Channel format: 01 75 battery (%), 03 67 temperature (INT16 little-endian, /10), 04 68 humidity (/2), 05 00 leakage status (0 normal, 1 leak). Channel 20 ce carries stored history records (timestamp, temperature, humidity, leakage) for retransmission. Device info and downlink-response segments use channel FF/FE and can be ignored on a plain uplink. The same channel logic goes into a ThingsBoard uplink converter. Implemented from the published Milesight byte specification.
Uplink (hex)
0175640367E500046873050000Decoded JSON
{ "battery": 100, "temperature": 22.9, "humidity": 57.5, "leakage": "normal" }Use cases
Server room & data center
Detect water under raised floors and near cooling units before equipment damage.
MoreSmart office & buildings
Monitor pipe runs, restrooms and basements for leaks and floor wetness.
MoreCold-chain & utility rooms
Combine leak alarms with temperature and humidity in technical spaces.
Configuration & pitfalls
NFC setup
Keys, reporting interval and alarm report times are set over NFC with the Milesight ToolBox app before rollout.
Probe placement
The spot probe needs both electrodes in contact with the liquid. Mount it flat on the lowest point so water of about 5 mm depth bridges the contacts.
Alarm report times
On a leak the device repeats the alarm a configured number of times at a configured interval. Tune these so a real leak is unmissable without flooding the network.
Clean and dry contacts
Dust, scale or condensation residue on the electrodes can delay detection. Inspect and wipe the probe during maintenance so readings stay reliable.
How merkaio supports your EM300-SLD
From sourcing to day-to-day operation, all from one partner on our own European infrastructure.
Pre-staging & provisioning
We configure the EM300-SLD, set keys, intervals and alarms, and ship it ready to deploy.
Own decoder
Payload codec for ChirpStack v4 and ThingsBoard, implemented from the Milesight specification.
Dashboard integration
Data lands in your ThingsBoard or Grafana, with alarms and reports.
Operations & monitoring
We run the LoRaWAN stack and dashboards on European infrastructure, you just use the data.
Frequently asked questions
Let's discuss your infrastructure. Digital and on-site.
Whether it's IoT platform development, hardware selection, managed hosting for ChirpStack, ThingsBoard, Grafana or NetBird VPN, or migration from a self-hosted setup - we'll find the right solution for your use case. Book a free 30-minute consultation, no commitment required.
Your contact
Timo Wevelsiep
Founder, merkaio
15 minutes, no commitment, directly with Timo.
Decoder for ChirpStack v4. merkaio is an independent integrator and is not affiliated with Milesight.