LoRaWAN Capacity

Objective:

Derive various metrics from LoRaWAN Gateway Logs

Discussion:

Preparing The Data with stringr

loading Dragino Gateway Logs. Finding all occurrences of ‘Mote:’ and then create an R dataframe of all the motes’ RF attributes.

#

library(jsonlite)
library(stringr)

# Read the log file
log_data <- readLines("message.log")

# Find lines containing the keyword "mote:"
mote_indices <- grep("mote:", log_data)

# Initialize a list to store the extracted data
extracted_data <- list()

# Iterate over the mote indices
for (index in mote_indices) {
  # Extract the line with 'mote:' and the next line
  mote_line <- log_data[index]      # Line with 'mote:'
  json_line <- log_data[index + 1]  # Line following 'mote:'
  
  # Extract the mote ID from the mote line
  mote_id <- str_extract(mote_line, "mote: [A-F0-9]+")
  mote_id <- str_replace(mote_id, "mote: ", "")  # Remove 'mote: ' prefix
  
  # Extract the JSON snippet from the line
  json_snippet <- str_extract(json_line, "JSON: .*")
  if (!is.na(json_snippet)) {
    # Remove the "JSON: " prefix
    json_snippet <- str_remove(json_snippet, "JSON: ")
    
    # Parse the JSON snippet into a list
    json_list <- fromJSON(json_snippet)
    
    # Extract the desired fields from the list
    rxpk <- json_list$rxpk
    jver <- rxpk$jver
    tmst <- rxpk$tmst
    time <- rxpk$time
    chan <- rxpk$chan
    rfch <- rxpk$rfch
    freq <- rxpk$freq
    mid <- rxpk$mid
    stat <- rxpk$stat
    rssi <- rxpk$rssi  # Extracting 'rssi' field
    modu <- rxpk$modu
    datr <- rxpk$datr
    codr <- rxpk$codr
    rssis <- rxpk$rssis
    lsnr <- rxpk$lsnr
    foff <- rxpk$foff
    size <- rxpk$foff
    data <- rxpk$data
    
    # Store the extracted data in a list
    extracted_data[[length(extracted_data) + 1]] <- data.frame(mote_id = mote_id, jver = jver, tmst = tmst, time = time, chan = chan, rfch = rfch, freq = freq, mid = mid, stat = stat, rssi = rssi, rssis = rssis, modu = modu, datr = datr, codr = codr, lsnr = lsnr, foff = foff, size = size, data = data)
  }
}

# Combine all the extracted data frames into a single data frame
df <- do.call(rbind, extracted_data)

# Print the data frame
print(df)
##     mote_id jver       tmst                        time chan rfch  freq mid
## 1  E02020B8    1 2282003299 2024-04-28T17:47:35.286597Z    3    0 904.5   8
## 2  E02020B8    1 2282003299 2024-04-28T17:47:35.291642Z    3    0 904.5   8
## 3  E02020B8    1 3172174209 2024-04-28T18:02:25.453934Z    1    0 904.1   8
## 4  E02020B8    1 3172174209 2024-04-28T18:02:25.456701Z    1    0 904.1   8
## 5  E02020B8    1 1537735565 2024-04-28T18:46:45.976219Z    4    1 904.7   8
## 6  E02020B8    1 1537735565 2024-04-28T18:46:45.977953Z    4    1 904.7   8
## 7  E02020B8    1 2507919493 2024-04-28T19:02:56.173376Z    2    0 904.3   8
## 8  E02020B8    1 2507919493 2024-04-28T19:02:56.176735Z    2    0 904.3   8
## 9  00000000    1 3687911523 2024-04-28T19:22:36.157691Z    1    0 904.1   8
## 10 00000000    1 3687911523 2024-04-28T19:22:36.160559Z    1    0 904.1   8
## 11 E02B4952    1  313866095 2024-04-28T19:37:57.086575Z    2    0 904.3   8
## 12 E02020B8    1 2733872178 2024-04-28T20:18:17.090216Z    6    1 905.1   8
## 13 E02020B8    1 3609041837 2024-04-28T20:32:52.260879Z    0    0 903.9   8
## 14 E02020B8    1 3609041837 2024-04-28T20:32:52.265633Z    0    0 903.9   8
## 15 E02020B8    1 2034621724 2024-04-28T21:18:12.818983Z    7    1 905.3   8
## 16 E02020B8    1 2034621724 2024-04-28T21:18:12.820725Z    7    1 905.3   8
## 17 E02020B8    1 1335375637 2024-04-28T22:18:08.534433Z    4    1 904.7   8
## 18 E02020B8    1 1335375637 2024-04-28T22:18:08.537622Z    4    1 904.7   8
## 19 E02020B8    1 2170539102 2024-04-28T22:32:03.696460Z    7    1 905.3   8
## 20 E02020B8    1 2170539102 2024-04-28T22:32:03.697763Z    7    1 905.3   8
## 21 E02020B8    1 4050910242 2024-04-28T23:03:24.075887Z    1    0 904.1   8
## 22 E02020B8    1 4050910242 2024-04-28T23:03:24.078436Z    1    0 904.1   8
## 23 E02020B8    1 3271678791 2024-04-29T00:01:59.810725Z    0    0 903.9   8
## 24 E02020B8    1 3271678791 2024-04-29T00:01:59.812475Z    0    0 903.9   8
## 25 E02020B8    1 2577431922 2024-04-29T01:02:00.537637Z    5    1 904.9   8
## 26 E02020B8    1 2577431922 2024-04-29T01:02:00.539738Z    5    1 904.9   8
## 27 E02020B8    1 3457564271 2024-04-29T01:16:40.669557Z    3    0 904.5   8
## 28 E02020B8    1 3457564271 2024-04-29T01:16:40.672445Z    3    0 904.5   8
## 29 260C745F    1 2397791573 2024-04-29T02:10:35.874641Z    3    0 904.5   8
## 30 260C745F    1 2397791573 2024-04-29T02:10:35.879134Z    3    0 904.5   8
## 31 260C745F    1 2408363381 2024-04-29T02:10:46.450872Z    2    0 904.3   8
## 32 E02020B8    1  268587740 2024-04-29T02:46:41.636422Z    2    0 904.3   8
## 33 E02020B8    1  268587740 2024-04-29T02:46:41.637715Z    2    0 904.3   8
## 34 E02020B8    1  730469033 2024-04-29T05:17:33.472082Z    3    0 904.5   8
## 35 E02020B8    1  946398914 2024-04-29T06:32:44.492011Z    2    0 904.3   8
## 36 E02020B8    1 3752854300 2024-04-29T08:31:06.076735Z    7    1 905.3   8
## 37 E02020B8    1 3752854300 2024-04-29T08:31:06.081928Z    7    1 905.3   8
## 38 E02020B8    1  488059103 2024-04-29T08:48:15.950458Z    0    0 903.9   8
## 39 E02020B8    1  488059103 2024-04-29T08:48:15.953256Z    0    0 903.9   8
## 40 E02020B8    1 1303221200 2024-04-29T09:01:52.013044Z    1    0 904.1   8
## 41 E02020B8    1 1303221200 2024-04-29T09:01:52.017731Z    1    0 904.1   8
## 42 E02020B8    1 2208399202 2024-04-29T09:16:56.325956Z    5    1 904.9   8
## 43 E02020B8    1 2208399202 2024-04-29T09:16:56.330428Z    5    1 904.9   8
## 44 E02020B8    1 4043753651 2024-04-29T09:47:32.975863Z    6    1 905.1   8
## 45 E02020B8    1 4043753651 2024-04-29T09:47:32.981007Z    6    1 905.1   8
## 46 E02020B8    1 4224723334 2024-04-29T11:02:07.896193Z    2    0 904.3   8
## 47 E02020B8    1 4254694635 2024-04-29T11:02:37.627902Z    4    1 904.7   8
## 48 E02020B8    1 4254694635 2024-04-29T11:02:37.634719Z    4    1 904.7   8
## 49 E02020B8    1  165637108 2024-04-29T12:17:40.066413Z    7    1 905.3   8
## 50 E02020B8    1  165637108 2024-04-29T12:17:40.071412Z    7    1 905.3   8
## 51 260C745F    1 2179591694 2024-04-29T12:51:12.419581Z    0    0 903.9   8
## 52 260C745F    1 2188597147 2024-04-29T12:51:21.406075Z    5    1 904.9   8
## 53 260C745F    1 2188597147 2024-04-29T12:51:21.407286Z    5    1 904.9   8
## 54 E02020B8    1 3761332806 2024-04-29T13:17:34.207397Z    0    0 903.9   8
## 55 E02020B8    1 3761332806 2024-04-29T13:17:34.235544Z    0    0 903.9   8
## 56 260C745F    1  132702040 2024-04-29T13:28:40.534378Z    4    1 904.7   8
## 57 260C745F    1  132702040 2024-04-29T13:28:40.555882Z    4    1 904.7   8
## 58 E02020B8    1 1236710500 2024-04-29T13:47:04.617578Z    6    1 905.1   8
## 59 E02020B8    1 1236710500 2024-04-29T13:47:04.626021Z    6    1 905.1   8
## 60 E02020B8    1 3987232343 2024-04-29T14:32:59.105063Z    3    0 904.5   8
##    stat rssi rssis modu      datr codr  lsnr  foff  size
## 1     1 -107  -110 LORA SF10BW125  4/5  -3.5  3860  3860
## 2     1 -107  -110 LORA SF10BW125  4/5  -3.5  3860  3860
## 3     1 -104  -106 LORA SF10BW125  4/5   0.0  3854  3854
## 4     1 -104  -106 LORA SF10BW125  4/5   0.0  3854  3854
## 5     1 -109  -110 LORA SF10BW125  4/5   3.2  3792  3792
## 6     1 -109  -110 LORA SF10BW125  4/5   3.2  3792  3792
## 7     1 -103  -108 LORA SF10BW125  4/5  -3.8  3903  3903
## 8     1 -103  -108 LORA SF10BW125  4/5  -3.8  3903  3903
## 9     1  -37   -38 LORA SF10BW125  4/5  12.0  -492  -492
## 10    1  -37   -38 LORA SF10BW125  4/5  12.0  -492  -492
## 11    1 -109  -121 LORA  SF9BW125  4/5 -12.8 -1073 -1073
## 12    1 -109  -111 LORA SF10BW125  4/5   5.0  4416  4416
## 13    1 -106  -110 LORA SF10BW125  4/5  -3.2  4339  4339
## 14    1 -106  -110 LORA SF10BW125  4/5  -3.2  4339  4339
## 15    1 -114  -117 LORA SF10BW125  4/5  -1.0  4633  4633
## 16    1 -114  -117 LORA SF10BW125  4/5  -1.0  4633  4633
## 17    1 -107  -108 LORA SF10BW125  4/5   4.2  4494  4494
## 18    1 -107  -108 LORA SF10BW125  4/5   4.2  4494  4494
## 19    1 -106  -107 LORA SF10BW125  4/5   7.5  4426  4426
## 20    1 -106  -107 LORA SF10BW125  4/5   7.5  4426  4426
## 21    1 -104  -107 LORA SF10BW125  4/5   0.0  4083  4083
## 22    1 -104  -107 LORA SF10BW125  4/5   0.0  4083  4083
## 23    1 -111  -118 LORA SF10BW125  4/5  -5.2  3509  3509
## 24    1 -111  -118 LORA SF10BW125  4/5  -5.2  3509  3509
## 25    1 -113  -119 LORA SF10BW125  4/5  -6.5  3159  3159
## 26    1 -113  -119 LORA SF10BW125  4/5  -6.5  3159  3159
## 27    1 -104  -105 LORA SF10BW125  4/5   2.2  3101  3101
## 28    1 -104  -105 LORA SF10BW125  4/5   2.2  3101  3101
## 29    1  -41   -42 LORA SF10BW125  4/5  14.5  -498  -498
## 30    1  -41   -42 LORA SF10BW125  4/5  14.5  -498  -498
## 31    1  -43   -44 LORA  SF7BW125  4/5  10.8  -526  -526
## 32    1 -100  -102 LORA  SF9BW125  4/5   3.2  2655  2655
## 33    1 -100  -102 LORA  SF9BW125  4/5   3.2  2655  2655
## 34    1 -102  -104 LORA SF10BW125  4/5   0.2  2526  2526
## 35    1 -102  -103 LORA SF10BW125  4/5   2.2  2518  2518
## 36    1 -109  -110 LORA SF10BW125  4/5   2.8  2426  2426
## 37    1 -109  -110 LORA SF10BW125  4/5   2.8  2426  2426
## 38    1 -105  -106 LORA SF10BW125  4/5   1.0  2305  2305
## 39    1 -105  -106 LORA SF10BW125  4/5   1.0  2305  2305
## 40    1 -101  -103 LORA SF10BW125  4/5   1.2  2362  2362
## 41    1 -101  -103 LORA SF10BW125  4/5   1.2  2362  2362
## 42    1 -111  -113 LORA SF10BW125  4/5  -1.5  2332  2332
## 43    1 -111  -113 LORA SF10BW125  4/5  -1.5  2332  2332
## 44    1 -109  -111 LORA SF10BW125  4/5   4.2  2394  2394
## 45    1 -109  -111 LORA SF10BW125  4/5   4.2  2394  2394
## 46    1 -104  -106 LORA SF10BW125  4/5  -0.2  2343  2343
## 47    1 -109  -112 LORA SF10BW125  4/5   0.5  2321  2321
## 48    1 -109  -112 LORA SF10BW125  4/5   0.5  2321  2321
## 49    1 -106  -107 LORA SF10BW125  4/5   6.5  1668  1668
## 50    1 -106  -107 LORA SF10BW125  4/5   6.5  1668  1668
## 51    1  -39   -40 LORA  SF7BW125  4/5  14.2  -525  -525
## 52    1  -46   -47 LORA  SF7BW125  4/5  14.2  -513  -513
## 53    1  -46   -47 LORA  SF7BW125  4/5  14.2  -513  -513
## 54    1 -107  -113 LORA SF10BW125  4/5  -6.5  1501  1501
## 55    1 -107  -113 LORA SF10BW125  4/5  -6.5  1501  1501
## 56    1  -48   -48 LORA  SF7BW125  4/5  14.0  -478  -478
## 57    1  -48   -48 LORA  SF7BW125  4/5  14.0  -478  -478
## 58    1 -108  -109 LORA SF10BW125  4/5   1.8  1766  1766
## 59    1 -108  -109 LORA SF10BW125  4/5   1.8  1766  1766
## 60    1 -104  -106 LORA SF10BW125  4/5   0.5  1617  1617
##                                                                        data
## 1                                          QLggIOCA3nRwzrtbwZU2UzasFXpWfyci
## 2                                          QLggIOCA3nRwzrtbwZU2UzasFXpWfyci
## 3                                          QLggIOCA33Ru7OB+9lI73M1wbpNmFdrz
## 4                                          QLggIOCA33Ru7OB+9lI73M1wbpNmFdrz
## 5                                          QLggIOCA6XRvSwCSdyeau4gVKkrC+BoC
## 6                                          QLggIOCA6XRvSwCSdyeau4gVKkrC+BoC
## 7                                                  QLggIOCA7HQAc5MqsY9QSrA=
## 8                                                  QLggIOCA7HQAc5MqsY9QSrA=
## 9                                          AAEBAAAAQUCoFeGEsWtBQKjqQQOT4Bs=
## 10                                         AAEBAAAAQUCoFeGEsWtBQKjqQQOT4Bs=
## 11 4FJJK+CmK0MndBns3sDlob/HRuck03dK5ADRXULZi0R//ZWk4vpLD5R5p6guwwnnsDVVtA==
## 12                                         QLggIOCA/HRwXNcL8rMQyGbXPpG9xuiU
## 13                                         QLggIOCA/nRvSRxvO11DcTNO2hpACugm
## 14                                         QLggIOCA/nRvSRxvO11DcTNO2hpACugm
## 15                                         QLggIOCAB3Vvbh8sXnXkUp/0dJP7JoMk
## 16                                         QLggIOCAB3Vvbh8sXnXkUp/0dJP7JoMk
## 17                                         QLggIOCAE3Vv5XWZWKfRRdFFTKlRjhw5
## 18                                         QLggIOCAE3Vv5XWZWKfRRdFFTKlRjhw5
## 19                                         QLggIOCAFXVuNwa3nfp6V+P8wq9l0VAH
## 20                                         QLggIOCAFXVuNwa3nfp6V+P8wq9l0VAH
## 21                                         QLggIOCAHXVwRQjQw8TV1I36cC6Rmg3k
## 22                                         QLggIOCAHXVwRQjQw8TV1I36cC6Rmg3k
## 23                                         QLggIOCAKHVuw2VIJU7cmqWOh7lv0yzG
## 24                                         QLggIOCAKHVuw2VIJU7cmqWOh7lv0yzG
## 25                                         QLggIOCANXVvbGjT+NEiXXuP8Awx1ON2
## 26                                         QLggIOCANXVvbGjT+NEiXXuP8Awx1ON2
## 27                                         QLggIOCAN3VuNtQ0evDK4VLXQkj0X4Se
## 28                                         QLggIOCAN3VuNtQ0evDK4VLXQkj0X4Se
## 29                                             gF90DCaAAAAC2uTCQk2lTAiFmi+e
## 30                                             gF90DCaAAAAC2uTCQk2lTAiFmi+e
## 31                                     gF90DCaFAQADBwbtCAJH+ytad8TvouVse0Y=
## 32                 QLggIOCAQXVky8g6vvZJwP33onT5CZSLZ9hdOhVNvxQWldm65j0sr+JX
## 33                 QLggIOCAQXVky8g6vvZJwP33onT5CZSLZ9hdOhVNvxQWldm65j0sr+JX
## 34                                         QLggIOCATnVviP1T5FwcFQvq86jBd0fc
## 35                                         QLggIOCAXXVv48Hh1tQTW9lJUVjJ80OR
## 36                                         QLggIOCAdHVuTetvGwjh8RsUUp7+zxil
## 37                                         QLggIOCAdHVuTetvGwjh8RsUUp7+zxil
## 38                                         QLggIOCAeHVvHaVD2QbH5sr6YUKkK6FJ
## 39                                         QLggIOCAeHVvHaVD2QbH5sr6YUKkK6FJ
## 40                                         QLggIOCAfHVwkqep8/wd0q2T4kVRtwii
## 41                                         QLggIOCAfHVwkqep8/wd0q2T4kVRtwii
## 42                                         QLggIOCAfnVvjRHn3Yqup739feKpqCQu
## 43                                         QLggIOCAfnVvjRHn3Yqup739feKpqCQu
## 44                                         QLggIOCAg3VuSTs8LYcssUFfw8RemTWu
## 45                                         QLggIOCAg3VuSTs8LYcssUFfw8RemTWu
## 46                                         QLggIOCAk3VvWvfwXZSUmiKkC44U0BFB
## 47                                         QLggIOCAlHVwpu0GTBT61Ufmj6Rgf9p8
## 48                                         QLggIOCAlHVwpu0GTBT61Ufmj6Rgf9p8
## 49                                         QLggIOCAonVvx4P+3M6EzLrZHVFPdQ5X
## 50                                         QLggIOCAonVvx4P+3M6EzLrZHVFPdQ5X
## 51                                             gF90DCaAAgACuNhDg6HcLUUWAY9M
## 52                                             gF90DCaAAgACuNhDg6HcLUUWAY9M
## 53                                             gF90DCaAAgACuNhDg6HcLUUWAY9M
## 54                                         QLggIOCAr3VwsOSqlvkzqzzv9LXZkVFZ
## 55                                         QLggIOCAr3VwsOSqlvkzqzzv9LXZkVFZ
## 56                                         gF90DCaCAwADBwKckHr/pL6CGuNWulM=
## 57                                         gF90DCaCAwADBwKckHr/pL6CGuNWulM=
## 58                                         QLggIOCAtXVw27NF8jdvKJH3mrcveLzh
## 59                                         QLggIOCAtXVw27NF8jdvKJH3mrcveLzh
## 60                                         QLggIOCAvXVvmRZt9j8phjp37ZjDy0m/
summary(df)
##    mote_id               jver        tmst               time          
##  Length:60          Min.   :1   Min.   :1.327e+08   Length:60         
##  Class :character   1st Qu.:1   1st Qu.:1.327e+09   Class :character  
##  Mode  :character   Median :1   Median :2.340e+09   Mode  :character  
##                     Mean   :1   Mean   :2.355e+09                     
##                     3rd Qu.:1   3rd Qu.:3.609e+09                     
##                     Max.   :1   Max.   :4.255e+09                     
##       chan            rfch           freq            mid         stat  
##  Min.   :0.000   Min.   :0.00   Min.   :903.9   Min.   :8   Min.   :1  
##  1st Qu.:1.000   1st Qu.:0.00   1st Qu.:904.1   1st Qu.:8   1st Qu.:1  
##  Median :3.000   Median :0.00   Median :904.5   Median :8   Median :1  
##  Mean   :3.267   Mean   :0.45   Mean   :904.6   Mean   :8   Mean   :1  
##  3rd Qu.:5.000   3rd Qu.:1.00   3rd Qu.:904.9   3rd Qu.:8   3rd Qu.:1  
##  Max.   :7.000   Max.   :1.00   Max.   :905.3   Max.   :8   Max.   :1  
##       rssi             rssis             modu               datr          
##  Min.   :-114.00   Min.   :-121.00   Length:60          Length:60         
##  1st Qu.:-109.00   1st Qu.:-111.00   Class :character   Class :character  
##  Median :-106.00   Median :-107.50   Mode  :character   Mode  :character  
##  Mean   : -96.03   Mean   : -98.45                                        
##  3rd Qu.:-102.00   3rd Qu.:-103.75                                        
##  Max.   : -37.00   Max.   : -38.00                                        
##      codr                lsnr              foff            size      
##  Length:60          Min.   :-12.800   Min.   :-1073   Min.   :-1073  
##  Class :character   1st Qu.: -1.125   1st Qu.: 1668   1st Qu.: 1668  
##  Mode  :character   Median :  1.500   Median : 2426   Median : 2426  
##                     Mean   :  2.392   Mean   : 2418   Mean   : 2418  
##                     3rd Qu.:  4.400   3rd Qu.: 3856   3rd Qu.: 3856  
##                     Max.   : 14.500   Max.   : 4633   Max.   : 4633  
##      data          
##  Length:60         
##  Class :character  
##  Mode  :character  
##                    
##                    
##