LogoLogo
Website
  • Overview
  • Getting started
  • Integrations
    • MQTT Integration
    • HTTPS Integration
    • LORIOT Integration
    • Swisscom LPN Integration
    • TheThingsNetwork Integration
    • TheThingsIndustries Integration
    • Sigfox Integration
    • AWS IoT Integration
    • AWS Kinesis Integration
    • Azure Event Hub Integration
    • Azure IoT Hub Integration
    • Helium Network Integration
  • Key concept
    • Entities and relations
    • Entity Groups
    • Attributes
    • Device Profiles
    • Telemetry data
    • Device alarms
    • Version control
  • Dashboards
    • Dashboards
      • Dashboard Templates
      • IAQ Template
      • Aliases
    • Widget library
      • Energy management widgets
        • Summarized annual consumption
        • Daily profile
        • XY chart
  • Rule Engine
    • Rule Engine
      • Rule Engine Templates
        • General data proccessing concept
        • Weather data feed
      • Test Javascript function
      • Predefined Message Types
      • Filter rule nodes
        • check alarm status
        • check existence fields
        • check relation
        • gps geofencing filter
        • message type filter
        • message type switch
        • originator type filter
        • originator type switch
        • script filter
        • switch script node
      • Enrichment rule nodes
        • calculate delta
        • customer attributes
        • customer details
        • originator attributes
        • originator fields
        • originator telemetry
        • related attributes
        • related Device attributes
        • tenant attributes
        • tenant details
      • Transformation rule nodes
        • change originator
        • duplicate to group
        • duplicate to related
        • script transformation
        • to email transformation
        • M-Bus decoder
      • Action rule nodes
        • Add to group
        • Remove from group
        • Generate report
        • Integration Downlink
        • REST Call Reply
        • Change owner
        • Create alarm
        • Clear alarm
        • Delay messages
        • Generator
        • Log
        • RPC Call Reply
        • RPC Call Request
        • GPS geofencing events
        • Save attributes
        • Math Function
        • Asset Profiles Feature
        • fetch device credentials
        • delete attributes
        • split array msg
        • json path
        • delete keys
        • rename keys
        • copy keys
        • Save to Custom
        • Assign To Customer
        • Unassign From Customer
        • Create Relation
        • Delete Relation
        • Push to cloud
        • Pus to edge
        • Save timeseries
      • Analytics rule nodes
        • Aggregate Latest
        • Aggregate Stream
        • Alarms Count
      • Output connectors
        • AWS SNS
        • AWS SQS
        • MQTT
        • RabbitMQ
        • Kafka
        • Azure IoT Hub
        • Rest API
        • Priva
          • Realtime Telemetry API
          • Realtime Setpoint API
          • Data Insight Metadata API
          • Data Insight History API
          • Alarm Data Api
        • SOAP API
        • send email
        • send SMS
        • send Twilio SMS
      • Flow
        • Acknowledge
        • Checkpoint
        • Rule Chain
        • Output
  • Device Type Library
    • telemetry data keys
    • attribute data keys
      • Assets
        • Property
          • Building
          • Floor
          • Room
        • Facility
          • Component
        • City Zone
      • Devices
    • relation Type keys
  • API documentation
    • Admin Controller
  • CLI Tool
    • How to install the tool
    • Dataimport
  • Dynamic QR Codes
    • Dynamic QR Code App
Powered by GitBook
On this page
  • Overview
  • The ThingsNetwork setup
  • Payload Decoder
  • Device Registration in TheThingsNetwork
  • Integration with Tesenso IoT Cloud

Was this helpful?

  1. Integrations

TheThingsNetwork Integration

PreviousSwisscom LPN IntegrationNextTheThingsIndustries Integration

Last updated 2 years ago

Was this helpful?

Overview

TheThingsNetwork is LoRaWAN network designed for connecting your devices using LoRaWAN stack. After integrating TheThingsNetwork with Tesenso IoT Cloud, you can connect, communicate, process and visualize data from devices in the Tesenso IoT Cloud.

The ThingsNetwork setup

The first step is to create an application in TheThingsNetwork console. Go to console (), open Applications section, press add application button and fill required fields.

  • Application ID - tb_platform

  • Handler registration - ttn-handler-eu

Handler registration - used to identify region where application will be registered. In our example it will be eu region.

Payload Decoder

Our device submits data in binary format. We have 2 options where to decode this data:

  • TheThingsNetwork decoder - data will be decoded before entering the Tesenso IoT Cloud

  • Tesenso IoT Cloud converters - uplink/downlink converters will be used to decode data from binary format into JSON

In this tutorial, we will make an initial transformation into JSON with TTN decoder and then use Tesenso IoT Cloud converters for correct data processing. In real life scenario, it is up to you where to decode/encode data, because it is possible to do this on any side.

After application registered in TTN, go to payload_formats, select decoder function. We will take the first byte as a temperature value from a device and transform it into JSON.

Decode Function

function Decoder(bytes, port) {
  var decoded = {temperature: bytes[0]};
  return decoded;
}

Output json:

{
  "temperature": 15
}

Press Save payload function

Device Registration in TheThingsNetwork

Next step is a Device creation in the TTN. Open Devices page and press register device

  • Device ID - thermostat_a

  • Device EUI - press generate button for generating random identified

Press Register button.

Integration with Tesenso IoT Cloud

We made all required configurations in the TheThingsNetwork (register application, add decoder function and register device). Now we can start configuring Tesenso IoT Cloud.

Tesenso IoT Cloud Uplink Data Converter

First, we need to create an Uplink Data Converter which will be used for receiving messages from the TTN. The converter should transform incoming payload into the required message format. Message must contain deviceName and deviceType. Those fields are used for submitting data to the correct device. If a device was not found a new device will be created. Here is how payload from TheThingsNetwork will look like:

{
    "app_id": "tb_platform",
    "dev_id": "thermostat_a",
    "hardware_serial": "*********",
    "port": 1,
    "counter": 0,
    "payload_raw": "Dw==",
    "payload_fields": {
        "temperature": 15
    },
    "metadata": {
        "time": "2018-06-07T17:31:18.670792607Z"
    }
}

We will take dev_id and map it to the deviceName and app_id to the deviceType. But you can use another mapping, which fits your specific use cases. Also, we will take the value of the temperature field and use it as a device telemetry.

Go to Data Converters and create new uplink Converter with this function:

var data = decodeToJson(payload);
var deviceName = data.dev_id;
var deviceType = data.app_id;

var result = {
    deviceName: deviceName,
    deviceType: deviceType,
    telemetry: {
         temperature: data.payload_fields.temperature
    }
};

function decodeToString(payload) {
    return String.fromCharCode.apply(String, payload);
}

function decodeToJson(payload) {
    var str = decodeToString(payload);
    var data = JSON.parse(str);
    return data;
}

return result;

(insert "Add Data Converter" Picture)

Tesenso IoT Cloud Downlink Data Converter

For sending Downlink messages from Tesenso IoT Cloud to the device inside TTN, we need to define a Downlink Converter. In general, the output from the Downlink Converter should have the following structure:

Insert Converter here
  • contentType - defines how data will be encoded {TEXT | JSON | BINARY}

  • metadata - in this object you should place correct devId value that will be used to identify target device in TTN

Go to Data Converters and create new downlink Converter with this function:

Insert downlink Converter here

This converter will take the version field from the incoming message and add it as a payload field in the outbound message. The destination device is a thermostat_a device.

(insert "Add Data Converter" Picture)

TTN Integration

Next we will create the integration with TheThingsNetwork inside Tesenso IoT Cloud. Open Integrations section and add new Integration with type TheThingsNetwork

  • Name: ttn_integration

  • Type: TheThingsNetwork

  • Uplink data converter: ttn_converter

  • Downlink data converter: ttn_downlink_version

  • Region: eu (region where your application was registered inside TTN)

  • Application ID: tb_platform (use Application ID from TTN)

  • Access Key: use Access Key from TTN

data - actual data will be sent to the device in TTN. More details about API can be found in this TTN API ()

https://www.thethingsnetwork.org/docs/applications/mqtt/api/
https://console.cloud.thethings.network/
Page cover image