2021-01-10 03:28:45 +00:00
#!/usr/bin/env python
#
# Project Horus - Log read operations
#
# Copyright (C) 2019 Mark Jessop <vk5qi@rfhead.net>
# Released under GNU GPL v3 or later
#
import datetime
import json
import logging
import os
import pytz
import time
2021-01-16 04:48:27 +00:00
# from datetime import datetime
from dateutil . parser import parse
2021-01-10 03:28:45 +00:00
def read_file ( filename ) :
""" Read log file, and output an array of dicts. """
_output = [ ]
2021-01-16 04:48:27 +00:00
_f = open ( filename , " r " )
2021-01-10 03:28:45 +00:00
for _line in _f :
try :
_data = json . loads ( _line )
_output . append ( _data )
except Exception as e :
logging . debug ( " Error reading line: %s " % str ( e ) )
2021-01-16 04:48:27 +00:00
if len ( _output ) != 0 :
2021-01-10 03:28:45 +00:00
logging . info ( " Read %d log entries from %s " % ( len ( _output ) , filename ) )
return _output
2021-01-10 05:29:00 +00:00
def read_last_balloon_telemetry ( ) :
2021-01-16 04:48:27 +00:00
""" Read last balloon telemetry. Need to work back from last file to find balloon telemetry and read the last entry - don ' t return until whole file scanned
2021-01-10 03:28:45 +00:00
"""
2021-01-16 04:48:27 +00:00
_lasttelemetry = [ ]
dirs = sorted (
os . listdir ( " ./log_files " ) , reverse = True
) # Generate a reverse sorted list - will have to look through to find last log_file with telemetry
for file in dirs :
if file . endswith ( " .log " ) :
telemetry_found = False
try :
log = read_file ( " ./log_files/ " + file )
except Exception as e :
logging . debug ( " Error reading file - maybe in use: %s " % str ( e ) )
for _entry in log :
if _entry [ " log_type " ] == " BALLOON TELEMETRY " :
telemetry_found = True
_last_telemetry = _entry
2021-04-10 01:20:00 +00:00
2021-01-16 04:48:27 +00:00
if telemetry_found == True :
_last_telemetry [ " time_dt " ] = parse ( _last_telemetry . pop ( " time " ) )
return _last_telemetry