Things Stack Javascript Parser


Häufig stellen Hardwareanbieter Parser für ihre LoRaWAN-Geräte für den LoRaWAN Netzwerkserver “Things Stack” bereit, beispielsweise über das Things Stack Device Repository oder über eigene Repositories des Anbieters.

Diese Parser können in niotix als Javascript Funktions-Parser verwendet werden, indem je nach Format ein Wrapper hinzugefügt wird, der den Parser an das niotix-Format anpasst.

Im Things Stack V3-Format wird die LoRaWAN-Payload als Hex-Bytes-Array (bytes) übergeben, zusammen mit dem Frame-Port (fport) in einem Objekt. Der Name der Decoder-Funktion ist decodeUplink. Das genaue Format ist beschrieben in der Things Stack-Dokumentation des Anbieters.

Beispiel-Wrapper zur Verwendung eines Things Stack V3-Decoders als Javascript Funktions-Parser:

module.exports = (payload, meta) => {
  const fPort = meta.lora.fport;
  const bytes = hexToBytes(payload);

  return decodeUplink({
    fPort,
    bytes,
  });
};

function hexToBytes(hex) {
  const hexBuffer = Buffer.from(hex, "hex");
  return Array.from(hexBuffer);
}

Im Things Stack V2-Format wird die LoRaWAN Payload als Hex-Buffer übergeben und der Frame-Port als separater Parameter. Der Name der Decoder-Funktion ist Decoder. Dieses Format ist in der Regel nur noch bei älteren Decodern zu finden.

Beispiel-Wrapper zur Verwendung eines Things Stack V2-Decoders als Javascript Funktions-Parser:

module.exports = function (payload, meta) {
  const port = meta.lora.fport;
  const buf = Buffer.from(payload, 'hex');
  return Decoder(buf, port); 
}