How to integrate TagoIO with Chirpstack LoRaWAN

This tutorial provides a step-by-step guide to integrate Chirpstack v3/v4 with the TagoIO Platform. By following these instructions, you will enable uplink and downlink operations, allowing data exchange between your LoRaWAN devices and the TagoIO application.

Prerequisites

Before you begin, ensure you have the following:

  • Chirpstack server: A deployed Chirpstack instance locally or in the cloud
  • LoRaWAN Device: Ensure your device is connect to Chirpstack and transmitting data.


Step 1: Create Authorization in TagoIO

  1. Access Authorizations
  2. Create a New Authorization:
    • Click the Create Authorization button.

    • Provide a meaningful name for the authorization (e.g., Chirpstack-Integration).

    • (Optional) Enter your Downlink URL and Bearer Token from Chirpstack into the Additional Parameters section.

        -  Format: Downlink URL;Bearer Token  
      
    Example: https://mychirpstack.io;eyJhbGciOiJIUzI1NiIsInR…
    • Click Save.
  3. Copy the Authorization Token:
    • After creation, copy the authorization token. You will need this in later steps.

Note: You only need to create one Authorization for all your Chirpstack devices.


Step 2: Setup Integration in Chirpstack

Go to the Chirpstack website and create a new HTTP integration. You can create the integration by going to Application > Choose your Application > Integration, click on create, and select HTTP as an option.

Configure the Integration:

Field
Description
Integration Kind
Select HTTP Integration
Headers
You will need to setup two headers for this integration:

Header Key
Header Value
Authorization
Set its value to the authorization token you copied in Step 1.
Content-Type
application-json

Uplink data URL
Use the endpoint format https://chirpstack.middleware.REGION.tago.io/uplink. Replace REGION with your deployment region (e.g., us-e1, eu-w1).
For a list of available regions, visit TagoIO Network Integration.

:information_source: The endpoint https://chirpstack.middleware.tago.io/uplink points to the USA region. As we are committed to continuing support for this endpoint, we recommend that users in the USA region update their webhooks to https://chirpstack.middleware.us-e1.tago.io/uplink


Step 3: Add Device in TagoIO

To integrate your device with the TagoIO Platform, follow these guidelines:

  1. Ensure Device EUI Consistency:

    • When creating the device in TagoIO, use the exact same Device EUI that is configured in Chirpstack.
    • The Device EUI must match exactly to establish a successful connection between Chirpstack and TagoIO.
  2. Select the Appropriate Network and Device Type:

    • Choose the LoRaWAN Chirpstack Network during the device setup process.
    • Select the correct device type from the available options. If your device is not listed, you can add support through connectors.
  3. Add Device Support via Connectors (If Necessary):

    • If your device type is not available in the default list, enhance its compatibility by utilizing connectors.
    • For more information on available connectors and how to use them, refer to the Connector Overview.

For detailed instructions on adding devices, visit the Adding Devices page.


Finalizing Setup

  1. Power On Your Devices:

    • Turn on your LoRaWAN device and gateway to initiate data transmission.
  2. Verify Data Reception:

    • In TagoIO, navigate to the Device and into the Data tab to confirm that data is being received.
    • Alternatively, use the Live Inspector within your device settings to monitor incoming data in real-time.

With data successfully flowing into TagoIO, you can start creating Dashboards, Analyses, and Actions to visualize and manage your device data effectively.

@jura maksimov

Downlink support not appearing?

Hi, is this guide updated to ChirpStack v4?

I don’t see any breaking changes on v4 that would change this documentation. So it’s supposed to work.

Let us know if you find any difficulty.

The documentation had been updated to include the Downlink settings needed in order to use TagoIO downlink features.

I can not get the information to pass using Chirpstackv4.

Chirpstack-v4 JSON data object field cannot be parsed correctly.

Hi Justin and Zhangequin,

Are you attempting to send already decoded data over to TagoIO?
Our Middleware currently does not support the jsonObject key within the uplink ChirpStack v4 sends.

I’d suggest you send the decoded data over through the device payload and add the code you used to decoded the data on to a connector.

Can you clarify this? Are you saying that currently your Chirpstack integration is currently broken?

Hi,

I am on https://console.helium-iot.xyz/ (ChripStack) and have Dragino LSN50v2 end device.

No payload Codec on console (None).

On TagoIO, I created Connector (LoRaWAN ChirpStack), data is updated in Live inspector but Payload parser doesn’t work.

For a test, I tried LSN50V2_v1.8.0_Decoder_ChirpstackV4.txt on LNS and data was decoded correctly, also I tried

LSN50V2_v1.8.0_Decoder_TTN.txt on Legacy Helium console, also decoded correctly (both from official Dragino).

What is right way to implement Payload parser to decode correctly RAW payload on TagoIO?

I am experiencing this exact same problem. I am also testing the LSN50 V2 with the Chirpstack v4 decoder from Dragino. The raw payload coming from Chirpstack has all of the information needed but only a portion of that information is parsed correctly. The remainder is omitted in Tago. Please provide a solution to properly parse the payload coming from Chirpstack

Hi

Same for me

tago receive already decoded data from Chirpstak v4 in raw_payload i can see those data but pasrer dos not parcse any of fields

Hi markosplit, Bill Selbig, and a.kasyanenko,

I apologize for the delayed response to your inquiries about Chirpstack V4 compatibility with TagoIO.

We’ve recently completed an update to ensure full compatibility with Chirpstack V4. Here are the key points:

  1. Both Uplink and Downlink should now be fully functional with Chirpstack V4.
  2. Our update is backwards compatible with Chirpstack V3.
  3. The TagoIO documentation has been updated to reflect these changes.
  4. Downlink support for Chirpstack V4 from TagoIO is now available.
  5. Our Network Payload Parser has been updated to support parsed data from Chirpstack V4.

For situations where our default support doesn’t recognize new parameters from newer versions, you can always access the original parameters through the raw_payload in the Payload Parser. This ensures you have full access to all data, even as protocols evolve.

If you’re still experiencing any issues with payload parsing or data decoding, please don’t hesitate to reach out to our support team. We’re here to help ensure your devices are working smoothly with TagoIO.

Thank you for your patience and for bringing this to our attention. Your feedback helps us improve our service.

Just in time, I will start use chirpstack in my company!

Thanks for the update!

Looks like the Utils.sendDownlink() function not work with Chirpstack.

Can you guys look this?

Hi zsu[@user:10037272163]zsu can you send us what your console is returning?

I get this return:

Downlinkfailed with status 400:{"message":"{\"code\":3,\"message\":\"Validation error: FPort must bebetween 1 -255\",\"details\":[]}","url":"https://chirpstack-api.voltsolution.com.br","status":400}

I have tried with “port”, “fPort” and “FPort”, but not works.

I put this in additional parameter of the token “https://chirpstack-api.voltsolution.com.br;[TOKEN]”.

Hi Julhiermes,

Thank you for providing the detailed report. I’ve implemented a fix for the FPort parameter issue. Previously, we were forwarding it to ChirpStack as “fPort,” which appears to be incompatible with ChirpStack v4.

Please note that the Utils.sendDownlink expects only port, we do all the job to send in the correct schema for Chirpstack.

Could you please verify if the integration is now functioning as expected with this change?

Hi, Vitor.

The return is the same error.

I will wait some time to test again.

[UPDATE]

The error persists.

some details of my code:

const resources = new Resources(context.token);

await Utils.sendDownlink(resources, data.device, {

payload: command,

port: 16,

confirmed: true,

})

.then((r) => console.log(r))

.catch((err) => console.log(err));

Another thing, this code is updated? https://github.com/tago-io/sdk-js/blob/bbde8464e773ca2ca5e4dca8481942bcf228c612/src/modules/Utils/sendDownlink.ts