Skip to content
Stand with Ukraine flag

Abeeway Trackers with Actility ThingPark

The Actility ThingPark integration connects ThingsBoard to the ThingPark LoRaWAN network server. ThingPark pushes uplink messages from LoRaWAN devices to a ThingsBoard HTTP endpoint, where they are decoded by an uplink converter and stored as device telemetry and attributes. ThingsBoard sends downlink commands back through Actility via an encoder converter and rule chain.

This guide demonstrates connecting Abeeway Micro Tracker and Abeeway Industrial Tracker devices to ThingsBoard through the ThingPark Wireless platform.

Before creating the integration, verify that your device is active in ThingPark and attached to an application:

  1. Sign in to the ThingPark Wireless OSS intelligent logger and confirm the device is connected and transmitting data.
  2. Note the DevEUI of your device — it becomes the Device Name in ThingsBoard, and the device type is set to tracker automatically.

The decoder parses incoming ThingPark Wireless messages (JSON payload containing DevEUI_uplink or DevEUI_downlink_Sent) and extracts telemetry like battery voltage, temperature, GPS position, and device status. ThingPark supports all three converter types: Generic (script-based, shown below), Typed, and Library. The Library provides a built-in catalog of ready-to-use decoder functions for over 100 devices.

  1. Download the uplink converter file:

  2. Go to Integrations center ⇾ Data converters and click + Add data converter ⇾ Import converter.

  3. Drag and drop the downloaded JSON file and click Import.

The decoder function used in this guide:

var constants = {
'mTypeSpr': // MAC message type
{
0: "Join Request",
1: "Join Accept",
2: "Unconfirmed Data Up",
3: "Unconfirmed Data Down",
4: "Confirmed Data Up",
5: "Confirmed Data Down",
6: "RFU",
7: "Proprietary"
},
'commonMessageHeaderSpr': {
'type': {
0: "Frame pending",

After importing the converter, test it using the sample input below to verify the output.

  • Payload content type: JSON
  • Sample input payload:
    {
    "DevEUI_uplink": {
    "Time": "2019-11-06T09:54:46.342+01:00",
    "DevEUI": "20635F00C5000660",
    "FPort": 17,
    "payload_hex": "0500997d3040"
    }
    }
  • Expected decoder output (heartbeat message, type 0x05):
    {
    "ts": 1573030486342,
    "values": {
    "batteryVoltage": 8.388,
    "temperature": 18.5,
    "ph_type": "Heartbeat message"
    }
    }

The downlink converter prepares the payload to send from ThingsBoard to the device via Actility. For the full encoder function reference, see the Downlink data converter documentation.

  1. Download the downlink converter file:

  2. Go to Integrations center ⇾ Data converters and click + Add data converter ⇾ Import converter.

  3. Drag and drop the downloaded JSON file and click Import.

The encoder function used in this guide:

var data = {};
data.senPayloadHex = msg.sentPayloadHex;
data.deviceName = metadata['deviceName'];
var result = {
contentType: "JSON",
data: JSON.stringify(data),
};
return result;
  1. Go to Integrations center ⇾ Integrations and click + Add integration.
  2. Basic settings:
    • Set Integration type to ThingPark.
    • Enable integration and Allow create devices or assets are on by default.
    • Click Next.
  3. Uplink data converter:
    • Click Select existing and choose ThingPark Actility Uplink Converter from the list. Click Next.
  4. Downlink data converter:
    • Click Select existing and choose ThingPark Actility Downlink Converter from the list. Click Next.
  5. Connection:
    • Copy the HTTP endpoint URL — paste it into your Actility application server routing profile as the destination URL.
  6. Click Add.

Once the integration is active, ThingsBoard automatically creates devices matching the DevEUI values registered in ThingPark. Check Entities ⇾ Devices to confirm the devices appear and are receiving telemetry.

To enable downlink messaging, configure the Root Rule Chain to route attribute updates to Actility:

  1. Open Rule Chains ⇾ Root Rule Chain and click the edit (pencil) icon.
  2. Add an Enrichment node of type Originator fields. Configure it to extract deviceName and deviceType into metadata.
  3. Add an Action node of type Integration downlink, selecting the ThingPark integration.
  4. Connect: Message Type SwitchAttributes UpdatedOriginator fields node.
  5. Connect: Originator fieldsSuccessIntegration downlink node.
  6. Save the rule chain.
  1. Download actility_dashboard.json.
  2. Go to Dashboards, click +, and select Import dashboard.
  3. Drag and drop the file and click Import.

Alternatively, build the dashboard manually. The dashboard uses two aliases and five widgets:

  • List abeeways — entity list filter by device names
  • DigEntityFrom — entity from the current dashboard state (used by detail widgets)

Widget 1 — Device cards with navigation action

Add a Cards widget (Latest values type) bound to the List abeeways alias. Add an On row click action that navigates to a dashboard state, passing the selected entity to DigEntityFrom.

Widget 2 — Time-series temperature chart

Add a Charts widget (Time-series type) bound to DigEntityFrom, showing the temperature key with the entity label.

Widget 3 — Digital gauges

Add a Digital gauges widget bound to DigEntityFrom to visualize real-time telemetry values like battery voltage.

Widget 4 — Telemetry cards

Add a Cards widget (Time-series type) bound to DigEntityFrom showing multiple telemetry keys.

Widget 5 — Input widget for downlink messages

Add an Input widget bound to DigEntityFrom to send downlink commands to the device (see Send Downlink Messages for payload formats).

Check the Integration ⇾ Events tab to confirm uplink messages are being received and processed. The Latest telemetry tab of the device shows current values.

Use the input widget (Widget 5 on the dashboard) to send downlink commands to the device. Enter a hex payload and submit — the message is routed through the rule chain to Actility and forwarded to the device over LoRaWAN.

Message typeIDExample payloadDescription
Position on demand0x0101Request current position immediately
Set Mode0x020203Change operational mode (0=Standby … 5=Off)
Request Configuration0x03030605090C01Request parameters: geoloc_sensor, gps_timeout, gps_convergence, lora_period
Start SOS Mode0x0404Activate SOS/emergency mode
Stop SOS Mode0x0505Deactivate SOS mode
Set Param0x0B0B0A0C000000781100000E10Set gps_convergence and gps_standby_timeout
Debug Command0xFFFFReset the tracker
  • Integrations Overview — how ThingsBoard connects to external platforms and how uplink/downlink flow works
  • ThingPark Integration — full integration setup: uplink and downlink converters, connection settings, and troubleshooting
  • Uplink Data Converter — full decoder function reference: input parameters, output fields, and scripting patterns
  • Downlink Data Converter — full encoder function reference: input parameters, output fields, and scripting patterns
  • Remote Integrations — run the integration outside the ThingsBoard server to reach ThingPark from a private network
  • TBEL scripting reference — built-in functions and operators for writing converter scripts
  • Rule Engine — how the Root Rule Chain routes downlink commands to the integration