Milesight EM300-DI: LoRaWAN-Impulszähler für Zähler
Milesight EM300-DI LoRaWAN-Impulszähler für Wasser-, Gas- und Stromzähler: eigener ChirpStack/ThingsBoard-Decoder, dekodiertes Beispiel und Zähler-Integration.
- LoRaWAN
- Class A, OTAA
- Band / Port
- EU868 / Port 85
- Impulseingang
- Trockenkontakt, Reed-Schalter, passive Impulszähler
- Max. Eingangsfrequenz
- 2000 Hz (min. Impulsbreite 250 µs)
- Impulsfilter
- Verwirft Signale kürzer als 250 µs
- Zählerbereich
- UINT32 (kumulierte Impulse)
- Lokaler Speicher
- 1000 Verlaufseinträge, Nachübertragung
- Schutzart
- IP67
- Batterie
- ER18505 Li-SOCl2, ca. 5 Jahre bei 10-Min-Intervall
- Konfiguration
- NFC (Milesight ToolBox)
Was misst der EM300-DI?
Impulszählung
Kumulierter UINT32-Zähler von Wasser-, Gas- oder Stromzählern mit Impulsausgang.
GPIO-Status
Zustand des Digitaleingangs (offen / geschlossen) zur Kontaktüberwachung.
GPIO-Alarm
Flanken- oder Schwellenereignis, außerhalb des regulären Intervalls gesendet.
Batteriestand
Wird periodisch gemeldet, mit lokaler Speicherung und Nachübertragung.
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 = {};
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 === 0x00) { // GPIO status (0/1)
data.gpio = bytes[i]; i += 1;
} else if (channel === 0x05 && type === 0xc8) { // pulse counter (UINT32 LE)
data.pulse = readUInt32LE(bytes, i); i += 4;
} else if (channel === 0x85 && type === 0x00) { // GPIO + alarm flag
data.gpio = bytes[i];
data.gpio_alarm = bytes[i + 1]; i += 2;
} else {
break;
}
}
return { data: data };
}
function readInt16LE(b, i) {
var v = (b[i + 1] << 8) | b[i];
return v > 0x7fff ? v - 0x10000 : v;
}
function readUInt32LE(b, i) {
return ((b[i + 3] << 24) | (b[i + 2] << 16) | (b[i + 1] << 8) | b[i]) >>> 0;
}
Implementiert nach der veröffentlichten Milesight-Byte-Spezifikation (Communication Protocol / User Guide).
Kanalformat: 01 75 Batterie (%), 05 c8 Impulszähler (UINT32 Little-Endian, kumulativ), 05 00 GPIO-Status (0/1), 85 00 GPIO-Status plus Alarmflag. Die Kanäle Temperatur (03 67) und Feuchte (04 68) sind auf der gemeinsamen EM300-Plattform vorhanden, werden aber nicht in jedem Gerät befüllt. Implementiert nach der veröffentlichten Milesight-Byte-Spezifikation. Für ThingsBoard wandert dieselbe Kanal-Logik in einen Uplink-Converter.
Uplink (hex)
01756405C82A000000Decoded JSON
{ "battery": 100, "pulse": 42 }Einsatzszenarien
Konfiguration & Stolpersteine
Impulseingangstyp
Eingangsmodus an den Zähler anpassen: Trockenkontakt oder Reed-Schalter mit passivem Impulsausgang. Der falsche Modus verpasst oder verdoppelt Impulse.
Entprell-Filter
Der Zähler verwirft Impulse kürzer als 250 µs und das Filterfenster ist per NFC konfigurierbar. Auf den Zähler abstimmen, damit Prellen nicht doppelt zählt.
Kumulierter Zähler
Der Impulswert ist ein laufender Gesamtwert, kein Delta pro Intervall. Den Verbrauch im Dashboard als Differenz aufeinanderfolgender Uplinks berechnen.
Impuls-zu-Einheit-Faktor
Jeder Zähler hat seinen eigenen Faktor Impulse pro Liter oder pro kWh. Pro Gerät speichern, damit der Rohzählwert in echte technische Einheiten umrechnet.
So unterstützt dich merkaio beim EM300-DI
Von der Beschaffung bis zum laufenden Betrieb, alles aus einer Hand und auf eigener europäischer Infrastruktur.
Pre-Staging & Provisioning
Wir konfigurieren den EM300-DI, 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.