Milesight EM410-RDL: LoRaWAN Radar-Distanz- & Füllstandsensor
Milesight EM410-RDL 60-GHz-Radar-Füllstandsensor: eigener ChirpStack/ThingsBoard-Decoder, dekodiertes Beispiel, Distanz- und Totzonen-Alarme.
- LoRaWAN
- Class A, OTAA/ABP
- Band / Port
- EU868 / Port 85
- Radar
- 60 GHz mmWave, 8° Strahlwinkel
- Messbereich
- 0,3 bis 12 m, Totzonen-Alarm
- Genauigkeit / Auflösung
- bis ±2 mm / 1 mm
- Schutzart
- IP68 (1 m Wassertiefe, 48 h)
- Batterie
- 19000 mAh ER34615 Li-SOCl2, bis 7 Jahre
Was misst der EM410-RDL?
Distanz
Berührungslose Radar-Distanz zur Oberfläche, 0,3 bis 12 m, gemeldet in Millimetern.
Temperatur
Onboard-Temperatur in °C, nützlich zur Kompensation und in kalten Umgebungen.
Distanz-Alarme
Schwellwert-, Änderungs- (Mutation) und Totzonen-Alarme werden sofort als Event-Uplinks gesendet.
Radar-Signalstärke
RSSI des reflektierten Signals zur Beurteilung von Ziel und Montage.
Batteriestand
Wird periodisch gemeldet, sodass Sie den Wechsel rechtzeitig planen können.
Integration
Sensor / Controller
Misst oder steuert vor Ort und sendet LoRaWAN-Uplinks.
LoRaWAN-Gateway
Empfängt die Funkpakete und reicht sie an den Server weiter.
ChirpStack
Network-Server: verwaltet Sessions und decodiert das Payload.
ThingsBoard / Grafana
Dashboards, Alarme, Regeln und Reports.
function decodeUplink(input) {
var bytes = input.bytes;
var data = { events: [] };
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 === 0x82) { // distance (mm)
data.distance = readInt16LE(bytes, i); i += 2;
} else if (channel === 0x05 && type === 0x00) { // position (0 normal / 1 tilt)
data.position = bytes[i] === 0 ? "normal" : "tilt"; i += 1;
} else if (channel === 0x06 && type === 0xc7) { // radar signal RSSI
data.radar_signal_rssi = readInt16LE(bytes, i) / 100; i += 2;
} else if (channel === 0x84 && type === 0x82) { // distance threshold alarm (2B distance + 1B status)
var d = readInt16LE(bytes, i);
data.distance = d;
data.events.push({ distance: d, distance_alarm: readDistanceAlarm(bytes[i + 2]) });
i += 3;
} else if (channel === 0x94 && type === 0x82) { // distance mutation alarm (2B distance + 2B mutation + 1B status)
var dm = readInt16LE(bytes, i);
data.distance = dm;
data.events.push({
distance: dm,
distance_mutation: readInt16LE(bytes, i + 2),
distance_alarm: readDistanceAlarm(bytes[i + 4])
});
i += 5;
} else if (channel === 0xb4 && type === 0x82) { // distance exception / blind-spot alarm (2B distance + 1B status)
var raw = (bytes[i + 1] << 8) | bytes[i];
var ev = { distance_exception: readDistanceException(bytes[i + 2]) };
if (raw !== 0xfffd && raw !== 0xffff) { ev.distance = readInt16LE(bytes, i); }
data.events.push(ev);
i += 3;
} else {
break;
}
}
if (data.events.length === 0) { delete data.events; }
return { data: data };
}
function readInt16LE(b, i) {
var v = (b[i + 1] << 8) | b[i];
return v > 0x7fff ? v - 0x10000 : v;
}
function readDistanceAlarm(v) {
if (v === 0) return "threshold alarm release";
if (v === 1) return "threshold alarm";
if (v === 2) return "mutation alarm";
return "alarm " + v;
}
function readDistanceException(v) {
if (v === 0) return "blind spot alarm release";
if (v === 1) return "blind spot alarm";
if (v === 2) return "no target";
if (v === 3) return "sensor exception";
return "exception " + v;
}
Implementiert nach der veröffentlichten Milesight-Byte-Spezifikation (Communication Protocol / User Guide).
Kanalformat: 01 75 Batterie (%), 03 67 Temperatur (INT16 little-endian, /10), 04 82 Distanz (INT16, mm), 05 00 Position (0 normal / 1 Neigung), 06 C7 Radar-Signal-RSSI (INT16, /100). Event-Uplinks nutzen 84 82 (Distanz-Schwellwert-Alarm, 2-Byte-Distanz plus Status-Byte, wobei 0 Schwellwert-Freigabe, 1 Schwellwert-Alarm, 2 Mutation bedeutet), 94 82 (Distanz-Änderungs-Alarm, Distanz plus 2-Byte-Mutationswert plus dasselbe Status-Byte) und B4 82 (Distanz-Ausnahme- bzw. Totzonen-Alarm, dessen Status-Byte 0 Freigabe, 1 Totzone, 2 kein Ziel, 3 Sensorausnahme bedeutet). Das Gerät sendet außerdem History (Kanal 20 CE) und Downlink-Antwort-Frames (FF/FE/F8/F9), die dieser Basis-Decoder überspringt. Kanal-IDs, Typen und Skalierung folgen der veröffentlichten Milesight-Byte-Spezifikation. Für ThingsBoard wandert dieselbe Kanal-Logik in einen Uplink-Converter.
Uplink (hex)
0175630367E80004826205Decoded JSON
{ "battery": 99, "temperature": 23.2, "distance": 1378 }Einsatzszenarien
Tank- & Silo-Füllstand
Berührungsloser Füllstand von Wasser, Kraftstoff, Chemie oder Getreide, ohne das Medium zu berühren.
MehrSmart City & Wasser
Pegel von Reservoirs, Brunnen und Kanälen mit Schwellwert- und Totzonen-Alarmen.
MehrSmart Agriculture
Füllstände von Flüssigfutter-, Gülle- und Bewässerungstanks unter rauen Außenbedingungen.
MehrKonfiguration & Stolpersteine
Montage & Totzone
Montieren Sie das Radar senkrecht über der Oberfläche und halten Sie mindestens die 0,3-m-Totzone frei. Messwerte innerhalb der Totzone lösen den Totzonen-Alarm aus und sind keine gültigen Distanzen.
Strahlweg
Der 8°-Strahl muss die Oberfläche erreichen, ohne Leitern, Rohre oder Tankwände zu treffen. Starke Reflexionen an Hindernissen können statt des echten Füllstands gemeldet werden, prüfen Sie daher nach der Installation den Radar-Signal-RSSI.
Distanz vs. Füllstand
Das Gerät meldet die Distanz vom Sensor zur Oberfläche, nicht den Füllstand. Berechnen Sie den Füllstand im Dashboard als Tankhöhe minus Distanz und hinterlegen Sie die Referenzdistanzen für leer und voll.
NFC-Einrichtung
Keys, Meldeintervall und die Schwellwert-/Änderungs-/Totzonen-Alarme werden vor dem Rollout per NFC mit der Milesight-ToolBox-App gesetzt.
So unterstützt dich merkaio beim EM410-RDL
Von der Beschaffung bis zum laufenden Betrieb, alles aus einer Hand und auf eigener europäischer Infrastruktur.
Pre-Staging & Provisioning
Wir konfigurieren den EM410-RDL, setzen Keys, Intervalle und Alarme und liefern einsatzbereit aus.
Eigener Decoder
Payload-Codec für ChirpStack v4 und ThingsBoard, nach der Milesight-Spezifikation implementiert.
Integration ins Dashboard
Die Daten landen in deinem ThingsBoard oder Grafana, inklusive Alarmen und Reports.
Betrieb & Monitoring
Wir betreiben LoRaWAN-Stack und Dashboards auf europäischer Infrastruktur, du nutzt nur die Daten.
Häufige Fragen
Sprechen wir über Ihre Infrastruktur. Digital und vor Ort.
Ob IoT-Plattformentwicklung, Hardwareauswahl, Managed Hosting für ChirpStack, ThingsBoard, Grafana oder NetBird VPN, oder Migration von einem Self-Hosted-Setup - wir finden die passende Lösung für Ihren Anwendungsfall. Buchen Sie ein kostenloses 30-Minuten-Gespräch, unverbindlich.
Ihr Ansprechpartner
Timo Wevelsiep
Gründer, merkaio
15 Minuten, unverbindlich, direkt mit Timo.
Decoder für ChirpStack v4. merkaio ist unabhängiger Integrator und nicht mit Milesight affiliiert.