---
title: "LoRaWAN Payload Decoder Tester für TTN und ChirpStack"
canonical: https://wavect.io/de/tools/lorawan-payload-codec-tester/
language: de
description: "Teste LoRaWAN JavaScript-Decoder und Encoder für The Things Stack und ChirpStack lokal mit Hex-, Base64- und Byte-Fixtures."
image: "https://wavect.io/img/general/bak/open_graph_preview.jpg"
---

BROWSER-LOKALE LORAWAN-WERKBANK

# Teste den Codec, bevor das nächste Sensorpaket zum Produktionsrätsel wird.

Füge den tatsächlich eingesetzten JavaScript-Codec ein, ergänze reale Payloads und erwartetes JSON und führe alle Fixtures in einer isolierten lokalen Sandbox aus. Moderne TTN- und ChirpStack-Funktionen sowie alte Decoder- und Encoder-Formate werden unterstützt.

[Werkbank öffnen](#tool-app) [Quellcode ansehen](https://github.com/wavect/lorawan-payload-codec-tester)

- Profile TTN v3 · ChirpStack v4 · Legacy
- Preis Kostenlos · Open Source
- Ausführung Isoliert im Browser
- Export Fixtures · Tests · Bericht

**PAYLOAD-LABOR**

FPORT 4 · UPLINK **temperature: -21.3°C**

Fixture entspricht dem erwarteten Ergebnis

DER NÜTZLICHE TEIL

Das ist ein Test-Harness, kein Decoder-Katalog. Es führt deinen Codec mit deinen Payloads aus, zeigt das genaue fehlerhafte Fixture und erzeugt Tests, die bei der Geräteintegration bleiben können.

DEN ECHTEN CODE AUSFÜHREN

## Payload-Codec-Werkbank

Beginne mit einem Beispiel oder füge einen Hersteller-Codec ein. Jeder Vektor kann eine andere Operation, einen anderen fPort, eine Kodierung, Variablen, Downlink-Daten und ein erwartetes Ergebnis prüfen.

Code und Payloads bleiben lokal

**LoRaWAN-Codec-Labor** Einweg-Sandbox · deterministische Fixtures

Moderner UplinkNormalisierte PayloadDownlink-RoundtripLegacy DecoderUngültiger RückgabewertHängender Codec Beispiel laden Alle ausführen

01

### Codec-Quelltext

KompatibilitätsprofilThe Things Stack v3ChirpStack v4Legacy Decoder / Encoder

Die Sandbox stellt nur den Formatter-Input bereit. Netzwerk, Speicher, Imports und Seitenzugriff sind gesperrt.

02

### Testvektoren

03

### Ergebnisse und Exporte

Führe einen Vektor oder den ganzen Satz aus, um Ausgabe, Vertragsfehler, Byte-Zugriffe und Unterschiede zu sehen.

Worker-Sandbox mit opaker Origin 1 Sekunde Ausführungslimit Kein Upload oder Speichern

VOM HERSTELLER-PDF ZUM REGRESSIONSTEST

## Ein Codec-Ablauf, der den Pilotbetrieb überlebt

Dieselben Fixtures helfen beim Übersetzen einer Herstellerspezifikation, beim Wechsel des Network Servers und bei späteren Firmware-Änderungen.

1. 01 - **Eingesetzten Formatter einfügen** - Nutze exakt das JavaScript aus dem Geräteprofil, einschließlich Hilfsfunktionen und Tabellen.
2. 02 - **Reale Pakete und Erwartungen ergänzen** - Erfasse repräsentative Up- und Downlinks und lege das vollständige erwartete JSON fest.
3. 03 - **Dauerhaften Test exportieren** - Lege Fixtures und Vitest-Datei zur Integration, damit Änderungen Feldwerte nicht unbemerkt neu interpretieren.

AUS FELDARBEIT ENTSTANDEN

## Nützlich, wenn die Flotte mehr als ein Happy-Path-Gerät enthält

Wavect entwickelte Uplink-Decoder und Downlink-Encoder für Hardware mehrerer Hersteller in einer stadtweiten LoRaWAN-Plattform. Die teuren Fehler waren leise Unterschiede bei Bytes, Ports, Firmware und Rückgabeverträgen.

### Beide Network-Server-Konventionen

Teste moderne The-Things-Stack- und ChirpStack-Signaturen sowie ältere Decoder- und Encoder-Funktionen ohne vorher eine Anwendung anzulegen.

### Erwartete Ausgabe statt hübscher Vorschau

Fixtures schlagen fehl, wenn die vollständige Ausgabe vom deklarierten Wert abweicht.

### Artefakte zum Mitnehmen

Exportiere portable Vektoren, eine ausführbare Testdatei oder einen Markdown-Bericht für Pull Request und Übergabe.

EHRLICHE GRENZEN

## Was die Werkbank nicht beweisen kann

- Sie nutzt Browser-JavaScript. Laufzeitgrenzen des Zielservers brauchen weiterhin einen Abschlusstest im Network Server.
- Endianness oder Vorzeichen werden nur gemeldet, wenn ein erwartetes Ergebnis die Abweichung sichtbar macht.
- Getestet werden Payload-Formatter, nicht Verschlüsselung, Funkabdeckung, Join, Duty Cycle oder Gateway-Planung.
- Bestandene Fixtures prüfen die gelieferten Fälle, nicht jede mögliche Firmware-Variante.

## Fragen zum Codec-Tester

### Lädt das Tool meinen Codec oder Sensor-Payloads hoch?

Nein. Code und Fixtures laufen in einem Wegwerf-Worker innerhalb einer Sandbox mit opaker Origin und werden weder gesendet noch gespeichert.

### Kann ich The Things Stack und ChirpStack testen?

Ja. Aktuelle decodeUplink- und encodeDownlink-Verträge sowie ältere Decoder- und Encoder-Signaturen werden unterstützt.

### Kann ich mehrere Firmware-Versionen testen?

Ja. Lege benannte Vektoren je Firmware und Paketform an oder exportiere getrennte Fixture-Dateien, wenn sich der Codec selbst unterscheidet.

### Erkennt das Tool Little-Endian-Temperaturen?

Nur mit einem erwarteten Ergebnis. Mehrere Byte-Interpretationen können syntaktisch gültig sein, daher erfindet das Tool keine Gerätesemantik.

KOSTENLOS · OPEN SOURCE · KEIN UPLOAD

## Mach aus dem heutigen Fehlerpaket den Test für morgen.

Führe den Codec lokal aus, exportiere die Fixtures und behalte den Nachweis bei der Integration.

[Zurück zur Werkbank](#tool-app) [Quellcode ansehen](https://github.com/wavect/lorawan-payload-codec-tester)

## Structured Data

```json
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@id": "https://wavect.io/#organization",
      "@type": [
        "Organization",
        "ProfessionalService",
        "LocalBusiness"
      ],
      "employee": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "founder": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "legalRepresentative": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "name": "Wavect GmbH",
      "subjectOf": {
        "@id": "https://wavect.io/verified-claims.json#dataset",
        "@type": "Dataset",
        "creator": {
          "@id": "https://wavect.io/#organization",
          "@type": [
            "Organization",
            "ProfessionalService",
            "LocalBusiness"
          ]
        },
        "description": "A machine-readable registry of quantitative and qualitative claims published by Wavect, with review dates, localized page appearances and public third-party citations where available.",
        "inLanguage": "en",
        "isAccessibleForFree": true,
        "license": "https://creativecommons.org/licenses/by/4.0/",
        "name": "Wavect verified publication claims",
        "url": "https://wavect.io/verified-claims.json"
      },
      "url": "https://wavect.io/"
    },
    {
      "@id": "https://wavect.io/team/kevin-riedl/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Kevin Riedl",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796365",
        "https://www.linkedin.com/in/wsdt",
        "https://github.com/wsdt"
      ],
      "url": "https://wavect.io/team/kevin-riedl/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/team/christof-jori/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Christof Jori",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796367",
        "https://www.linkedin.com/in/jocr77/",
        "https://github.com/jo-chris"
      ],
      "url": "https://wavect.io/team/christof-jori/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/#website",
      "@type": "WebSite",
      "inLanguage": [
        "en",
        "de",
        "es",
        "zh"
      ],
      "name": "Wavect",
      "potentialAction": {
        "@type": "SearchAction",
        "query-input": "required name=search_term_string",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": "https://wavect.io/search/?q={search_term_string}"
        }
      },
      "publisher": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "url": "https://wavect.io/"
    },
    {
      "@id": "https://wavect.io/de/tools/lorawan-payload-codec-tester/#webpage",
      "@type": "WebPage",
      "dateModified": "2026-08-05",
      "inLanguage": "de",
      "isPartOf": {
        "@id": "https://wavect.io/#website",
        "@type": "WebSite"
      },
      "lastReviewed": "2026-08-05",
      "url": "https://wavect.io/de/tools/lorawan-payload-codec-tester/"
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "SoftwareApplication",
  "applicationCategory": "DeveloperApplication",
  "browserRequirements": "JavaScript, Web Worker und Sandbox-iFrames",
  "codeRepository": "https://github.com/wavect/lorawan-payload-codec-tester",
  "description": "Teste LoRaWAN JavaScript-Decoder und Encoder für The Things Stack und ChirpStack lokal mit Hex-, Base64- und Byte-Fixtures.",
  "isAccessibleForFree": true,
  "name": "LoRaWAN Payload Codec Tester",
  "offers": {
    "@type": "Offer",
    "price": "0",
    "priceCurrency": "EUR"
  },
  "operatingSystem": "Jeder moderne Browser",
  "url": "https://wavect.io/de/tools/lorawan-payload-codec-tester/"
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "item": "https://wavect.io/de/",
      "name": "Startseite",
      "position": 1
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/de/tools/",
      "name": "Kleine Tools für Aufgaben, die nicht mühsam bleiben sollten.",
      "position": 2
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/de/tools/lorawan-payload-codec-tester/",
      "name": "LoRaWAN Payload Codec Tester",
      "position": 3
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Nein. Code und Fixtures laufen in einem Wegwerf-Worker innerhalb einer Sandbox mit opaker Origin und werden weder gesendet noch gespeichert."
      },
      "name": "Lädt das Tool meinen Codec oder Sensor-Payloads hoch?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Ja. Aktuelle decodeUplink- und encodeDownlink-Verträge sowie ältere Decoder- und Encoder-Signaturen werden unterstützt."
      },
      "name": "Kann ich The Things Stack und ChirpStack testen?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Ja. Lege benannte Vektoren je Firmware und Paketform an oder exportiere getrennte Fixture-Dateien, wenn sich der Codec selbst unterscheidet."
      },
      "name": "Kann ich mehrere Firmware-Versionen testen?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Nur mit einem erwarteten Ergebnis. Mehrere Byte-Interpretationen können syntaktisch gültig sein, daher erfindet das Tool keine Gerätesemantik."
      },
      "name": "Erkennt das Tool Little-Endian-Temperaturen?"
    }
  ],
  "speakable": {
    "@type": "SpeakableSpecification",
    "cssSelector": [
      ".faq-question",
      ".faq-answer"
    ]
  }
}
```
