Milesight EM500-UDL: Outdoor LoRaWAN Ultrasonic Level Sensor
Milesight EM500-UDL outdoor LoRaWAN ultrasonic distance and level sensor: own ChirpStack/ThingsBoard decoder, decoded example, tank and flood monitoring.
- LoRaWAN
- 1.0.3 Class A, OTAA
- Band / port
- EU868 / port 85
- Sensing
- Ultrasonic, non-contact distance/level
- Range
- 0.25 to 10 m (variant dependent)
- Accuracy
- ±1 % FS, 1 mm resolution
- Ingress protection
- IP67
- Battery
- 19000 mAh, up to ~10 years
What the EM500-UDL measures
Distance
Non-contact ultrasonic distance to the surface in mm, the basis for fill level.
Fill level
Tank or basin level derived from distance against a known empty/full reference.
Battery level
Reported as a percentage, with local storage and retransmission.
Distance alarm
Optional threshold and mutation alarm for sudden level changes.
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 === 0x82) { // distance (mm)
data.distance = readUInt16LE(bytes, i); i += 2;
} else if (channel === 0x83 && type === 0xe9) { // distance + mutation alarm
data.distance = readUInt16LE(bytes, i) / 10;
data.distance_mutation = readUInt16LE(bytes, i + 2) / 10;
data.distance_alarm = bytes[i + 4];
i += 5;
} else if (channel === 0xff) { // device info (version, SN, status)
break;
} else {
break;
}
}
return { data: data };
}
function readUInt16LE(b, i) {
return (b[i + 1] << 8) | b[i];
}
Implemented from the published Milesight byte specification (Communication Protocol / User Guide).
Channel format: 01 75 battery (%), 03 82 distance (UINT16 little-endian, mm). The 83 E9 channel carries a combined distance plus mutation alarm frame (each value /10) when threshold or mutation alarms are enabled. The 0xFF channels hold device info (protocol/firmware version, serial number, status) on join or power-on. Implemented from the published Milesight byte specification. For ThingsBoard the same channel logic goes into an uplink converter.
Uplink (hex)
0175630382E803Decoded JSON
{ "battery": 99, "distance": 1000 }Configuration & pitfalls
Mount above the blind zone
Keep the surface beyond the ~0.25 m minimum range. Anything inside the blind zone reads as invalid, so plan the sensor height accordingly.
Pick the right variant
EM500-UDL ships in range variants (for example C050, C100). Match the variant to the tank depth so the full level stays inside the rated range.
Foam, vapour and turbulence
Ultrasonic echoes can scatter on foam, heavy vapour or a turbulent surface. Position the probe over a calm spot or use a stilling well.
Convert distance to level
The device reports distance to the surface, not fill. Store the empty and full reference distances in your dashboard to compute level and volume.
NFC setup
Keys, reporting interval and threshold/mutation alarms are configured over NFC with the Milesight ToolBox before rollout.
How merkaio supports your EM500-UDL
From sourcing to day-to-day operation, all from one partner on our own European infrastructure.
Pre-staging & provisioning
We configure the EM500-UDL, 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.