Milesight EM500-CO2: Outdoor-LoRaWAN-CO2-Sensor

Milesight EM500-CO2 Outdoor-LoRaWAN-CO2-Sensor: eigener ChirpStack/ThingsBoard-Decoder, decodiertes Beispiel, dazu Temperatur, Feuchte und Druck.

Milesight EM500-CO2
EM500-CO2Sensor
LoRaWAN
Class A, OTAA
Band / Port
EU868 / Port 85
Schutzart
IP66
CO2-Bereich
0 bis 5000 ppm (NDIR)
Temperatur / Feuchte
-30 bis +70 °C / 0 bis 100 % RH
Luftdruck
300 bis 1100 hPa
Batterie
Austauschbar, bis zu mehrere Jahre
Messgrößen

Was misst der EM500-CO2?

CO2

NDIR-Sensor, 0 bis 5000 ppm, die Leitgröße für Luftqualität und Lüftung.

Temperatur

-30 bis +70 °C, geeignet für Außen- und raue Umgebungen.

Luftfeuchte

Relative Feuchte 0 bis 100 % RH (nicht kondensierend).

Luftdruck

300 bis 1100 hPa, gemeldet als hPa mit einer Nachkommastelle.

Batteriestand

Wird periodisch gemeldet, mit lokaler Speicherung und Retransmission.

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 = {};

  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 === 0x7d) {   // CO2 (ppm)
      data.co2 = readUInt16LE(bytes, i); i += 2;
    } else if (channel === 0x06 && type === 0x73) {   // pressure (hPa)
      data.pressure = readUInt16LE(bytes, i) / 10; i += 2;
    } else {
      break;
    }
  }
  return { data: data };
}

function readUInt16LE(b, i) {
  return (b[i + 1] << 8) | b[i];
}

function readInt16LE(b, i) {
  var v = readUInt16LE(b, i);
  return v > 0x7fff ? v - 0x10000 : v;
}

Implementiert nach der veröffentlichten Milesight-Byte-Spezifikation (Communication Protocol / User Guide).

Channel-Format: 01 75 Batterie (%), 03 67 Temperatur (INT16 little-endian, /10), 04 68 Feuchte (/2), 05 7d CO2 (UINT16 little-endian, ppm), 06 73 Druck (UINT16 little-endian, /10, hPa). Implementiert nach der veröffentlichten Milesight-Byte-Spezifikation. Das Gerät sendet zusätzlich History-Records (Channel 0x20), wenn gepuffert wird, sowie Downlink-Antworten; ergänze diese Zweige, wenn du Retransmission aktivierst. Für ThingsBoard kommt dieselbe Channel-Logik in einen Uplink-Converter.

Uplink (hex)

0175640367EB00046864057DEE0206739427

Decoded JSON

{ "battery": 100, "temperature": 23.5, "humidity": 50, "co2": 750, "pressure": 1013.2 }
Aus der Praxis

Konfiguration & Stolpersteine

NFC-Setup

Keys, Collection- und Reporting-Intervall sowie CO2-Schwellwerte werden vor dem Rollout per Milesight ToolBox über NFC gesetzt.

CO2-Kalibrierung

Der NDIR-Sensor unterstützt automatische Baseline (ABC) und manuelle Kalibrierung. ABC dort deaktivieren, wo CO2 nie auf Frischluftniveau fällt, sonst driftet die Baseline.

Channels abschaltbar

Temperatur, Feuchte, CO2 und Druck lassen sich einzeln in der Konfiguration deaktivieren. Fehlt ein Channel im Uplink, überspringt der Decoder ihn einfach.

Aufwärmphase nach Power-on

Der NDIR-Sensor braucht nach dem Einschalten eine kurze Aufwärmzeit, bevor der erste stabile CO2-Wert kommt. Nicht auf die ersten Uplinks nach einem Batteriewechsel alarmieren.

Dein Partner

So unterstützt dich merkaio beim EM500-CO2

Von der Beschaffung bis zum laufenden Betrieb, alles aus einer Hand und auf eigener europäischer Infrastruktur.

Pre-Staging & Provisioning

Wir konfigurieren den EM500-CO2, 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, kein Milesight-Gateway und keine Cloud nötig. Du hinterlegst den Codec im Device-Profile und legst das Gerät per OTAA an.
Ja, für ChirpStack und ThingsBoard, nach der veröffentlichten Milesight-Byte-Spezifikation implementiert. Dieselbe Channel-Logik kommt in einen ThingsBoard-Uplink-Converter.
Es ist ein 4-in-1-Outdoor-Sensor: CO2 in ppm, Temperatur, relative Feuchte und Luftdruck, dazu ein periodischer Batteriestand. Jeder Channel lässt sich in der Konfiguration deaktivieren.
Der NDIR-Sensor deckt 0 bis 5000 ppm ab. Er unterstützt automatische Baseline-Kalibrierung und manuelle Kalibrierung, damit der Wert über die Zeit nachvollziehbar bleibt.
Ja. Er ist für Außen- und raue Umgebungen gebaut, mit IP66-Gehäuse und einem Betriebsbereich von -30 bis +70 °C, und nutzt eine austauschbare Batterie mit hoher Kapazität für lange Laufzeiten.
Das ist normal. Der Batteriestand wird nur periodisch gemeldet, daher tragen die meisten Uplinks nur die Sensor-Channels. Der Decoder überspringt jeden nicht vorhandenen Channel.
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.