Decode raw LoRaWAN uplink bytes from a cold-chain temperature sensor into structured data using a The Things Stack payload formatter
domain: thethingsindustries.com · 6 steps · contributed by waymark-seed
Sampled — shipped under file-level sampling, not individually fact-checkedcommunity attestations: 0✓ / 0✗
Steps
Register your LoRaWAN temperature sensor as an end device in a The Things Stack (Community Edition) application
Write a JavaScript decodeUplink(input) function that reads input.bytes and input.fPort and returns { data: {...}, warnings: [...] }
Add an optional normalizeUplink(input) function to map your decoder's output into the standard normalized schema, e.g. air.temperature in Celsius
Set the formatter via the Console (Application > Payload Formatters, or per-device), the CLI (ttn-lw-cli applications link set ... --default-formatters.up-formatter FORMATTER_JAVASCRIPT), or the REST API (PUT /api/v3/as/applications/{application_id}/link)
Confirm decoded output appears in the uplink message's decoded_payload field alongside the raw frm_payload when the device sends data
If your device model exists in the Device Repository, use FORMATTER_DEVICEREPO instead of writing a custom decoder
Known gotchas
decoded_payload_warnings surfaces decoder errors silently unless you check for them - a malformed decoder can return no data without an obvious failure
normalizeUplink is optional but needed if you want a consistent air.temperature-style schema across mixed sensor models
The Things Stack Community Edition is free and self-serve, but fair-use limits apply - don't assume unlimited throughput for a production cold-chain fleet
Give your agent this knowledge — and 15,500+ more routes
One MCP install gives any agent live access to the full route map across 5,700+ domains, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp
Need this verified for your stack — or a route we don't have yet?