__author__ = 'asc' DEBUG = True import logging if DEBUG: from instruments import Barometer_Debug2 as Barometer from instruments import Camera_Debug2 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 import configparser # logging.basicConfig(level=logging.DEBUG, format=("%(asctime)s - %(name)s - %(levelname)s - %(message)s")) # log = logging.getLogger("instruments") # log.setLevel(logging.DEBUG) # log. # # log.setFo log = logging.getLogger("instruments") handler = logging.StreamHandler() formatter = logging.Formatter('%(asctime)-15s %(name)-5s %(levelname)-8s %(message)s') handler.setFormatter(formatter) log.addHandler(handler) log.setLevel(logging.DEBUG) #start-up #log denotes write to local, report denotes sending to server #TODO startup message #loadconfig config = configparser.ConfigParser() config.sections() config.read('config.ini') refresh_camera_local = float(config['refresh rates']['refresh camera local']) refresh_camera_transmit = float(config['refresh rates']['refresh camera transmit']) refresh_barometer_local = float(config['refresh rates']['refresh barometer local']) refresh_barometer_transmit = float(config['refresh rates']['refresh barometer transmit']) refresh_gps_local = float(config['refresh rates']['refresh gps local']) refresh_gps_transmit = float(config['refresh rates']['refresh gps transmit']) low_quality_resolution = eval(config['camera settings']['low quality resolution']) low_quality_compression_pct = int(config['camera settings']['low quality compression pct']) report_url = config['report settings']['report url'] report_image_url = config['report settings']['report image url'] com_port_name = config['modem settings']['com port name'] baud_rate = config['modem settings']['baud rate'] logger = Datalogger () log.debug ("System started") # 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 (low_quality_compression_pct=low_quality_compression_pct, low_quality_resolution=low_quality_resolution) camera_status = camera.status #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 #todo check for errors, throw exception if error if(system_status[0] or reporter_status[0] or camera_status[0]): raise Exception ('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 () #while 1: image = camera.capture() data = barometer.read() # logger.log(image.get('hi'), type='image') # logger.log(barometer, type='data') reporter.send(image.get('lo'), type='data') reporter.send(barometer, type = 'data') #todo break apart log and report refresh # scheduler(refresh_barometer_local, update_barometer, 2) # scheduler(refresh_camera_local, update_camera, 2) pass