Milesight GS101: LoRaWAN-Gasmelder für Wohnräume

Milesight GS101 LoRaWAN-Gasmelder: eigener ChirpStack/ThingsBoard-Decoder, dekodiertes Beispiel, Methan-Alarm, Ventil- und Relaissteuerung.

Milesight GS101
GS101Sensor
LoRaWAN
Class C, OTAA
Band / Port
EU868 / Port 85
Zielgas
Methan (CH4)
Alarmschwelle
8 % UEG
Lokaler Alarm
85 dB Summer + LED
Ausgänge
Relaisausgang + Magnetventilausgang
Stromversorgung
Netzbetrieb (Class C)
Messgrößen

Was misst der GS101?

Gasstatus

Methan-Zustand (CH4): normal oder Alarm, ausgelöst an der konfigurierten UEG-Schwelle.

Ventilstatus

Zustand des Magnetventilausgangs (an/aus) zum Absperren der Gaszufuhr.

Relaisausgang

Relaiszustand (an/aus) zum Ansteuern von Lüftern oder externen Geräten.

Restlebensdauer

Zählerstand der Sensor-Lebensdauer, damit der Austausch vor Ablauf geplant werden kann.

Geräteereignisse

Alarm- und Reset-Ereignisse wie Ein/Aus, Gerätefehler und Lebensende.

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++];

    // Gas status: 0 = normal, 1 = alarm
    if (channel === 0x05 && type === 0x8e) {
      data.gas_status = bytes[i] === 1 ? "alarm" : "normal"; i += 1;
    // Solenoid valve output state
    } else if (channel === 0x06 && type === 0x01) {
      data.valve_status = bytes[i] === 1 ? "on" : "off"; i += 1;
    // Relay output state
    } else if (channel === 0x07 && type === 0x01) {
      data.relay_output_status = bytes[i] === 1 ? "on" : "off"; i += 1;
    // Remaining sensor life (UINT32 little-endian)
    } else if (channel === 0x08 && type === 0x90) {
      data.life_remain = readUInt32LE(bytes, i); i += 4;
    // Device alarm/lifecycle event
    } else if (channel === 0xff && type === 0x3f) {
      data.alarm = readAlarm(bytes[i]); i += 1;
    // Device info on join/power-on: skip protocol/hw/fw/SN/class fields
    } else if (channel === 0xff) {
      i += deviceInfoLen(type);
    } else {
      break;
    }
  }
  return { data: data };
}

function readUInt32LE(b, i) {
  return ((b[i+3]<<24)|(b[i+2]<<16)|(b[i+1]<<8)|b[i]) >>> 0;
}
function readAlarm(v) {
  var map = { 0: "power off", 1: "power on", 2: "device fault",
              3: "fault recovered", 4: "device invalid soon", 5: "device invalid" };
  return map[v] !== undefined ? map[v] : v;
}
function deviceInfoLen(type) {
  // 0xFF info fields: 0x01 version, 0x0f class, 0x0b status, 0xfe reset = 1 byte;
  // 0x09 hw, 0x0a fw, 0xff tsl = 2 bytes; 0x16 serial number = 8 bytes
  if (type === 0x09 || type === 0x0a || type === 0xff) return 2;
  if (type === 0x16) return 8;
  return 1;
}

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

Kanalformat: 05 8E Gasstatus (0 normal / 1 Alarm), 06 01 Ventilausgang (an/aus), 07 01 Relaisausgang (an/aus), 08 90 Restlebensdauer (UINT32 little-endian), FF 3F Geräte-Alarmereignis. FF-Kanäle beim Join/Einschalten enthalten Versions-, Klassen- und Seriennummern-Infos und werden über die Länge übersprungen. Implementiert nach der veröffentlichten Milesight-Byte-Spezifikation. Für ThingsBoard wandert dieselbe Kanal-Logik in einen Uplink-Converter.

Uplink (hex)

058E0006010107010108908A510100

Decoded JSON

{ "gas_status": "normal", "valve_status": "on", "relay_output_status": "on", "life_remain": 86410 }
Aus der Praxis

Konfiguration & Stolpersteine

Class-C-Stromversorgung

Der GS101 hält sein Empfangsfenster für die Downlink-Steuerung von Ventil und Relais offen und wird daher per Netz versorgt. Eine dauerhafte Versorgung einplanen, keinen Batteriebetrieb.

Alarm-Uplinks haben Vorrang

Gasalarme werden sofort gesendet, außerhalb des Meldeintervalls. Dashboard-Regeln sollten gas_status-Alarm-Uplinks als priorisierte Ereignisse behandeln.

Sichere Zustände für Ventil und Relais

Vor dem Rollout festlegen, ob das Magnetventil bei Alarm schließt und welche Relaislogik gilt, damit die lokale Fail-safe-Funktion zum Sicherheitskonzept des Gebäudes passt.

Sensor-Lebensende

Der katalytische Sensor hat eine begrenzte Lebensdauer. Auf den life_remain-Zähler und die Lebensende-Ereignisse alarmieren, damit eine Einheit ersetzt wird, bevor sie nicht mehr schützt.

Dein Partner

So unterstützt dich merkaio beim GS101

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

Pre-Staging & Provisioning

Wir konfigurieren den GS101, 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. Der Codec wird im Device-Profil hinterlegt und das Gerät per OTAA provisioniert.
Ja, für ChirpStack und ThingsBoard, implementiert nach der veröffentlichten Milesight-Byte-Spezifikation. Dieselbe Kanal-Logik wandert in einen ThingsBoard-Uplink-Converter.
Er erkennt Methan (CH4) und löst einen Alarm an einer Schwelle ab 8 % der unteren Explosionsgrenze (UEG) aus, mit einem 85-dB-Summer vor Ort und einem Remote-LoRaWAN-Alarm-Uplink.
Ja. Er hat einen Magnetventilausgang und einen Relaisausgang, kann bei Alarm also das Gasventil schließen und externe Geräte wie einen Lüfter lokal schalten. Der Decoder meldet beide Zustände.
Es ist ein Class-C-Gerät auf LoRaWAN-Port 85. Class C hält das Empfangsfenster offen, sodass das Gerät Downlinks für die Ventil- und Relaissteuerung nahezu in Echtzeit annehmen kann.
Nein. Als Class-C-Gasmelder ist er netzbetrieben, um dauerhaft zu lauschen und Ventil sowie Relais anzusteuern. Daher eine dauerhafte Stromversorgung statt Batteriebetrieb einplanen.
Der GS101 meldet einen Restlebensdauer-Wert und Lebenszyklus-Ereignisse wie Fehler und Lebensende. Auf den life_remain-Zähler alarmieren, damit eine Einheit ersetzt wird, bevor sie nicht mehr schützt.
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.