Skip to content

Cookie preferences

We use cookies for our own analytics, to see how our campaigns perform and, if you allow it, to load content from other services such as the Google site search. We never sell your data. Necessary cookies keep the site working and cannot be switched off. See our Cookie Policy for details and our Privacy Policy for how we handle personal data.

Security, load balancing and remembering your cookie choice.

Show us which pages people read, how they find the site and where they get stuck, so we can improve it (Google Analytics, Microsoft Clarity).

Show us which of our ad campaigns bring visitors to the site and remember the campaign or partner link you arrived from (Google Ads, LinkedIn, Meta, partner program). We do not use these cookies to build advertising profiles.

Load the site search from Google when you use it. Google sets its own cookies and shows ads in the search results.

© 2026 The ThingsBoard Authors
180 Try for free

ThingsBoard Cloud

Choose your data region

Your data stays in the region you choose, for residency and compliance. No credit card required.

Rather run it yourself? Install on your own servers

ChirpStack Integration

ChirpStack is an open-source LoRaWAN network server. ChirpStack Integration receives the uplink messages ChirpStack forwards over HTTP, decodes them on the Edge, and lets you process and visualize LoRaWAN device data locally, with low latency and without a permanent connection to the server.

  • A ThingsBoard server with tenant administrator access. The templates are created there.
  • A ThingsBoard Edge instance connected to the server.
  • A ChirpStack network server, installed with Docker Compose or on Debian/Ubuntu, that can reach the Edge over HTTP.
  • A LoRaWAN device connected to ChirpStack. See Connect a device in the ChirpStack docs.

The uplink converter decodes the ChirpStack payload into ThingsBoard telemetry and attributes. It is created on the server.

  1. On the server, go to Edge management > Templates and open the Converter tab. Click Add data converter and select Create new converter.

  2. Set Converter type to Uplink, select ChirpStack as the Integration type, and enter the name ChirpStack uplink converter.

  3. Decide how to get the decoder:

    • Create new: write or paste your own decoder (next steps).
    • Library: select a Vendor and a device Model. ThingsBoard fills in a ready-made decoder for that device.
  4. In Main decoding configuration, keep Entity type at Device and set Device name, for example Chirp Device $eui. The $eui placeholder is replaced by the device EUI from the ChirpStack payload, so the test device in this guide becomes Chirp Device 24e124538b223213.

  5. Select TBEL or JS and paste the decoder script into the function payloadDecoder(payload, metadata) editor. payload is the raw LoRaWAN payload (the base64-decoded data field) as a byte array. metadata holds the other ChirpStack fields, such as eui, deviceName, rssi, snr, and ts (the message time in milliseconds). The example decodes a payload with battery, PIR, and daylight channels.

    // payload - raw LoRaWAN payload as bytes (the base64-decoded "data" field)
    // metadata - the other ChirpStack fields, for example eui, deviceName, rssi, snr, ts
    function decodePayload(input) {
    var result = { attributes: {}, telemetry: {} };
    var values = { HEX_bytes: bytesToHex(input) };
    var i = 0;
    while (i + 1 < input.length) {
    var channelId = input[i++];
  6. Optionally expand Advanced decoding parameters. Device profile name, Device label, Customer name, and Device group name accept the same $-placeholders as the device name. The Telemetry and Attributes lists choose which keys of the ChirpStack payload are saved. Update only keys list saves a key only when its value changed.

  7. Click Add.

  1. On the server, go to Edge management > Templates, open the Integration tab, and click Add integration.

  2. On the Basic settings step, select ChirpStack as the Integration type. Keep the name ChirpStack integration or enter your own. Click Next.

  3. On the Uplink data converter step, select Select existing, choose ChirpStack uplink converter, and click Next.

  4. On the Downlink data converter step, keep Skip selected and click Skip. This guide does not send downlinks.

  5. On the Connection step, fill in the fields:

    Field Value
    Base URL The URL of the Edge, for example http://10.7.3.0:8080. The default is the server URL, so replace it.
    HTTP endpoint URL Built from the Base URL. Copy it; ChirpStack posts the uplinks to this URL.
    Use API for ChirpStack 4+ Keep enabled for ChirpStack v4.
    Allow downlink Keep disabled. Enable it only if you want to send downlinks; it unlocks Application server URL (the ChirpStack REST API, for example http://chirpstack-server-ip:8090) and Application server API Token (an API key from Tenant > API Keys in the ChirpStack UI).
  6. Click Add.

  1. On the server, go to Edge management > Edges and click the Edge. On the Details tab, click Manage integrations.

  2. Click Assign to edge (+), select ChirpStack integration, and click Assign.

  3. Log in to the Edge and go to Integrations > Integrations. The ChirpStack integration is listed there. Open it to copy the HTTP endpoint URL if you have not done so yet.

Log in to the ChirpStack UI at http://chirpstack-server-ip:8080. The default user name and password are admin / admin.

  1. Go to Tenant > Device Profiles and click Add device profile.

  2. On the General tab, fill in the required fields:

    Field Description
    Name Device profile name
    Region LoRaWAN regional parameters
    MAC Version LoRaWAN MAC version the device uses
    Regional parameters revision Parameter set version for your region
    ADR Algorithm Adaptive data rate logic
    Expect uplink interval (secs) Expected interval between uplink messages
  3. Click Submit.

  1. Go to Tenant > Applications, click Add application, enter a name, and click Submit.

  2. Open the Integrations tab of the application. Find HTTP in the list and click +.

  3. Keep Payload encoding at JSON. Paste the HTTP endpoint URL of the ThingsBoard integration into Event endpoint URL(s) and click Submit.

  1. Open the Devices tab of the application and click Add device.

  2. On the Device tab, fill in the required fields:

    Field Description
    Name Device name
    Device EUI (EUI64) Unique 64-bit identifier of the LoRaWAN device
    Byte order Byte order of the DevEUI (MSB or LSB)
    Device profile The device profile created above
  3. Click Submit.

For a test setup you can skip this. To add a gateway, go to Tenant > Gateways, click Add gateway, fill in Name, Gateway ID (EUI64), and Stats interval (secs), and click Submit.

In production, ChirpStack forwards every uplink of the device to the integration. For a test, use the ChirpStack device simulator, or post a message in the ChirpStack format to the integration endpoint yourself:

Terminal window
curl -v -X POST -d '{
"deduplicationId": "7658d04d-7f1c-4eb6-900b-d948f3061a9d",
"time": "2025-06-13T12:44:52.653+00:00",
"deviceInfo": {
"tenantId": "6e073e9a-6b4f-4747-b22c-7507568debfb",
"tenantName": "ChirpStack",
"applicationId": "c3f2c4aa-07c8-4d6c-8a86-7ea2d4a31dca",
"applicationName": "Sample Application",
"deviceProfileId": "d8ee6c09-414c-4b2e-888a-8e8f86e3187a",
"deviceProfileName": "Default device profile",

Replace these values with your own:

Value Description
deduplicationId Any UUID v4
tenantId Your ChirpStack tenant ID
applicationId, applicationName ChirpStack application ID and name
deviceProfileId, deviceProfileName ChirpStack device profile ID and name
devEui Device EUI of the ChirpStack device
gatewayId ChirpStack gateway ID
$YOUR_HTTP_ENDPOINT_URL HTTP endpoint URL of the ThingsBoard integration

Then check the result on the Edge:

  1. Go to Integrations > Integrations, open the ChirpStack integration, and select the Events tab. An Uplink event with status OK appears. Click the three dots in the Message column to see the raw payload.

  2. The device Chirp Device 24e124538b223213 is created automatically ($eui is replaced by the devEui of the payload). Go to Devices & assets > Devices, open it, and select the Latest telemetry tab. The test payload decodes to battery 61, pir trigger, and daylight light. The keys from the Telemetry list, such as rssi and snr, are saved as well.

  3. To see how the converter processed the message, go to Integrations > Data converters, open ChirpStack uplink converter, and select the Events tab. The In column shows the raw payload, the Out column the decoded telemetry and attributes.