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.

Milesight EM410-RDL
EM410-RDLSensor
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
Messgrößen

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.

Daten ins Dashboard

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.

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

0175630367E80004826205

Decoded JSON

{ "battery": 99, "temperature": 23.2, "distance": 1378 }
Aus der Praxis

Konfiguration & 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.

Dein Partner

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

Ja. Es ist ein Standard-LoRaWAN-Gerät und benötigt kein Milesight-Gateway und keine Cloud. Sie hinterlegen den Codec im Device-Profil und provisionieren das Gerät per OTAA oder ABP.
Ja, für ChirpStack und ThingsBoard, umgesetzt nach der veröffentlichten Milesight-Byte-Spezifikation. Dieselbe Kanal-Logik wandert in einen ThingsBoard-Uplink-Converter.
Berührungslose Distanz zu einer Oberfläche von 0,3 bis 12 m mit einem 60-GHz-Radar, dazu Onboard-Temperatur, Radar-Signalstärke und ein Neigungs-/Positions-Flag. Typischer Einsatz ist die Tank- und Silo-Füllstandsmessung.
Der Sensor meldet die Distanz vom Sensor zur Oberfläche. Der Füllstand ist Tankhöhe minus gemessene Distanz. Hinterlegen Sie daher die Referenzdistanzen für leer und voll und berechnen Sie den Füllstand im Dashboard.
Distanz-Schwellwert-, Distanz-Änderungs- (Mutation) und Totzonen-Alarm. Sie werden per NFC konfiguriert und sofort als Event-Uplinks gesendet, sodass Dashboard-Regeln sie als Prioritäts-Ereignisse behandeln sollten.
Es kommt eine 19000-mAh-ER34615-Li-SOCl2-Batterie zum Einsatz, ausgelegt für bis zu sieben Jahre, je nach Meldeintervall und Häufigkeit der Alarme.
Ja. Das Gehäuse ist nach IP68 geschützt und übersteht 1 m Wassertiefe für bis zu 48 Stunden. Es ist unempfindlich gegen Staub, Kondensat, Temperaturwechsel und akustischen Lärm.
Aus derselben Serie

Verwandte Geräte

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.

Timo Wevelsiep

Ihr Ansprechpartner

Timo Wevelsiep

Gründer, merkaio

15 Minuten, unverbindlich, direkt mit Timo.

Mit dem Absenden stimmen Sie unserer Datenschutzerklärung zu.

Decoder für ChirpStack v4. merkaio ist unabhängiger Integrator und nicht mit Milesight affiliiert.