Conflicts:
	app/plot.py
	app/views.py
This commit is contained in:
Bernhard Stampfer
2016-07-07 18:30:26 +02:00
20 changed files with 278 additions and 62 deletions

View File

@@ -52,10 +52,11 @@ def get_user(u):
u.password=row[2] u.password=row[2]
u.longname=row[3] u.longname=row[3]
u.email=row[4] u.email=row[4]
u.isblack=row[6] u.isblack=row[5]
u.isbaron=row[7] u.isbaron=row[6]
u.isshown=row[8] u.isshown=row[7]
u.autoblack=row[9] u.autoblack=row[8]
u.onlyrfid=row[9]
u.rfid_id = get_rfid_ids_by_userid(u.id) u.rfid_id = get_rfid_ids_by_userid(u.id)
logging.info(u) logging.info(u)
return u return u
@@ -70,10 +71,11 @@ def get_user_by_name(name):
u.password=row[2] u.password=row[2]
u.longname=row[3] u.longname=row[3]
u.email=row[4] u.email=row[4]
u.isblack=row[6] u.isblack=row[5]
u.isbaron=row[7] u.isbaron=row[6]
u.isshown=row[8] u.isshown=row[7]
u.autoblack=row[9] u.autoblack=row[8]
u.onlyrfid=row[9]
logging.debug(u) logging.debug(u)
u.rfid_id = get_rfid_ids_by_userid(u.id) u.rfid_id = get_rfid_ids_by_userid(u.id)
return u return u
@@ -88,10 +90,11 @@ def get_user_by_id(id):
u.password=row[2] u.password=row[2]
u.longname=row[3] u.longname=row[3]
u.email=row[4] u.email=row[4]
u.isblack=row[6] u.isblack=row[5]
u.isbaron=row[7] u.isbaron=row[6]
u.isshown=row[8] u.isshown=row[7]
u.autoblack=row[9] u.autoblack=row[8]
u.onlyrfid=row[9]
u.rfid_id = get_rfid_ids_by_userid(u.id) u.rfid_id = get_rfid_ids_by_userid(u.id)
logging.debug(u) logging.debug(u)
return u return u
@@ -114,10 +117,11 @@ def get_users():
u.password=row[2] u.password=row[2]
u.longname=row[3] u.longname=row[3]
u.email=row[4] u.email=row[4]
u.isblack=row[6] u.isblack=row[5]
u.isbaron=row[7] u.isbaron=row[6]
u.isshown=row[8] u.isshown=row[7]
u.autoblack=row[9] u.autoblack=row[8]
u.onlyrfid=row[9]
u.rfid_id = get_rfid_ids_by_userid(u.id) u.rfid_id = get_rfid_ids_by_userid(u.id)
users.append(u) users.append(u)
return users return users
@@ -155,7 +159,7 @@ def add_rfid_id(rfid_id, userid):
def update_user(u): def update_user(u):
#query_db("UPDATE users SET (NAME, LONGNAME, EMAIL, RFID_ID, ISBLACK, ISBARON, ISSHOWN) VALUES (?, ?, ?, ?, ?, ?, ?) WHERE ID=?", (u.name, u.longname, u.email, u.rfid_id, u.isblack, u.isbaron, u.isshown, u.id)) #query_db("UPDATE users SET (NAME, LONGNAME, EMAIL, RFID_ID, ISBLACK, ISBARON, ISSHOWN) VALUES (?, ?, ?, ?, ?, ?, ?) WHERE ID=?", (u.name, u.longname, u.email, u.rfid_id, u.isblack, u.isbaron, u.isshown, u.id))
query_db("UPDATE users SET NAME=?, LONGNAME=?, EMAIL=?, ISBLACK=?, ISBARON=?, ISSHOWN=?, AUTOBLACK=? WHERE ID=?", (u.name, u.longname, u.email, u.isblack, u.isbaron, u.isshown, u.autoblack, u.id)) query_db("UPDATE users SET NAME=?, LONGNAME=?, EMAIL=?, ISBLACK=?, ISBARON=?, ISSHOWN=?, AUTOBLACK=?, ONLYRFID=? WHERE ID=?", (u.name, u.longname, u.email, u.isblack, u.isbaron, u.isshown, u.autoblack, u.onlyrfid ,u.id))
set_rfid_to_userid(u.rfid_id, u.id) set_rfid_to_userid(u.rfid_id, u.id)
get_db().commit() get_db().commit()

132
app/datalog.py Normal file
View File

@@ -0,0 +1,132 @@
import numpy as np
import datetime as dt
import pandas as pa
import time
#import ipdb
import signal
import thread
import logging
import atexit
import settings
import os
# i2c io pins
P_SCK = 3
P_SDA = 2
P_BAUD = 50000
# sensor data
SENSOR_BASEID = 0x48
SENSOR_DATALEN = 2
# i2c commands for pigpio software i2c
I2C_END = 0
I2C_START = 2
I2C_STOP = 3
I2C_SET_ADDR = 4
I2C_READ = 6
if settings.settings.fridgeLogging:
try:
import pigpio
except:
logging.fatal("PIGPIO library could not be loaded, install PIGPIO to read sensor data or disable data logging in the settings!")
exit()
class DataLogger:
def __init__(self):
self.ioif = None
self.logging = True
signal.signal(signal.SIGINT, self.cleanup)
logging.info("Data Logger created")
thread.start_new_thread(self.log_data, ())
#self.log_data()
def log_data(self):
# pigpio
self.ioif = pigpio.pi()
# software i2c
try:
self.ioif.bb_i2c_open(P_SDA, P_SCK, P_BAUD)
except:
logging.error("bus already open")
self.ioif.bb_i2c_close(P_SDA)
self.ioif.bb_i2c_open(P_SDA, P_SCK, P_BAUD)
logging.info("Data Logger started")
log = 0
data_fast = np.zeros(8)
data_perm = np.zeros(8)
n_fast = 1
n_perm = 1
while logging:
logging.info("Data Logger logging")
columns = list(("time", ))
for i in range(SENSOR_BASEID, SENSOR_BASEID + 8):
(count, data) = self.ioif.bb_i2c_zip(P_SDA, [I2C_SET_ADDR, i, I2C_START, I2C_READ, SENSOR_DATALEN, I2C_STOP, I2C_END])
columns.append(str(i))
if count > 1:
sign = 1
if data[0] > 128:
print "sign"
data[0] = data[0]-128
sign = -1
data_fast[i-SENSOR_BASEID] += sign * (int(data[0]) + (int(data[1]) / 256.0))
data_perm[i-SENSOR_BASEID] += sign * (int(data[0]) + (int(data[1]) / 256.0))
else:
data_fast[i-SENSOR_BASEID] = np.nan
data_perm[i-SENSOR_BASEID] = np.nan
time.sleep(0.05)
infoline = np.empty((1, 9), dtype=object)
if n_fast % 10 == 0:
infoline[0, 1:9] = data_fast[0:8] / n_fast
n_fast = 0
infoline[0, 0] = dt.datetime.now()
pdataline = pa.DataFrame.from_records(infoline, columns=columns)
self.savetofile(False, pdataline)
data_fast = np.zeros(8)
if n_perm % 100 == 0:
infoline[0, 1:9] = data_perm[0:8] / n_perm
n_perm = 0
infoline[0, 0] = dt.datetime.now()
pdataline = pa.DataFrame.from_records(infoline, columns=columns)
self.savetofile(True, pdataline)
data_perm = np.zeros(8)
n_fast += 1
n_perm += 1
def savetofile(self, permanent, data):
if permanent:
date = dt.datetime.now().strftime('%Y%m%d')
exists = os.path.isfile('app/static/logdata_' + date + '.csv')
with open('app/static/logdata_' + date + '.csv', 'a+') as f:
data.to_csv(f, header=not exists, index=False)
else:
exists = os.path.isfile('/tmp/baroness_logdata_fast.csv')
with open('/tmp/baroness_logdata_fast.csv', 'a+') as f:
data.to_csv(f, header=not exists, index=False)
def cleanup(self):
self.logging = False
logging.info("Data logger closed")
self.ioif.bb_i2c_close(P_SDA)
if __name__ == "__main__":
#for standalone mode
print "creating datalogger"
logger = DataLogger()
while(1):
time.sleep(1)

View File

@@ -231,7 +231,7 @@ class PanelUsers (wx.Panel):
users = get_users() users = get_users()
names = list() names = list()
for user in users: for user in users:
if user.isshown: if user.isshown and not user.onlyrfid:
names.append(user.longname) names.append(user.longname)
self.but_names = list() self.but_names = list()

View File

@@ -1,15 +1,60 @@
#import matplotlib #speed? import matplotlib #speed?
#matplotlib.use('GTKAgg') matplotlib.use('TkAgg')
from matplotlib import pyplot as plt from matplotlib import pyplot as plt
from matplotlib import units from matplotlib import units
from matplotlib import patheffects
from matplotlib.dates import WeekdayLocator, DayLocator, HourLocator, DateFormatter, drange, MONDAY from matplotlib.dates import WeekdayLocator, DayLocator, HourLocator, DateFormatter, drange, MONDAY
from matplotlib import rcParams as rcp
import numpy as np import numpy as np
from user import User from user import User
from database import * from database import *
import multiprocessing as mp import multiprocessing as mp
import thread
import pandas as pd import pandas as pd
import logging import logging
import time
import glob
class Plotter:
def __init__(self):
logging.info("Plotter started!")
self.joblist = list()
self.active = True
thread.start_new_thread(self.refresh, ())
def refresh(self):
ptime = 0
while self.active:
logging.info("Plotter plotting stuff")
logfiles = list()
logfiles += glob.glob("app/static/logdata*.csv")
logfiles.append("/tmp/baroness_logdata_fast.csv")
print logfiles
if logfiles:
plot_log(logfiles, hours = 4)
# plotter not fully integrated yet
#if ptime % 30 or self.joblist:
# plot_total()
# plot_list(4)
# for u in self.joblist:
# plot_total(u)
# self.joblist = list()
ptime += 1
time.sleep(10)
def addplot(self, user):
logging.info("Plotter add user " + user.name)
self.joblist.append(user)
def stop(self):
logging.info("Plotter stop!")
self.active = False
def plot_all_thread(user=None): def plot_all_thread(user=None):
if user is not None: if user is not None:
@@ -93,31 +138,25 @@ def plot_total(user=None):
fils = "app/static/total%03d.png" % user.id fils = "app/static/total%03d.png" % user.id
fill = "app/static/total%03d_big.png" % user.id fill = "app/static/total%03d_big.png" % user.id
plt.title(tit) plt.title(tit)
logging.info("plot plot_total " + str(datetime.datetime.now())) logging.info("Plot plot_total " + str(datetime.datetime.now()))
#480x320 #480x320
fig.set_size_inches(4.8, 3.2) fig.set_size_inches(4.8, 3.2)
plt.savefig(fils, dpi=100) plt.savefig(fils, dpi=100)
logging.info("end plot_total " + str(datetime.datetime.now())) logging.info("Plot: End plot_total " + str(datetime.datetime.now()))
#fig.set_size_inches(4.8, 3.2) #fig.set_size_inches(4.8, 3.2)
#plt.savefig(fill, dpi=400) #plt.savefig(fill, dpi=400)
def plot_log(days, logfiles): def plot_log(logfiles, hours):
today = datetime.date.today() end = datetime.datetime.now()
delta = datetime.timedelta(days=1) begin = end - datetime.timedelta(hours=hours)
begin = today - datetime.timedelta(days=days)
dates = drange(begin, today + delta, delta)
#print begin
#print today
#print dates
#load all logfiles #load all logfiles
data = None data = None
for logfile in logfiles: for logfile in logfiles:
try: try:
d = pd.read_csv(logfile, parse_dates=[0]) d = pd.read_csv(logfile, parse_dates=[0])
if data: if data is not None:
data = pd.concat((data, d)) data = pd.concat((data, d))
else: else:
data = d data = d
@@ -126,53 +165,60 @@ def plot_log(days, logfiles):
return 0 return 0
#ipdb.set_trace() #ipdb.set_trace()
data = data.sort('time')
data = data[data.time > begin]
data = data.set_index(pd.DatetimeIndex(data.time)) data = data.set_index(pd.DatetimeIndex(data.time))
data = data.drop("time", axis=1) data = data.drop("time", axis=1)
#ipdb.set_trace() #ipdb.set_trace()
plt.xkcd() plt.xkcd()
rcp['path.effects'] = [patheffects.withStroke(linewidth=0)]
#all columns #all columns
for item, frame in data.iteritems(): for item, frame in data.iteritems():
if frame is None or frame.empty or frame.isnull().values.all():
continue
f = plt.figure() f = plt.figure()
#f.patch.set_facecolor("#ccefff") #f.patch.set_facecolor("#ccefff")
#f.patch.set_alpha("0.0") #f.patch.set_alpha("0.0")
logging.debug("column " + str(item) + " " + frame.name) logging.debug("column " + str(item) + " " + frame.name)
plt.plot(data.index.to_pydatetime(), frame, "b") plt.plot(data.index.to_pydatetime(), frame)#"b"
ax = plt.gca() ax = plt.gca()
#ax.grid(True, linewidth=1.0) #ax.grid(True, linewidth=1.0)
plt.xlim(begin, datetime.datetime.now()) #plt.xlim(begin, end)
ax.spines['right'].set_visible(False) #ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False) #ax.spines['top'].set_visible(False)
ax.yaxis.set_ticks_position('none')#('left') ax.yaxis.set_ticks_position('none')#('left')
ax.xaxis.set_ticks_position('none')#('bottom') ax.xaxis.set_ticks_position('none')#('bottom')
f.autofmt_xdate() try: #might not work if few data available
f.autofmt_xdate()
#plt.tick_params(which='minor', length=4) #plt.tick_params(which='minor', length=4)
#plt.tick_params(which='major', length=5) #plt.tick_params(which='major', length=5)
#ipdb.set_trace() #ipdb.set_trace()
ax.fmt_xdata = DateFormatter('%d.%m') #ax.fmt_xdata = AutoDateFormatter('%d.%m/%H')
#ax.xaxis.set_major_locator(WeekdayLocator(MONDAY)) #ax.xaxis.set_major_locator(WeekdayLocator(MONDAY))
#ax.xaxis.set_major_locator(DayLocator()) ax.xaxis.set_major_locator(AutoDateLocator())
ax.xaxis.set_major_formatter(DateFormatter('%d.%m')) ax.xaxis.set_major_formatter(AutoDateFormatter(defaultfmt='%d.%m'))
#f.autofmt_xdate()
except:
logging.warning("Plot: Few data!")
#plt.xlabel('Datum') #plt.xlabel('Datum')
#plt.ylabel('Temperatur / C') #plt.ylabel('Temperatur / C')
outfile = "app/static/log_" + str(item) + ".png" outfile = "app/static/log_" + str(item) + ".png"
logging.info("plot plot_total " + str(datetime.datetime.now())) logging.info("Plot plot_log " + str(datetime.datetime.now()))
#480x320 #480x320
plt.gcf().set_size_inches(5.3, 2.4) plt.gcf().set_size_inches(5.3, 2.4)
plt.tight_layout() plt.tight_layout()
plt.savefig(outfile, dpi=70, transparent=True, bbox_inches='tight') plt.savefig(outfile, dpi=70, transparent=True, bbox_inches='tight')
plt.close() plt.close()
logging.info("end plot_list " + str(datetime.datetime.now())) logging.info("Plot: End plot_log " + str(datetime.datetime.now()))
def plot_list(duration): def plot_list(duration):
logging.info("start plot_list " + str(datetime.datetime.now())) logging.info("Plot: Start plot_list " + str(datetime.datetime.now()))
today = datetime.datetime.today() end = datetime.datetime.now()
begin = today - datetime.timedelta(weeks=duration) begin = end - datetime.timedelta(weeks=duration)
users = get_users() users = get_users()
products = get_products() products = get_products()
@@ -246,11 +292,11 @@ def plot_list(duration):
plt.title("Bierliste ("+ str(duration) + " Wochen)") plt.title("Bierliste ("+ str(duration) + " Wochen)")
logging.info("plot plot_list " + str(datetime.datetime.now())) logging.info("Plot plot_list " + str(datetime.datetime.now()))
#800x600 #800x600
fig.set_size_inches(15, 10) fig.set_size_inches(15, 10)
plt.savefig('app/static/bierliste_small.png', dpi=72, bbox_inches='tight') plt.savefig('app/static/bierliste_small.png', dpi=72, bbox_inches='tight')
#1024x768 #1024x768
#fig.set_size_inches(10.24, 7.68) #fig.set_size_inches(10.24, 7.68)
#plt.savefig('app/static/bierliste.png', dpi=100) #plt.savefig('app/static/bierliste.png', dpi=100)
logging.info("end plot_list " + str(datetime.datetime.now())) logging.info("Plot: End plot_list " + str(datetime.datetime.now()))

View File

@@ -1,3 +1,4 @@
import logging
try: try:
import MFRC522 import MFRC522
except: except:
@@ -6,14 +7,13 @@ except:
import signal import signal
import thread import thread
import time import time
import logging
class RFID: class RFID:
def __init__(self, callbackf): def __init__(self, callbackf):
logging.info("RFID Reader initialized!") logging.info("RFID Reader initialized!")
self.reader = MFRC522.MFRC522() self.reader = MFRC522.MFRC522(spd=500000)
signal.signal(signal.SIGINT, self.stop) signal.signal(signal.SIGINT, self.stop)
self.callback = callbackf self.callback = callbackf
self.loop = True self.loop = True

View File

@@ -6,6 +6,11 @@
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=500"> <meta name="viewport" content="width=500">
<!--<meta name="viewport" content="width=device-width, initial-scale=1.0">--> <!--<meta name="viewport" content="width=device-width, initial-scale=1.0">-->
<meta Http-Equiv="Cache-Control" Content="no-cache">
<meta Http-Equiv="Pragma" Content="no-cache">
<meta Http-Equiv="Expires" Content="0">
<meta Http-Equiv="Pragma-directive: no-cache">
<meta Http-Equiv="Cache-directive: no-cache">
<link rel="stylesheet" type="text/css" href="/static/style.css"> <link rel="stylesheet" type="text/css" href="/static/style.css">
{% if title %} {% if title %}
<title> {{ title }} - Baroness </title> <title> {{ title }} - Baroness </title>

View File

@@ -17,7 +17,7 @@
{% set fils = "log_%s.png" % sensor.id %} {% set fils = "log_%s.png" % sensor.id %}
<img src="{{ url_for('static', filename=fils) }}" /><br> <img src="{{ url_for('static', filename=fils) }}" /><br>
</div> </div>
{% endfor %}b {% endfor %}
</div> </div>
</div> </div>
{% endfor %} {% endfor %}

View File

@@ -13,6 +13,7 @@
<th>Baron</th> <th>Baron</th>
<th>Angezeigt</th> <th>Angezeigt</th>
<th>Auto-Schwärzen</th> <th>Auto-Schwärzen</th>
<th>Nur RFID Kreuzen</th>
<th></th> <th></th>
</tr> </tr>
{% for user in users %} {% for user in users %}
@@ -26,6 +27,7 @@
<td>{% if user.isbaron %} &#9745; {% else %} &#9744; {% endif %} </td> <td>{% if user.isbaron %} &#9745; {% else %} &#9744; {% endif %} </td>
<td>{% if user.isshown %} &#9745; {% else %} &#9744; {% endif %} </td> <td>{% if user.isshown %} &#9745; {% else %} &#9744; {% endif %} </td>
<td>{% if user.autoblack %} &#9745; {% else %} &#9744; {% endif %} </td> <td>{% if user.autoblack %} &#9745; {% else %} &#9744; {% endif %} </td>
<td>{% if user.onlyrfid %} &#9745; {% else %} &#9744; {% endif %} </td>
<td> <a href="/manage_users/edit/{{user.name}}">bearbeiten</a></td> <td> <a href="/manage_users/edit/{{user.name}}">bearbeiten</a></td>
</tr> </tr>
{% endfor %} {% endfor %}

View File

@@ -18,6 +18,7 @@
Baron: <input type="checkbox" name="isbaron" {% if user_to_edit.isbaron %} checked {% endif %} /> <br> Baron: <input type="checkbox" name="isbaron" {% if user_to_edit.isbaron %} checked {% endif %} /> <br>
Angezeigt: <input type="checkbox" name="isshown" {% if user_to_edit.isshown %} checked {% endif %} /><br> Angezeigt: <input type="checkbox" name="isshown" {% if user_to_edit.isshown %} checked {% endif %} /><br>
Auto-Schwärzen: <input type="checkbox" name="autoblack" {% if user_to_edit.autoblack %} checked {% endif %} /><br> Auto-Schwärzen: <input type="checkbox" name="autoblack" {% if user_to_edit.autoblack %} checked {% endif %} /><br>
Nur mit RFID Kreuzen: <input type="checkbox" name="onlyrfid" {% if user_to_edit.onlyrfid %} checked {% endif %} /><br>
<input type="submit" value="Übernehmen" /> <input type="submit" value="Übernehmen" />
</form> </form>
{% endif %} {% endif %}

View File

@@ -11,6 +11,7 @@ class User:
self.isbaron=False self.isbaron=False
self.isshown=False self.isshown=False
self.autoblack=False self.autoblack=False
self.onlyrfid=False
def __str__(self): def __str__(self):
@@ -72,7 +73,15 @@ class User:
if self.autoblack is None: if self.autoblack is None:
s = "%s, None" % s s = "%s, None" % s
else: else:
if self.isshown is 0 or self. isshown is False: if self.autoblack is 0 or self. autoblack is False:
s = "%s, False" % s
else:
s = "%s, True" % s
if self.onlyrfid is None:
s = "%s, None" % s
else:
if self.onlyrfid is 0 or self. onlyrfid is False:
s = "%s, False" % s s = "%s, False" % s
else: else:
s = "%s, True" % s s = "%s, True" % s

View File

@@ -67,7 +67,6 @@ def logout():
@app.route('/fridges') @app.route('/fridges')
def fridges(): def fridges():
plot_log(30, ("/tmp/baroness_logdata_fast.csv",))
return render_template('fridges.html', fridges=settings.fridges, user=get_user_by_name(session.get('name'))) return render_template('fridges.html', fridges=settings.fridges, user=get_user_by_name(session.get('name')))
@@ -149,6 +148,10 @@ def manage_users_edit(name=None):
else: else:
u.autoblack = False u.autoblack = False
if 'onlyrfid' in request.form:
u.onlyrfid = True
else:
u.onlyrfid = False
update_user(u) update_user(u)

Binary file not shown.

BIN
case/abstandh.stl Normal file

Binary file not shown.

Binary file not shown.

BIN
case/backside.stl Normal file

Binary file not shown.

Binary file not shown.

BIN
case/baroness.stl Normal file

Binary file not shown.

View File

@@ -36,11 +36,11 @@ CREATE TABLE Users(
password TEXT NOT NULL, password TEXT NOT NULL,
longname TEXT NOT NULL, longname TEXT NOT NULL,
email TEXT, email TEXT,
rfid_id TEXT,
isblack BOOLEAN DEFAULT 0, isblack BOOLEAN DEFAULT 0,
isbaron BOOLEAN DEFAULT 0, isbaron BOOLEAN DEFAULT 0,
isshown BOOLEAN DEFAULT 1, isshown BOOLEAN DEFAULT 1,
autoblack BOOLEAN DEFAULT 1 autoblack BOOLEAN DEFAULT 1,
onlyrfid BOOLEAN DEFAULT 0
); );
-- The table PRODUCTS contains information about the beverages available -- The table PRODUCTS contains information about the beverages available
@@ -76,7 +76,7 @@ CREATE TABLE Deposits(
); );
CREATE TABLE Rfid( CREATE TABLE Rfid(
di INTEGER PRIMARY KEY, id INTEGER PRIMARY KEY,
userid INTEGER NOT NULL, userid INTEGER NOT NULL,
rfid_id TEXT, rfid_id TEXT,
is_valid BOOLEAN DEFAULT 1, is_valid BOOLEAN DEFAULT 1,
@@ -85,6 +85,11 @@ CREATE TABLE Rfid(
); );
-- add one baron to login
INSERT INTO Users(name, password, longname, email, rfid_id, isblack, isbaron, isshown, onlyrfid) VALUES
(hindenburg, $2a$12$BGj0f9msFZiYqAN2DfKOme3lk1klMz1ea62IYNtLWz4q.zNXM0oR2, Paul von Hindenburg, hind@enburg.er, 0x6666666666, 0, 1, 1, 1, 0);
-- The table Config stores basic config data, this is for the admins and the barons -- The table Config stores basic config data, this is for the admins and the barons

9
run.py
View File

@@ -5,6 +5,9 @@ from os import urandom
from app import gui from app import gui
import thread import thread
import logging import logging
from app import settings
from app import datalog
from app import plot
if __name__ == '__main__': if __name__ == '__main__':
@@ -15,6 +18,12 @@ if __name__ == '__main__':
logging.info("Baroness started!") logging.info("Baroness started!")
print "Baroness started: logging to ", logfile print "Baroness started: logging to ", logfile
#start data logging
if settings.settings.fridgeLogging:
logger = datalog.DataLogger()
#start plot thread
plotter = plot.Plotter()
#start gui #start gui
wx = wx.App() wx = wx.App()

Binary file not shown.