Milesight EM310-TILT: LoRaWAN 3-Axis Tilt Sensor
Milesight EM310-TILT LoRaWAN 3-axis tilt sensor: own ChirpStack/ThingsBoard decoder, decoded example, angle threshold alarms and structural monitoring.
- LoRaWAN
- Class A, OTAA
- Band / port
- EU868 / port 85
- Ingress protection
- IP67
- Measurement
- X / Y / Z tilt angle, 3-axis
- Angle range
- -90° to +90° per axis, 0.1° resolution, ±1° accuracy
- Battery
- 2 x ER17505 Li-SOCl2, replaceable, multi-year life
- Configuration
- NFC (Milesight ToolBox)
What the EM310-TILT measures
Tilt angle X
Angle on the X axis relative to the configured initial surface, INT16, scaled by /100.
Tilt angle Y
Angle on the Y axis relative to the initial surface, INT16, scaled by /100.
Tilt angle Z
Angle on the Z axis relative to the initial surface, INT16, scaled by /100.
Threshold status
Per-axis flag (X/Y/Z) signalling that the configured angle threshold was crossed.
Battery level
Reported as a percentage, with local 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 === 0xcf) { // 3-axis tilt angle
data.angle_x = readInt16LE(bytes, i) / 100;
data.angle_y = readInt16LE(bytes, i + 2) / 100;
data.angle_z = readInt16LE(bytes, i + 4) / 100;
var flags = bytes[i + 6];
data.threshold_x = (flags & 0x01) ? 1 : 0;
data.threshold_y = (flags >> 1 & 0x01) ? 1 : 0;
data.threshold_z = (flags >> 2 & 0x01) ? 1 : 0;
i += 7;
} else {
break;
}
}
return { data: data };
}
function readInt16LE(b, i) {
var v = (b[i + 1] << 8) | b[i];
return v > 0x7fff ? v - 0x10000 : v;
}
Implemented from the published Milesight byte specification (Communication Protocol / User Guide).
Channel format: 01 75 battery (%), 03 cf 3-axis tilt angle. The angle block holds three INT16 little-endian values (X, Y, Z, each /100) followed by one status byte whose low three bits flag whether the X, Y and Z thresholds were crossed. Angles are measured relative to the initial surface you set during commissioning. For ThingsBoard the same channel logic goes into an uplink converter. Implemented from the published Milesight byte specification.
Uplink (hex)
01756403CF14002C01F40100Decoded JSON
{ "battery": 100, "angle_x": 0.2, "angle_y": 3, "angle_z": 5, "threshold_x": 0, "threshold_y": 0, "threshold_z": 0 }Use cases
Structural monitoring
Detect leaning poles, towers and barriers before they fail.
MoreAsset and equipment status
Open/closed and upright/tilted state of containers, bins and machinery.
Infrastructure safety
Watch retaining walls, scaffolding and signage for movement.
MoreConfiguration & pitfalls
Initial surface
Set the reference surface (horizontal or vertical) over NFC before mounting, so angles are reported against the correct zero point.
Angle thresholds
Define per-axis threshold and condition rules in the ToolBox. Threshold uplinks are sent immediately, so dashboard rules should treat them as priority events.
Trigger rules
Up to 36 trigger rules cover different scenarios; keep the active set lean so the reporting behaviour stays predictable.
Rigid mounting
Mount the sensor firmly to the monitored object. A loose bracket adds vibration noise and produces false tilt readings.
How merkaio supports your EM310-TILT
From sourcing to day-to-day operation, all from one partner on our own European infrastructure.
Pre-staging & provisioning
We configure the EM310-TILT, 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.