Files
spaceballoon/main.py

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