ChirpStack
- ChirpStack is an open-source LoRaWAN Network Server which can be used to set up LoRaWAN networks.
We use a standard output transformation processor that transform output messages from Actility's format to different ChirpStack Event messages JSON format.
We transform all types of messages described here.
Uplink message
Input Uplink message
A simplified input uplink message could be similar to this:
{
"DevEUI_uplink": {
"Time": "2023-03-01T00:00:11.013+01:00",
"DevEUI": "402C765000000074",
"FPort": 2,
"FCntUp": 53,
"ADRbit": 1,
"MType": 4,
"FCntDn": 54,
"payload_hex": "02300040a0",
"mic_hex": "61fa24cf",
"Lrcid": "00000127",
"LrrRSSI": -83.0,
"LrrSNR": 9.5,
"SpFact": 7,
"SubBand": "G0",
"Channel": "LC1",
"DevLrrCnt": 2,
"Lrrid": "3C200E92",
"Late": 0,
"LrrLAT": 48.933865,
"LrrLON": 1.195898,
"Lrrs": {
"Lrr": [
{
"Lrrid": "3C200E92",
"Chain": 0,
"LrrRSSI": -83.0,
"LrrSNR": 9.5,
"LrrESP": -83.461838
},
{
"Lrrid": "1000027C",
"Chain": 0,
"LrrRSSI": -89.0,
"LrrSNR": 6.75,
"LrrESP": -89.832695
}
]
},
"CustomerID": "100133870",
"CustomerData": {
"alr": {
"pro": "LORA/Generic",
"ver": "1"
},
"tags": [
"site=Paris"
],
"name": "My Demo Device"
},
"DriverCfg": {
"app": {
"pId": "actility",
"mId": "demo",
"ver": "1"
}
},
"InstantPER": 0.0,
"MeanPER": 0.0,
"DevAddr": "04D2848E",
"AckRequested": 1,
"TxPower": 2.0,
"NbTrans": 1,
"Frequency": 868.1,
"DynamicClass": "A",
"payload": {
"battery": {
"type": "tension",
"value": 3.6,
"unit": "V",
"error": 0
}
}
}
}
Output Uplink message
The output of the processor follows the ChirpStack event type up:
{
"devEUI" : "402C765000000074",
"fPort" : 2,
"deviceName" : "My Demo Device",
"fCnt" : 53,
"adr" : true,
"applicationName" : "actility:demo:1",
"rxInfo" : [ {
"gatewayID" : "3C200E92",
"rssi" : -83.0,
"loRaSNR" : 9.5,
"rfChain" : 0,
"location" : {
"latitude" : 48.933865,
"longitude" : 1.195898,
"altitude" : 0
},
"time" : "2023-02-28T23:00:11.013Z"
}, {
"gatewayID" : "1000027C",
"rssi" : -89.0,
"loRaSNR" : 6.75,
"rfChain" : 0
} ],
"data" : "AjAAQKA=",
"objectJSON" : {
"battery" : {
"type" : "tension",
"value" : 3.6,
"unit" : "V",
"error" : 0
}
},
"tags" : {
"site" : "Paris"
},
"txInfo" : {
"frequency" : 868100000,
"modulation" : "LORA",
"loRaModulationInfo" : {
"spreadingFactor" : 7
}
}
}
Downlink_Sent message
Input Downlink_Sent message
A simplified input downlink_sent message could be similar to this:
{
"DevEUI_downlink_Sent" : {
"Time" : "2020-06-05T14:24:20.787+02:00",
"DevEUI" : "20635F0161000022",
"FPort" : 2,
"FCntDn" : 24,
"FCntUp" : 74,
"Lrcid" : "00000127",
"SpFact" : 9,
"SubBand" : "G3",
"Channel" : "LC254",
"Lrrid" : "08050376",
"DeliveryStatus" : 1,
"CustomerID" : "100002164",
"CustomerData" : {
"alr" : {
"pro" : "ABEE/APY",
"ver" : "1"
},
"name": "My Demo Device"
},
"TransmissionSlot" : 2,
"Frequency" : 869.525
}
}
Output Downlink_Sent message
The output of the processor follows the ChirpStack event type ack:
{
"devEUI" : "20635F0161000022",
"deviceName" : "My Demo Device",
"acknowledged" : true,
"txInfo" : {
"frequency" : 869525000,
"modulation" : "LORA",
"loRaModulationInfo" : {
"spreadingFactor" : 9
}
}
}
Notification Device Status message
Input Notification Device Status message
A simplified input notification message (device status) could be similar to this:
{
"DevEUI_notification" : {
"Time" : "2023-02-22T17:14:02.000+00:00",
"DevEUI" : "0018B20000000B20",
"Lrcid" : "00000127",
"DevAddr" : "05CB0AE8",
"CustomerID" : "100132373",
"FCntDn" : 0,
"Type" : "devstatusans",
"Var1": "98",
"Var2": "8"
}
}
Output Notification Device Status message
The output of the processor follows the ChirpStack event type status:
{
"devEUI" : "0018B20000000B20",
"deviceName" : "0018B20000000B20",
"batteryLevel" : 98,
"batteryLevelUnavailable" : false,
"margin" : 8
}
Error message
Input Decode Error message
A simplified input uplink message with decode error could be similar to this:
{
"DevEUI_uplink": {
"Time": "2023-03-01T00:00:11.013+01:00",
"DevEUI": "402C765000000074",
"FPort": 2,
"FCntUp": 53,
"ADRbit": 1,
"MType": 4,
"FCntDn": 54,
"payload_hex": "02300040a0",
"mic_hex": "61fa24cf",
"Lrcid": "00000127",
"LrrRSSI": -83.0,
"LrrSNR": 9.5,
"SpFact": 7,
"SubBand": "G0",
"Channel": "LC1",
"DevLrrCnt": 2,
"Lrrid": "3C200E92",
"Late": 0,
"LrrLAT": 48.933865,
"LrrLON": 1.195898,
"Lrrs": {
"Lrr": [
{
"Lrrid": "3C200E92",
"Chain": 0,
"LrrRSSI": -83.0,
"LrrSNR": 9.5,
"LrrESP": -83.461838
},
{
"Lrrid": "1000027C",
"Chain": 0,
"LrrRSSI": -89.0,
"LrrSNR": 6.75,
"LrrESP": -89.832695
}
]
},
"CustomerID": "100133870",
"CustomerData": {
"alr": {
"pro": "LORA/Generic",
"ver": "1"
},
"tags": [
"site=Paris"
],
"name": "My Demo Device"
},
"DriverCfg": {
"app": {
"pId": "actility",
"mId": "demo",
"ver": "1"
}
},
"InstantPER": 0.0,
"MeanPER": 0.0,
"DevAddr": "04D2848E",
"AckRequested": 1,
"TxPower": 2.0,
"NbTrans": 1,
"Frequency": 868.1,
"DynamicClass": "A",
"payloadDecodedError": {
"code": "com-5000",
"message": "driver internal errors: wrong payload length"
}
}
}
Output Decode Error Message
The output of the processor follows the ChirpStack event type error:
{
"devEUI" : "402C765000000074",
"fPort" : 2,
"deviceName" : "My Demo Device",
"fCnt" : 53,
"adr" : true,
"applicationName" : "actility:demo:1",
"rxInfo" : [ {
"gatewayID" : "3C200E92",
"rssi" : -83.0,
"loRaSNR" : 9.5,
"rfChain" : 0,
"location" : {
"latitude" : 48.933865,
"longitude" : 1.195898,
"altitude" : 0
},
"time" : "2023-02-28T23:00:11.013Z"
}, {
"gatewayID" : "1000027C",
"rssi" : -89.0,
"loRaSNR" : 6.75,
"rfChain" : 0
} ],
"data" : "AjAAQKA=",
"tags" : {
"site" : "Paris"
},
"txInfo" : {
"frequency" : 868100000,
"modulation" : "LORA",
"loRaModulationInfo" : {
"spreadingFactor" : 7
}
},
"type": "DECODE_ERROR",
"error": "{\"code\":\"com-5000\",\"message\":\"driver internal errors:wrong payload length\"}"
}
Join message
Input Join message
A simplified input join message could be similar to this:
{
"DevEUI_uplink": {
"Time": "2023-03-01T00:00:11.013+01:00",
"DevEUI": "402C765000000074",
"FPort": 2,
"FCntUp": 53,
"ADRbit": 1,
"MType": 4,
"FCntDn": 54,
"rawJoinRequest" : "003246524144b21800200b000000b2180052ff36f5e390",
"mic_hex": "61fa24cf",
"Lrcid": "00000127",
"LrrRSSI": -83.0,
"LrrSNR": 9.5,
"SpFact": 7,
"SubBand": "G0",
"Channel": "LC1",
"DevLrrCnt": 2,
"Lrrid": "3C200E92",
"Late": 0,
"LrrLAT": 48.933865,
"LrrLON": 1.195898,
"Lrrs": {
"Lrr": [
{
"Lrrid": "3C200E92",
"Chain": 0,
"LrrRSSI": -83.0,
"LrrSNR": 9.5,
"LrrESP": -83.461838
},
{
"Lrrid": "1000027C",
"Chain": 0,
"LrrRSSI": -89.0,
"LrrSNR": 6.75,
"LrrESP": -89.832695
}
]
},
"CustomerID": "100133870",
"CustomerData": {
"alr": {
"pro": "LORA/Generic",
"ver": "1"
},
"tags": [
"site=Paris"
],
"name": "My Demo Device"
},
"DriverCfg": {
"app": {
"pId": "actility",
"mId": "demo",
"ver": "1"
}
},
"InstantPER": 0.0,
"MeanPER": 0.0,
"DevAddr": "04D2848E",
"AckRequested": 1,
"TxPower": 2.0,
"NbTrans": 1,
"Frequency": 868.1,
"DynamicClass": "A"
}
}
Output Join message
The output of the processor follows the ChirpStack event type join:
{
"devEUI" : "402C765000000074",
"deviceName" : "My Demo Device",
"applicationName" : "actility:demo:1",
"rxInfo" : [ {
"gatewayID" : "3C200E92",
"rssi" : -83.0,
"loRaSNR" : 9.5,
"rfChain" : 0,
"location" : {
"latitude" : 48.933865,
"longitude" : 1.195898,
"altitude" : 0
},
"time" : "2023-02-28T23:00:11.013Z"
}, {
"gatewayID" : "1000027C",
"rssi" : -89.0,
"loRaSNR" : 6.75,
"rfChain" : 0
} ],
"tags" : {
"site" : "Paris"
},
"txInfo" : {
"frequency" : 868100000,
"modulation" : "LORA",
"loRaModulationInfo" : {
"spreadingFactor" : 7
}
}
}