Divako LoRaWAN profiles are constantly updated. We are also planning to add specific profiles for different types of devices.
Name | MAC Version | Install Margin | OTAA | Class-C | RHC* | Addition changes |
---|---|---|---|---|---|---|
ABP (1.0.2) | 1.0.2 | 15 | - | - | 20 | |
ABP (1.0.3) | 1.0.3 | 15 | - | - | 20 | |
ABP (1.0.3) NbTrans & TxPower disabled | 1.0.3 | 15 | - | - | 20 | NbTrans = 1; TxPower = does not changed |
ABP (1.0.3) NbTrans disabled | 1.0.3 | 15 | - | - | 20 | NbTrans = 1 |
ABP (1.0.3) NbTrans disabled + IM13 | 1.0.3 | 13 | - | - | 20 | NbTrans = 1 |
ABP (1.1.0) | 1.1.0 | 15 | - | - | 20 | |
CLASS-C (1.0.2) | 1.0.2 | 15 | yes | yes | 20 | |
CLASS-C (1.0.3) | 1.0.3 | 15 | yes | yes | 20 | |
OTAA (1.0.2) | 1.0.2 | 15 | yes | - | 20 | |
OTAA (1.0.3) | 1.0.3 | 15 | yes | - | 20 | |
OTAA (1.0.4) | 1.0.4 | 15 | yes | - | 20 | |
OTAA (1.0.4) IM10 | 1.0.4 | 10 | yes | - | 20 | |
OTAA (1.1.0) | 1.1.0 | 15 | yes | - | 20 |
Required History Count (RHC) - indicates how many historical records will be considered before making changes to DR, NbTrans, or TxPowerIndex.
Each packet has frame-count indicators that we can use to identify the sequence of the payload — whether it follows the previous payload or if any are missing. This is because every packet the device sends out increases its fCnt count by one.
If we analyze the last 20 packets, we can check each one to see how many did not arrive consecutively. For example, if the first packet started with an fCnt of 10 and the last packet was 32, we can deduce that 2 payloads went missing, as the expected last payload should have had an fCnt of 30, not 32. In this scenario, we can say there was a 10% packet loss (2/20*100 = 10%)
.
In LoRaWAN, NbTrans represents the "Number of Transmissions." It indicates the total number of times a specific packet should be transmitted, encompassing the initial transmission and any subsequent retransmissions.
The network can adjust the NbTrans value based on recent packet losses. By analyzing the packet loss rate, it determines whether to increase or decrease the NbTrans value for upcoming transmissions. A higher packet loss rate may warrant an increased NbTrans value to ensure reliable packet delivery, while a low packet loss rate might allow for a decreased NbTrans to save on device power and airtime.
A lookup table (below), decides the appropriate NbTrans value based on current network conditions and the existing NbTrans setting.
Packet Loss % | Current NbTrans = 1 | Current NbTrans = 2 | Current NbTrans = 3 |
---|---|---|---|
<5% | 1 | 1 | 2 |
<10% | 1 | 2 | 3 |
<30% | 2 | 3 | 3 |
<100% | 3 | 3 | 3 |
PS: NbTrans will not change when there is less packets then Required History Count
Before calculating the TxPowerIndex and DR, we first identify the best (highest) Signal-to-Noise Ratio (SNR) value from a packet history, the size of which is specified by RHC. We then determine the margin of this SNR relative to what's required for the current DR. Subsequently, this margin is divided into steps, each of size 3, and we extract the largest whole number from this division. This number serves as an indicator of the margin between the actual SNR and the required SNR.
If the SNR margin is favorable (indicated by a positive nStep), adjustments are made by either increasing the data rate or the transmission power index. Conversely, if the SNR margin is suboptimal (indicated by a negative nStep), the approach is to decrease the transmission power index, potentially augmenting the power to enhance the signal.
PS: TxPowerIndex and DR will not change when there is less packets then Required History Count
At Divako, we allow the creation of custom profiles. Additionally, we can import your own custom profiles into Divako if you have specific configurations you wish to use for your devices. While our logic can process a vast amount of input data, it is limited to returning just three parameters: dr
, txPowerIndex
, and nbTrans
.
Input object example:
{
regionConfigId: "eu868",
regionCommonName: "EU868",
devEui: "0102030405060708",
macVersion: "1.0.3",
regParamsRevision: "A",
adr: true,
dr: 1,
txPowerIndex: 0,
nbTrans: 1,
maxTxPowerIndex: 15,
requiredSnrForDr: -17.5,
installationMargin: 10,
minDr: 0,
maxDr: 5,
uplinkHistory: [
{
"fCnt": 10,
"maxSnr": 7.5,
"maxRssi": -110,
"txPowerIndex": 0,
"gatewayCount": 3
}
]
}
Handle function must return an object, example:
{
dr: 2,
txPowerIndex: 1,
nbTrans: 1
}