Objective:
Derive various metrics from LoRaWAN Gateway Logs
Discussion:
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
##
##
##