commit to present

This commit is contained in:
2015-11-12 23:14:03 -06:00
committed by Anthony Correa
parent c3e5ef5576
commit 6ad007f1d7
6 changed files with 160 additions and 79 deletions

View File

@@ -12,7 +12,7 @@ refresh system = 10
[camera settings]
low quality resolution = (320, 240)
low quality compression pct = 10
low quality compression pct = 7
high quality resolution = (2592,1944)
high quality compression pct = 100

View File

@@ -98,13 +98,20 @@ class Datalogger():
logger.info('item is {}'.format(type(item)))
filename = item[0]
file = base64.b64decode(bytes(item[1],'ascii'))
folder = os.path.join(self.photo_path, self._mt.mid)
file_path = os.path.join(self.photo_path, folder , filename)
if not os.path.exists(folder):
os.makedirs(folder)
with open(os.path.join(self.photo_path, filename), 'wb') as f:
f.write(file)
# file.save(os.path.join(self.photo_path, filename))
return 'success'
class Datareporter():
#Debug 2 sends from cell to server
from lib.sim900.inetgsm import SimInetGSM
def __init__(self,
@@ -262,21 +269,6 @@ class Record():
def _get_dict(self):
return self._transpondence
# def send(self):
# # self._transpondence['mid'] = m.name
# # self._transpondence['mt'] = m.now()
# # print ('Send transpondence {}'.format(self._transpondence))
#
# for k in self._transpondence.keys():
# if self._transpondence[k] is not str: #basically, check if image
# self._transpondence[k] = json.dumps(self._transpondence[k])
#
# r = self._send(message=self._transpondence, message_type='transpondence')
#
# #On error, do not clear transpondence
# if not r:
# self._transpondence = None

View File

@@ -50,7 +50,7 @@ class Camera:
self._cam.capture("temp_img_hi.jpg",
resize=self.high_quality_resolution,
quality=self.high_quality_compression_pct,
# **kwargs
**kwargs
)
with open("temp_img_hi.jpg", 'rb') as f:
# img_hi = base64.b64encode(f.read())
@@ -64,7 +64,7 @@ class Camera:
self._cam.capture("temp_img_lo.jpg",
resize=self.low_quality_resolution,
quality=self.low_quality_compression_pct,
# **kwargs
**kwargs
)
with open("temp_img_lo.jpg", 'rb') as f:
img_lo = str(base64.b64encode(f.read()),'ascii')
@@ -139,6 +139,56 @@ class Barometer:
return result
class Gps:
def __init__(self):
logger.debug("Intializing GPS")
# self.bmp = BMP085.BMP085()
logger.debug("Gps intilized")
pass
@property
def status (self):
return (0, "Barometer functioning properly")
@property
def temperature (self):
if self.status[0]:
return 'error'
temp = self.bmp.read_temperature()
return temp
@property
def pressure (self):
if (self.status[0]):
return 'error'
# press = 100000*random()
press = self.bmp.read_pressure()
return press
@property
def altitude (self):
if self.status[0]:
return 'error'
#TODO Set the altitude of your current location in meter
alt = self.bmp.read_altitude()
return alt
def read(self):
logger.debug("Reading from barometer")
#refresh each instrument
alt = self.altitude
press = self.pressure
temp = self.temperature
result = {"a":alt,
"t":temp,
"p":press,
}
logger.debug("Gps reads {}".format(result))
return result
# class Gps:

11
main.py
View File

@@ -40,9 +40,9 @@ mission = Mission()
#todo test cell connection
reporter = Datareporter (
missiontime = mission,
use_lan = False,
url = "http://spaceballoon-server.herokuapp.com",
server_port = 80,
use_lan = True,
url = "http://home.ascorrea.com",
server_port = 5010,
data_path = "upload-data",
image_path = "missions",
ping_path = "ping",
@@ -84,7 +84,7 @@ camera = Camera (low_quality_compression_pct=low_quality_compression_pct,
high_quality_compression_pct=high_quality_compression_pct,
high_quality_resolution=high_quality_resolution,
vflip=False,
hflip=True,
hflip=False,
exposure_mode='sports',
# debug=True
)
@@ -128,12 +128,9 @@ def submit_report():
# reporter.create_transpondence()
if not transpondence:
log.info("type of transpondence is {}".format(type(transpondence)))
transpondence = Record()
log.info("type of transpondence is {} and is {}".format(type(transpondence), transpondence))
if (counter % refresh_barometer_transmit) == 0:
log.info("type of transpondence is {} and is {}".format(type(transpondence), transpondence))
transpondence.add(bar,'b')
if (counter % refresh_camera_transmit) == 0:

View File

@@ -21,7 +21,7 @@ class Mission():
def now(self):
#returns a string
d=datetime.datetime.now()-self._zero
return str(d.total_seconds())
return d.total_seconds()
@property
def timezero(self):

146
test.py
View File

@@ -1,68 +1,110 @@
import csv, requests
from instruments import Camera
from datahandling import Datareporter
from system import System
import serial
import sys
__author__ = 'asc'
DEBUG = True
import logging
import base64
from requests_toolbelt import MultipartEncoder
from time import sleep
from logging import config
import logging.handlers,logging.config
config.fileConfig('logging.ini')
logging.getLogger("inetgsm")
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
data = {"temp":1,"press":3,"altitude":2,"cheetas":"just enough"}
logging.config.fileConfig('logging.ini')
pass
log = logging.getLogger(__name__)
# log = logging.basicConfig()
# log1 = logging.getLogger("instruments")
# log2 = logging.getLogger("datahandling")
# handler = logging.handlers.RotatingFileHandler('spaceballoon.log', backupCount=5)
com_port_name = "/dev/ttyAMA0"
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)
image = open("resized_image.jpg", 'rb')
image = image.read()
# image = image.read()
#start-up
#log denotes write to local, report denotes sending to server
# e=base64.b64encode(image)
#loadconfig
from config import *
# e=b'alksdjnfkljanslkjnaklsfnglkanlkfgnlakalksdjnaklsfnglkajnaklsfnglkanlkfgnlakalksdjnfkljanslkjnglkjnaklsfnglkanlkfgnlakalksdjnfkljanslkjnglknlkfgnlakalksdjnfkljanslkjnglkanlkfgnlakalksdjnfkljanngnlakalksdjnfkljanslkjnglkanlkfgnlakalksdjnfkljannlkanlkfgnlakalksdjnfkljannglkanlkfgnlakalksdjnfkljannglkanlkfgnlakalksdjnfkl=='
mission = Mission()
# m = MultipartEncoder(fields={'image': ('image', image, 'image/jpeg')})
report = Datareporter (
# use_lan = True,
url = "http://home.ascorrea.com",
#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 = "upload-file",
image_path = "missions",
ping_path = "ping",
com_port_name="/dev/ttyAMA0",
ping_path="ping",
baud_rate = 9600)
baud_rate = 9600
)
# camera = Camera (low_quality_compression_pct=10,
# low_quality_resolution=(320, 240),
# high_quality_compression_pct=100,
# high_quality_resolution=(2592,1944),
# vflip=True,
# hflip=True,
# # exposure_mode='sports'
# )
# print (report.check())
# print (image)
# report.send(m.to_string(), message_type="image")
# report.send(data, message_type="data")
# img = camera.capture()
# report.send(img.get('lo'), message_type="image")
# report.send(image, message_type="image")
#intiate mission
# execfile("test_sms.py")
for i in range(1,10):
print (i)
report.send(image,message_type="image")
sleep(1)
#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
)
pass
#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