From f29e10cb3b1aa6d7d767053340c0967cc41ffcce Mon Sep 17 00:00:00 2001 From: loradar <56890699+loradar@users.noreply.github.com> Date: Thu, 11 Jun 2020 17:26:25 +1000 Subject: [PATCH] Create LogReader.py --- .../LogReader.py | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 Configuration 3 (Kerlink Wirnet Station)/LogReader.py diff --git a/Configuration 3 (Kerlink Wirnet Station)/LogReader.py b/Configuration 3 (Kerlink Wirnet Station)/LogReader.py new file mode 100644 index 0000000..5bb12cd --- /dev/null +++ b/Configuration 3 (Kerlink Wirnet Station)/LogReader.py @@ -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)