Milesight WS203: LoRaWAN PIR-Bewegungs- & Temperatur/Feuchte-Sensor

Milesight WS203 LoRaWAN PIR-Bewegung plus Temperatur/Feuchte: eigener ChirpStack/ThingsBoard-Decoder, dekodiertes Beispiel, Smart-Office-Integration.

Milesight WS203
WS203Sensor
LoRaWAN
Class A, OTAA
Band / Port
EU868 / Port 85
PIR-Erfassung
Bis 6 m, 120° H / 100° V
Temperatur
0 bis +50 °C Innenraumbereich
Feuchte
0 bis 100 % RH
Batterie
4000 mAh ER18505, bis zu 5 Jahre
Konfiguration
NFC (Milesight ToolBox)
Messgrößen

Was misst der WS203?

Belegung (PIR)

Passiv-Infrarot-Bewegung, gemeldet als belegt oder frei.

Temperatur

Integrierter TH-Sensor, Innenraum-Komfortbereich mit hoher Genauigkeit.

Feuchte

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

Batteriestand

Periodisch gemeldet, mit lokalem Verlaufsspeicher und Nachübertragung.

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 === 0x00) {   // occupancy (PIR)
      data.occupancy = bytes[i] === 1 ? "occupied" : "vacant"; i += 1;
    } else if (channel === 0x83 && type === 0x67) {   // temperature + alarm
      data.temperature = readInt16LE(bytes, i) / 10;
      data.temperature_alarm = bytes[i + 2] === 1 ? "threshold alarm" : "release";
      i += 3;
    } else {
      break;
    }
  }
  return { data: data };
}

function readInt16LE(b, i) {
  var v = (b[i + 1] << 8) | b[i];
  return v > 0x7fff ? v - 0x10000 : 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 68 Feuchte (/2), 05 00 Belegung (1 belegt, 0 frei), 83 67 Temperatur mit angehängtem Alarm-Flag. Geräteinfo- und Verlaufskanäle (0xFF, 0x20 0xCE) tragen Firmware-Metadaten und gepufferte Datensätze; ergänze sie, wenn du den gespeicherten Verlauf auswertest. Für ThingsBoard kommt dieselbe Kanallogik in einen Uplink-Converter. Implementiert aus der veröffentlichten Milesight-Byte-Spezifikation.

Uplink (hex)

0175630367E5000468640500

Decoded JSON

{ "battery": 99, "temperature": 22.9, "humidity": 50, "occupancy": "vacant" }
Aus der Praxis

Konfiguration & Stolpersteine

NFC-Einrichtung

Keys, Meldeintervall und PIR-Empfindlichkeit werden vor dem Rollout per NFC mit der Milesight ToolBox gesetzt.

PIR-Abdeckung & Reichweite

Das Erfassungsmuster hängt von der montierten PIR-Abdeckung ab; wähle die Abdeckung passend zur Raumgröße, damit Bewegung weder verpasst noch übermäßig ausgelöst wird.

Belegungs-Entprellung

PIR meldet einen freien Zustand erst nach einer Haltezeit, daher sollten Dashboards kurze Lücken als weiterhin belegt behandeln, um Flattern zu vermeiden.

TH-Nachlauf

Nach einer großen Temperaturänderung braucht der integrierte Sensor Zeit, bis er sich auf den wahren Wert einpegelt; berücksichtige das bei Alarmen auf schnelle Übergänge.

Dein Partner

So unterstützt dich merkaio beim WS203

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

Pre-Staging & Provisioning

Wir konfigurieren den WS203, 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 fügst den Codec im Device-Profile hinzu und provisionierst per OTAA.
Ja, für ChirpStack und ThingsBoard, implementiert aus der veröffentlichten Milesight-Byte-Spezifikation. Dieselbe Kanallogik kommt in einen ThingsBoard-Uplink-Converter.
Ein Passiv-Infrarot-Sensor meldet die Belegung auf Kanal 05 00 als belegt (1) oder frei (0). Bewegungsereignisse und die Temperatur/Feuchte-Werte teilen sich denselben Uplink.
Es ist ein Class-A-Gerät auf LoRaWAN-Port 85. Jeder Uplink kann Belegung, Temperatur und Feuchte tragen; der Batteriestand wird periodisch gemeldet.
Er wird mit einer 4000-mAh-ER18505-Li-SOCl2-Batterie geliefert, ausgelegt für bis zu fünf Jahre, je nach konfiguriertem Meldeintervall und PIR-Aktivität.
Ja. Er speichert Messwerte lokal mit Zeitstempeln und überträgt sie nach, sobald die Verbindung wiederhergestellt ist, sodass kein Verlauf während eines Gateway-Ausfalls verloren geht.
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.