Qubitro Documentation
SupportLog inSign Up
  • Documentation
  • Guides
  • Developers
  • Welcome
  • Data Sources
    • No-Code Integrations
      • Onomondo
      • Notehub
      • The Things Stack
      • Soracom
      • Loriot
      • 1NCE
      • Golioth
      • AWS IoT Core LoRaWAN
      • Actility ThingPark
      • Chirpstack
      • Particle
    • MQTT
    • HTTP
  • Platform
    • Project
      • Settings
      • Access Management
      • Roles & Permissions
    • Device
      • Settings
    • Storage
      • Time Series Storage
    • Functions
      • Decoder Function
        • LoRaWAN Device Template Decoder
        • LoRaWAN Custom Decoder
        • Hex Payload Decoder
      • Transformation Function
      • Rule Function
        • Send Email
        • Webhooks
        • Slack
        • Twilio
        • Mailgun
        • SendGrid
      • Storage Function
        • AWS Redshift
        • Google BigQuery
        • MQTT Publish
        • MongoDB Time Series
      • Scheduled Function
        • HTTP
      • Function Settings
      • Function Templates
        • Settings
    • Monitoring
      • Dashboards
        • Setup & Configuration
        • Widgets
          • Chart
          • State Timeline
          • Gauge
          • Stat
          • Headline
          • Aggregated Chart
          • Map
          • Battery
          • Image
          • Image Map
          • Table
          • Storage Table
          • Iframe
          • Blob Storage
        • Settings
        • Access Management
        • Roles & Permission
      • Blueprints
        • Setup & Configuration
        • Settings
    • Credentials
      • API Keys
      • External Credentials
        • Slack
        • Mailgun
        • SendGrid
        • Twilio
        • AWS Redshift
        • MQTT
        • MongoDB
        • The Things Stack
      • Webhook Signing Key
  • Add-Ons
    • Storage Views
    • Aggregated View
    • Archived Views
    • Blob Storage
    • Managed Email
    • Audit Log
    • MCP Server
  • Organizations
    • Overview
    • General
    • Groups
    • Members & Roles
      • Read Only
      • Read/Write
      • Admin
    • Custom Roles
    • Add-Ons
    • Billing
    • Invoices
    • White-Label
  • Account Management
    • Personal Accounts
Powered by GitBook
On this page
  • Overview
  • How It Works
  • Tips
  • Function Schema
  • Creating a Custom Decoder Function
  • FAQs
Export as PDF
  1. Platform
  2. Functions
  3. Decoder Function

LoRaWAN Custom Decoder

The LoRaWAN Custom Device Decoder allows you to write your own decoder function to process incoming LoRaWAN uplink messages.

PreviousLoRaWAN Device Template DecoderNextHex Payload Decoder

Last updated 2 months ago

Overview

The LoRaWAN Custom Device Decoder allows you to write your own decoder function to process incoming LoRaWAN uplink messages.

This provides flexibility to handle custom payload formats that are not available as pre-built templates.

How It Works

If a is enabled, data will be processed before storage. The decoder applies first, and then any defined transformation function modifies the data before it is stored in Qubitro.

Tips

JavaScript payload formatters allow you to write functions to encode or decode messages. These functions are executed using a JavaScript ECMAScript 5.1 runtime.

  • Avoid non-trivial logic or polyfills; they may not be supported.

  • Use arithmetic operations and bit shifts to convert binary data into readable fields.

  • Keep payload formatters simple and lightweight.

Need help reviewing your custom formatter? Our team can assist in checking your code for compatibility. Reach out via the .

Function Schema

A decoder function processes raw uplink messages and returns a JSON object containing the decoded fields.

function decoder(input) {
  // Your decoding logic here
}

The function name and parameter name cannot be modified.

Function Parameters

The decoder function has a single parameter: input. Qubitro automatically provides this parameter, which contains three properties:

  • Metadata: A dynamic object containing metadata from the LNS provider (e.g., RSSI, SNR, timestamp). The structure varies depending on the provider.

  • fPort: The LoRaWAN fPort used for the uplink.

  • Bytes: A byte array representing the raw payload from the uplink message.

Example: Accessing Function Parameters

function decoder(input) {
    var bytes = input.bytes;  // Get the raw payload
    var fPort = input.fPort;  // Get the fPort value
    var metadata = input.metadata; // Get metadata from the LNS provider
    return {};
}

Return Values

To ensure compatibility with Qubitro’s no-code suite, the output should be a key-value JSON object.

For example, if the payload represents temperature, the function can extract and return it as follows:

function decoder(input) {
  const bytes = input.bytes;
  const fPort = input.fPort;
  const metadata = input.metadata;

  // Convert bytes to temperature value
  const temperature = ((bytes[0] << 8) + bytes[1]) / 100;

  return {
    "temperature": temperature,
    "metadata": metadata
  };
}

Creating a Custom Decoder Function

1

Select the Function Type

  1. Open the device details page in the Qubitro Portal.

  2. Click the Functions tab.

  3. Click Create function and select Decoder Function.

  4. Choose LoRaWAN Custom Device as the formatter type.

2

Write the Decoder Code

  1. Enter your custom decoder function in the editor.

  2. Modify the formatter code to match your device’s payload.

3

Save and Apply the Function

  1. Click Save and complete to apply the decoder function.

  2. The function will now process all incoming data for this device automatically.

FAQs

I created the function, but my device data is not decoded correctly. What should I do?

If your function is active but the data is not decoded correctly, check the following:

  • Ensure that the payload format matches your decoder logic.

  • Use the Test feature in the function editor to validate sample data.

  • Check the device logs to see if raw data is being received.

I don’t see my device listed. Can Qubitro help me?
Can I use a custom decoder with any LNS provider?

Yes! Qubitro’s LoRaWAN Custom Device Decoder works with any LNS provider, including Loriot, The Things Stack, and ChirpStack. As long as the device sends data, your decoder function will process it.

Can the Qubitro team help me write a custom decoder?

If you need assistance, our team can review your custom formatter code. Open a from the Support Page.

Absolutely! If your device does not appear after setting up the integration, open a , and our team will assist you in troubleshooting the issue.

While Qubitro provides flexibility for writing custom decoders, our team can review your formatter code to ensure compatibility and suggest improvements. Feel free to reach out via the .

ticket
support ticket
Support Page
Transformation Function
Support Page