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.

Milesight EM300-SLD
EM300-SLDSensor
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
Measurements

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.

Data into your dashboard

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.

ChirpStack v4 · decodeUplink
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)

0175640367E500046873050000

Decoded JSON

{ "battery": 100, "temperature": 22.9, "humidity": 57.5, "leakage": "normal" }
From the field

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.

Your partner

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

Yes. It is a standard LoRaWAN Class A device, no Milesight gateway or cloud required. You add the codec to the device profile and provision it via OTAA.
Yes, for both ChirpStack and ThingsBoard, implemented from the published Milesight byte specification. The same channel logic goes into a ThingsBoard uplink converter.
A spot electrode probe measures conductivity between two contacts. When water or another conductive liquid bridges them, from about 5 mm depth, the leakage channel switches from normal to leak and an alarm uplink is sent.
Yes. It has a built-in temperature and humidity sensor (around -20 to +60 °C and 0 to 100 % RH), so the same device gives leak status plus ambient context for the room.
It is a Class A device on LoRaWAN port 85. Routine uplinks carry leakage status, temperature and humidity; the battery percentage is reported periodically.
It ships with a replaceable 4000 mAh battery that can last up to several years, depending on the reporting interval and how often leak alarms are triggered.
From the same series

Related devices

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.

Timo Wevelsiep

Your contact

Timo Wevelsiep

Founder, merkaio

15 minutes, no commitment, directly with Timo.

By submitting, you agree to our Privacy Policy.

Decoder for ChirpStack v4. merkaio is an independent integrator and is not affiliated with Milesight.