128 lines
3.0 KiB
Python
128 lines
3.0 KiB
Python
__author__ = 'asc'
|
|
DEBUG = True
|
|
|
|
if DEBUG:
|
|
from instruments import Barometer_Debug as Barometer
|
|
from instruments import Camera_Debug as Camera
|
|
from datahandling import Datalogger_Debug as Datalogger
|
|
from datahandling import Datareporter_Debug2 as Datareporter
|
|
from system import System_Debug as System
|
|
import threading
|
|
import datetime
|
|
|
|
# else:
|
|
# from instruments import Barometer, Camera
|
|
# from datahandling import Datalogger, Datareporter
|
|
# from system import System
|
|
# import threading
|
|
|
|
#start-up
|
|
#log denotes write to local, report denotes sending to server
|
|
|
|
#TODO startup message
|
|
|
|
logger = Datalogger ()
|
|
logger.log ("System Startup")
|
|
logger.log("Log Intiated")
|
|
|
|
#system check
|
|
system = System()
|
|
system_status = system.status
|
|
|
|
logger.log (system_status[1])
|
|
|
|
#todo test cell connection, log, report
|
|
reporter = Datareporter()
|
|
reporter_status = reporter.status
|
|
|
|
logger.log (reporter_status[1])
|
|
reporter.send(reporter_status[1])
|
|
reporter.send(system_status[1])
|
|
|
|
#TODO test camera, log, report
|
|
camera = Camera ()
|
|
camera_status = camera.status
|
|
logger.log (camera_status[1])
|
|
reporter.send(camera_status[1])
|
|
|
|
#todo test barometer, log, report
|
|
barometer = Barometer()
|
|
barometer_status = barometer.status
|
|
logger.log (barometer_status[1])
|
|
reporter.send(barometer_status[1])
|
|
|
|
#todo test GPS, log, report
|
|
|
|
#check for errors, throw exception if error
|
|
if(system_status[0] or reporter_status[0] or camera_status[0]):
|
|
raise Exception ('Error')
|
|
|
|
if DEBUG:
|
|
#rate refresh hi-res camera images, saved locally, in seconds
|
|
refresh_camera_local = 2
|
|
refresh_camera_transmit = 5
|
|
|
|
refresh_barometer_local = 1
|
|
refresh_barometer_transmit = 5
|
|
|
|
refresh_gps_local = 2
|
|
refresh_gps_transmit = 5
|
|
|
|
else:
|
|
refresh_camera_local = 10
|
|
refresh_camera_transmit= 60
|
|
|
|
refresh_barometer_local = 10
|
|
refresh_barometer_transmit= 60
|
|
|
|
refresh_gps_local = 10
|
|
refresh_gps_transmit= 60
|
|
|
|
def update_barometer():
|
|
#refresh each instrument
|
|
alt = barometer.altitude
|
|
press = barometer.pressure
|
|
temp = barometer.temperature
|
|
|
|
#log instrument info
|
|
logger.log({"altitude":alt,
|
|
"temperature":temp,
|
|
"pressure":press,
|
|
"sent":datetime.datetime.now()
|
|
})
|
|
|
|
#report instrument info
|
|
reporter.send({"altitude":alt,
|
|
"temperature": temp,
|
|
"pressure":press,
|
|
"sent":datetime.datetime.now()
|
|
},type="data")
|
|
|
|
|
|
|
|
def update_camera():
|
|
image = camera.capture()
|
|
#log image
|
|
logger.log(image.get('file'), type="image")
|
|
#report image
|
|
reporter.send(image.get('file'), type="image")
|
|
pass
|
|
|
|
def scheduler (interval, worker_func, iterations = 0):
|
|
if iterations != 1:
|
|
threading.Timer (
|
|
interval,
|
|
scheduler, [interval, worker_func, 0 if iterations == 0 else iterations-1]
|
|
).start ()
|
|
|
|
worker_func ()
|
|
|
|
#while 1:
|
|
|
|
update_camera()
|
|
#todo break apart log and report refresh
|
|
scheduler(refresh_barometer_local, update_barometer, 20)
|
|
scheduler(refresh_camera_local, update_camera, 1)
|
|
|
|
pass
|