no message

This commit is contained in:
2015-11-18 20:35:00 -06:00
committed by Anthony Correa
parent 1a54d31f3a
commit 225a39161c
5 changed files with 117 additions and 76 deletions

88
main.py
View File

@@ -6,29 +6,25 @@ import logging.handlers,logging.config
from instruments import Barometer, Camera
from datahandling import Datalogger, Datareporter
from system import System as System
import threading
from threading import Timer
from datahandling import Record
from mission import Mission
import random
import string
# class ContextFilter(logging.Filter):
# """
# This is a filter which injects contextual information into the log.
# """
# def filter(self, record):
# record.MYVAR = MYVAR
# return True
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)
log = logging.getLogger('root')
log.addFilter(logging.Filter('root'))
# log.addFilter(ContextFilter())
#start-up
#log denotes write to local, report denotes sending to server
@@ -41,13 +37,13 @@ mission = Mission()
reporter = Datareporter (
missiontime = mission,
use_lan = True,
url = "http://home.ascorrea.com",
url = url,
server_port = 5010,
data_path = "upload-data",
image_path = "missions",
ping_path = "ping",
com_port_name="/dev/ttyAMA0",
baud_rate = 9600
data_path = data_path,
image_path = image_path,
ping_path = ping_path,
com_port_name=com_port_name,
baud_rate = baud_rate
)
t = Record({'zt':mission.timezero})
@@ -61,15 +57,15 @@ notebook = Datalogger (
log_path=log_path,
photo_path=photo_path)
log.debug ("System started")
log.debug ("System started", extra={'MISSION_TIME': "", 'MISSION_ID':""})
#system check
system = System()
log.debug (system.stats)
log.debug (system.stats, extra={'MISSION_TIME': "", 'MISSION_ID':""})
#set mission time
log.info("Mission {} started, time zero is {}".format(mission.name, mission.timezero))
log.info("Mission {} started, time zero is {}".format(mission.name, mission.timezero), extra={'MISSION_TIME': mission.now(), 'MISSION_ID':mission.name})
#intiate mission
@@ -86,37 +82,55 @@ camera = Camera (low_quality_compression_pct=low_quality_compression_pct,
vflip=False,
hflip=False,
exposure_mode='sports',
# debug=True
debug=True
)
#todo test barometer
barometer = Barometer()
barometer = Barometer(debug=True)
#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 ()
class scheduler ():
worker_func ()
def __init__(self, interval, function, *args, **kwargs):
self._timer = None
self.interval = interval
self.function = function
self.args = args
self.kwargs = kwargs
self.is_running = False
self.start()
def _run(self):
self.is_running = False
self.start()
self.function(*self.args, **self.kwargs)
def start(self):
if not self.is_running:
self._timer = Timer(self.interval, self._run)
self._timer.start()
self.is_running = True
def stop(self):
self._timer.cancel()
self.is_running = False
def update_barometer_local():
global bar
bar = barometer.read()
bar.update({'mt':mission.now()})
record = Record(bar.copy(),'b')
log.info('Updating barometer...',extra={'MISSION_TIME': mission.now(), 'MISSION_ID':mission.name})
notebook.log(record)
def update_image_local():
global img
img = camera.capture(name=mission.now())
record = Record([img.get('hi'), img.get('lo')], 'i')
log.info('Updating image...', extra={'MISSION_TIME': mission.now(), 'MISSION_ID':mission.name})
notebook.log(record)
def submit_report():
@@ -128,17 +142,21 @@ def submit_report():
# reporter.create_transpondence()
if not transpondence:
log.info('Creating transpondence',extra={'MISSION_TIME': mission.now(), 'MISSION_ID':mission.name})
transpondence = Record()
if (counter % refresh_barometer_transmit) == 0:
log.info('Adding barometer data to transpondence',extra={'MISSION_TIME': mission.now(), 'MISSION_ID':mission.name})
transpondence.add(bar,'b')
if (counter % refresh_camera_transmit) == 0:
log.info('Adding image to transpondence',extra={'MISSION_TIME': mission.now(), 'MISSION_ID':mission.name})
transpondence.add(img.get('lo'),'i')
log.info('Sending transpondence', extra={'MISSION_TIME': mission.now(), 'MISSION_ID':mission.name})
transpondence = reporter.send(transpondence) #returns none on success, (bad practice?)
counter += 1
log.info('Counter = {}'.format(counter))
log.debug('Counter = {}'.format(counter), extra={'MISSION_TIME': mission.now(), 'MISSION_ID':mission.name})
counter=1