Skip to main content

LoRaWAN Portal

LoRaWAN Portal (CONNECT) is a LoRaWAN export format used to deliver device uplink events. This processor transforms Actility uplink payloads (DevEUI_uplink) into CONNECT-compatible JSON arrays. All examples below show:

  • the input Actility message payload
  • the callProcessor API configuration
  • the transformed output produced by TPX Flow

Processor ID and configuration

Use processor id CONNECT_TRANSFORMATION in your output stream operations.

{
"upOperations": [
{
"type": "callProcessor",
"id": "CONNECT_TRANSFORMATION"
}
]
}

messageFormat parameter

CONNECT supports an optional configuration.messageFormat value:

  • DEFAULT
  • DEFAULT_FCNTUP
  • DEFAULT_MESSAGE_TYPE
  • DEFAULT_ALL If messageFormat is missing or invalid, TPX Flow automatically falls back to DEFAULT_ALL.

Example configuration with messageFormat

{
"upOperations": [
{
"type": "callProcessor",
"id": "CONNECT_TRANSFORMATION",
"configuration": {
"messageFormat": "DEFAULT_ALL"
}
}
]
}

Tags mapping from Actility

CONNECT tags is built from DevEUI_uplink.CustomerData.tags (Actility format).

  • Actility source format:
    "CustomerData": {
    "tags": ["building=A", "type=MOTION,TEMP"]
    }
  • CONNECT output format:
    "tags": {
    "building": ["A"],
    "type": ["MOTION", "TEMP"]
    }

Each entry is parsed as key=value1,value2.

Input reference (Actility format)

{
"DevEUI_uplink": {
"DevEUI": "70b3d52a1ff00001",
"Time": "2023-03-31T08:00:08.599602Z",
"payload_hex": "1234",
"FCntUp": 15800,
"SpFact": 7,
"LrrRSSI": "-73",
"LrrSNR": "9.8",
"Lrrid": "506",
"FPort": 1,
"LrrLAT": 59.776931,
"LrrLON": 14.903832,
"Frequency": 868300000,
"AckRequested": 0,
"DR": 5,
"BatteryLevel": "255",
"MType": 4,
"CustomerData": {
"tags": ["building=A", "type=MOTION,TEMP"]
},
"Lrrs": {
"Lrr": [
{
"LrrRSSI": "-73",
"LrrSNR": "9.8",
"Lrrid": "506",
"Chain": 0,
"LrrLrcid": "7076FF02123C"
},
{
"LrrRSSI": "-47",
"LrrSNR": "9.5",
"Lrrid": "1789",
"Chain": 0,
"LrrLrcid": "647FDA016C40"
}
]
}
}
}

Output examples by messageFormat

DEFAULT

[
{
"devEui": "70b3d52a1ff00001",
"sensorType": "other",
"timestamp": "2023-03-31T08:00:08.599602Z",
"payload": "1234",
"spreadingFactor": "7",
"rssi": "-73",
"snr": "9.8",
"gatewayIdentifier": "506",
"fPort": "1",
"latitude": 59.776931,
"longitude": 14.903832,
"tags": {
"building": ["A"],
"type": ["MOTION", "TEMP"]
}
}
]

DEFAULT_FCNTUP

[
{
"devEui": "70b3d52a1ff00001",
"sensorType": "other",
"timestamp": "2023-03-31T08:00:08.599602Z",
"payload": "1234",
"fCntUp": 15800,
"spreadingFactor": "7",
"rssi": "-73",
"snr": "9.8",
"gatewayIdentifier": "506",
"fPort": "1",
"latitude": 59.776931,
"longitude": 14.903832,
"tags": {
"building": ["A"],
"type": ["MOTION", "TEMP"]
}
}
]

DEFAULT_MESSAGE_TYPE

[
{
"devEui": "70b3d52a1ff00001",
"sensorType": "other",
"messageType": "payload",
"timestamp": "2023-03-31T08:00:08.599602Z",
"payload": "1234",
"fCntUp": 15800,
"spreadingFactor": "7",
"rssi": "-73",
"snr": "9.8",
"gatewayIdentifier": "506",
"fPort": "1",
"latitude": 59.776931,
"longitude": 14.903832,
"tags": {
"building": ["A"],
"type": ["MOTION", "TEMP"]
}
}
]

DEFAULT_ALL

[
{
"devEui": "70b3d52a1ff00001",
"sensorType": "other",
"messageType": "payload",
"timestamp": "2023-03-31T08:00:08.599602Z",
"payload": "1234",
"fCntUp": 15800,
"toa": null,
"freq": 868300000,
"batteryLevel": "255",
"ack": false,
"spreadingFactor": "7",
"dr": 5,
"rssi": "-73",
"snr": "9.8",
"gatewayIdentifier": "506",
"fPort": "1",
"latitude": 59.776931,
"longitude": 14.903832,
"tags": {
"building": ["A"],
"type": ["MOTION", "TEMP"]
},
"gateways": [
{
"rssi": "-73",
"snr": "9.8",
"gatewayIdentifier": "506",
"gwEui": "506",
"mac": "7076FF02123C",
"antenna": 0
},
{
"rssi": "-47",
"snr": "9.5",
"gatewayIdentifier": "1789",
"gwEui": "1789",
"mac": "647FDA016C40",
"antenna": 0
}
]
}
]

Invalid configuration behavior

If you pass an unsupported messageFormat, TPX Flow falls back to DEFAULT_ALL.

{
"upOperations": [
{
"type": "callProcessor",
"id": "CONNECT_TRANSFORMATION",
"configuration": {
"messageFormat": "NOT_A_VALID_FORMAT"
}
}
]
}

The output will be generated with the same field set as DEFAULT_ALL.