__author__ = 'asc' DEBUG = True import logging import logging.handlers,logging.config from instruments import Barometer, Camera from datahandling import Datalogger, Datareporter from system import System as System import threading from datahandling import Record from mission import Mission import random import string logging.config.fileConfig('logging.ini') log = logging.getLogger(__name__) # log = logging.basicConfig() # log1 = logging.getLogger("instruments") # log2 = logging.getLogger("datahandling") # handler = logging.handlers.RotatingFileHandler('spaceballoon.log', backupCount=5) formatter = logging.Formatter('[%(asctime)-25s] %(name)-15s %(levelname)-8s %(message)s') # handler.setFormatter(formatter) # log.addHandler(handler) # log1.addHandler(handler) # log2.addHandler(handler) log.setLevel(logging.DEBUG) # log1.setLevel(logging.DEBUG) # log2.setLevel(logging.INFO) #start-up #log denotes write to local, report denotes sending to server #loadconfig from config import * mission = Mission() #todo test cell connection reporter = Datareporter ( missiontime = mission, use_lan = True, url = "http://10.0.1.4", server_port = 5010, data_path = "upload-data", image_path = "missions", ping_path = "ping", com_port_name="/dev/ttyAMA0", baud_rate = 9600 ) #intiate mission #TODO test camera camera = Camera (low_quality_compression_pct=low_quality_compression_pct, low_quality_resolution=low_quality_resolution, high_quality_compression_pct=high_quality_compression_pct, high_quality_resolution=high_quality_resolution, vflip=False, hflip=False, exposure_mode='sports', # debug=True ) #todo test barometer barometer = Barometer() #todo test GPS, log, report #todo check for errors, throw exception if error 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 () def update_barometer_local(): global bar bar = barometer.read() bar.update({'mt':mission.now()}) record = Record(bar.copy(),'b') # notebook.log(record) def update_image_local(): global img img = camera.capture(name=mission.now(), thumbnail=None) record = Record([img.get('hi'), img.get('lo')], 'i') # notebook.log(record) transpondence = Record() update_image_local() transpondence.add(img.get('lo'),'i') transpondence = reporter.send(transpondence) #returns none on success, (bad practice?) counter=1 img = None bar = None transpondence = None pass