mirror of
https://github.com/loradar/loradar_tool.git
synced 2026-03-28 17:43:00 +01:00
Create LogReader.py
This commit is contained in:
70
Configuration 3 (Kerlink Wirnet Station)/LogReader.py
Normal file
70
Configuration 3 (Kerlink Wirnet Station)/LogReader.py
Normal file
@@ -0,0 +1,70 @@
|
||||
#Please update 'GatewayID' to unique ID of the LoRa gateway
|
||||
GatewayID='0'
|
||||
import csv
|
||||
from base64 import b64decode
|
||||
from textwrap import wrap
|
||||
import os
|
||||
import glob
|
||||
NumFiles = len(glob.glob1('',"*.log'"))
|
||||
for numberrand in range(NumFiles):
|
||||
#print(numberrand)
|
||||
qwe=str(numberrand)
|
||||
filename="'LoRaMacServer ("+qwe+").log'"
|
||||
if numberrand==0:
|
||||
filename="'LoRaMacServer.log'"
|
||||
f = open(filename)
|
||||
i=0
|
||||
for each in f:
|
||||
each=each.split(' ')
|
||||
if len(each)>7 and each[7]=="JSON" and each[10][2:6]=="rxpk":
|
||||
i+=1
|
||||
month=['te','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']
|
||||
UTC_timestamp=each[6][:-1]+"-"+str(month.index(each[5]))+"-"+each[4]+" "+each[0]+"."+each[2]
|
||||
data=each[10][10:-5].split(",")
|
||||
for item in range(len(data)):
|
||||
data[item]=data[item].split(":")
|
||||
for item,value in data:
|
||||
if item=='"tmst"':
|
||||
us_count=value
|
||||
elif item=='"chan"':
|
||||
RX_chain=value
|
||||
elif item=='"rfch"':
|
||||
RF_chain=value
|
||||
elif item=='"freq"':
|
||||
frequency=str(float(value)*1000000)
|
||||
elif item=='"stat"':
|
||||
status=["CRC_BAD","CRC_OK"][int(value)]
|
||||
elif item=='"modu"':
|
||||
modulation=value[1:-1]
|
||||
elif item=='"datr"':
|
||||
tempdr=value[1:-1]
|
||||
tempdr2=tempdr.find('BW')
|
||||
datarate=tempdr[:tempdr2]
|
||||
bandwidth=tempdr[tempdr2+2:]+"000"
|
||||
elif item=='"codr"':
|
||||
coderate=value[1:-1] #there might be a problem here
|
||||
elif item=='"lsnr"':
|
||||
SNR=value
|
||||
elif item=='"rssi"':
|
||||
RSSI=value
|
||||
elif item=='"size"':
|
||||
size=value
|
||||
elif item=='"data"':
|
||||
pdataa=value[1:]
|
||||
pdataa="aaaa"+pdataa
|
||||
pdataaa=(str(hex(int.from_bytes(b64decode(pdataa), 'big')))[2:]).upper()
|
||||
pdata='-'.join(wrap(pdataaa[6:], 8))
|
||||
with open(r'data.csv', 'a', newline='') as csvfile:
|
||||
fieldnames = ['gateway ID','node MAC','UTC timestamp','us count','frequency','RF chain','RX chain','status','size','modulation','bandwidth','datarate','coderate','RSSI','SNR','payload']
|
||||
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
|
||||
writer.writerow({'gateway ID':GatewayID,'node MAC':'0','UTC timestamp':UTC_timestamp,'us count':us_count,'frequency':frequency,'RF chain':RF_chain,'RX chain':RX_chain,'status':status,'size':size,'modulation':modulation,'bandwidth':bandwidth,'datarate':datarate,'coderate':coderate,'RSSI':RSSI,'SNR':SNR,'payload':pdata})
|
||||
from more_itertools import unique_everseen
|
||||
with open('data.csv','r') as f, open('Packets.csv','w') as out_file:
|
||||
out_file.writelines(unique_everseen(f))
|
||||
os.remove("data.csv")
|
||||
with open('Packets.csv','r') as contents:
|
||||
save = contents.read()
|
||||
with open('Packets.csv','w') as contents:
|
||||
contents.write('gateway ID,node MAC,UTC timestamp,us count,frequency,RF chain,RX chain,status,size,modulation,bandwidth,datarate,coderate,RSSI,SNR,payload'+'\n')
|
||||
with open('Packets.csv','a') as contents:
|
||||
contents.write(save)
|
||||
Reference in New Issue
Block a user