# Chirpstack

### Overview

The Qubitro and Chirpstack integration allows you to sync all devices and their data from Chirpstack directly to Qubitro—without writing any code.

Once your LoRaWAN devices are configured and sending data to Chirpstack, a corresponding device is automatically created in Qubitro, representing each device with its unique DevEUI.

As Chirpstack does not have built-in decoding functionality, Qubitro's Decoder Functions, including Device Templates, must be used to parse and structure incoming data. Additionally, Transformation Functions can be applied if modifications are needed before storing data in Qubitro.

{% hint style="success" %}
This integration **supports** all LoRaWAN devices registered in Chirpstack.
{% endhint %}

{% hint style="info" %}
This integration **does not requir**e additional device-side configuration. Data flows directly between Chirpstack and Qubitro **without** manual HTTP or MQTT forwarding.
{% endhint %}

### Prerequisites

* [x] A Chirpstack account with LoRaWAN devices already sending data.
* [x] A Qubitro account with an existing project.
* [x] Administrative access to both Chirpstack and Qubitro.

### How It Works

Below is the diagram that shows how the integration works.

{% @mermaid/diagram content="graph LR;
A\[Device Publishes Data to Chirpstack] --> B{Device Exists in Qubitro?};

B -- No --> C\[Qubitro Creates Device with DevEUI];
B -- Yes --> D\[Use Existing Device];

C --> E\[Apply Decoder Function in Qubitro];
D --> E;

E --> F\[Store Decoded Data in Qubitro];

%% Style Adjustments
style A fill:#d9d9d9,stroke:#000,color:#000;
style B fill:#f2f2f2,stroke:#000,color:#000;
style E fill:#e0e0e0,stroke:#000,color:#000;" %}

### Configuring the Integration

{% stepper %}
{% step %}
**Create an Integration in Qubitro**

1. Log in to the **Qubitro Portal**.
2. Select a project from the list.
3. Click **New Source**.
4. Select Chirpstack from the available sources.

<figure><img src="https://3109056034-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfQfo4zX1x0hfOimS9E2u%2Fuploads%2FIx002w0uu05sKkqaN1fn%2FCleanShot%202025-04-23%20at%2015.41.20%402x.png?alt=media&#x26;token=8d20cdc0-19af-4cb2-b2cb-1543ab3c2229" alt=""><figcaption></figcaption></figure>

This page will display the **Webhook URL** and required headers for Chirpstack configuration. Keep it open for the next step.
{% endstep %}

{% step %}
**Set Up Webhook Integration on** Chirpstack

1. Log in to the Chirpstack **Console**.
2. Click **Applications** from the left menu.
3. Click on the `Integrations` tab under the project and click on the `ADD` or `EDIT` button on the `HTTP://` option.
4. Enter the following details provided by the Qubitro Portal and click **Submit** to save the Integration configuration.

<figure><img src="https://3109056034-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfQfo4zX1x0hfOimS9E2u%2Fuploads%2FJuvOUvSMfQBhaXz41rFo%2FCleanShot%202025-04-23%20at%2015.42.18%402x.png?alt=media&#x26;token=442ce730-036e-421a-9c7a-2adab841221e" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
**Verify the Integration**

1. Return to the **Qubitro Portal**.
2. Click **Go to Project**.
3. Click **Refresh** and verify that your Chirpstack-connected devices appear.
4. Select a device and navigate to the **Data** tab to confirm incoming data.

<figure><img src="https://3109056034-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfQfo4zX1x0hfOimS9E2u%2Fuploads%2FPKjr7736Dr1Dkef4mhup%2FCleanShot%202025-04-23%20at%2015.47.06%402x.png?alt=media&#x26;token=23f5acbf-f6af-44a3-910d-1f81e38aaace" alt=""><figcaption></figcaption></figure>
{% endstep %}
{% endstepper %}

### Configuring Data Decoding

Because Chirpstack does not have built-in decoding functionality, Qubitro's Decoder Functions must be configured.

#### Using Qubitro's Built-in Decoder Functions

Qubitro provides built-in [Decoder Functions](https://docs.qubitro.com/platform/functions/decoder-function), including [Device Templates](https://docs.qubitro.com/platform/functions/decoder-function/lorawan-device-template-decoder), to automatically parse and structure incoming payloads.

#### Applying Transformation Functions

If additional modifications are required before storing data, enable Transformation Functions in Qubitro to dynamically process and modify payloads.

### FAQs

<details>

<summary>Do I need to send data directly from my device to Qubitro?</summary>

No. Once data is sent to Loriot, it is automatically forwarded to Qubitro via the webhook integration.

</details>

<details>

<summary>How is data decoded since Chirpstack does not have built-in decoders?</summary>

Qubitro provides built-in [Decoder Functions](https://docs.qubitro.com/platform/functions/decoder-function), including [Device Templates](https://docs.qubitro.com/platform/functions/decoder-function/lorawan-device-template-decoder), which parse incoming data before storage. You can also apply [Transformation Functions](https://docs.qubitro.com/platform/functions/transformation-function) for further modifications.

</details>

<details>

<summary>Can I group devices under different Qubitro projects?</summary>

Yes. You can create multiple integrations to separate devices across different projects.

</details>
