Project

General

Profile

Download (1.67 KB) Statistics
| Branch: | Tag: | Revision:
856d156b dsorber
import calendar
import cPickle
import datetime
import socket
import sqlite3
import sys

from bfcslib.sensor_reading import SensorReading

abe2d7e5 David Sorber
DB_PATH = '/home/dsorber/bfcs/beer_temps.db'
cfebef28 dsorber
HOST = '10.0.0.6'
856d156b dsorber
PORT = 2243

def main():

# Create socket and wait for connections
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
conn, addr = s.accept()
print 'Connected by', addr

# Main loop
while True:

# Block and wait to receive data
data = conn.recv(65536)

# Try to unpickle any data received
try:
obj = cPickle.loads(data)
except:
print 'I got some data that I couldn\'t unpickle...'
print '-' * 100
print data
print '-' * 100
print '\n\n'
continue

# Is the unpickled object a SensorReading object?
if isinstance(obj, SensorReading):
print obj.time.strftime('%m/%d/%Y %H:%M:%S')
print calendar.timegm(obj.time.timetuple())
print '\tTemp 1: %s' % obj.temp1
print '\tTemp 2: %s' % obj.temp2
print '\tTemp 3: %s' % obj.temp3
print '\tTemp 4: %s' % obj.temp4
print '\tRelay is %s' % (obj.relay_status and 'on' or 'off')

# Insert the reading data into a database
print 'Inserting data into the database...'
sys.stdout.flush()

db_conn = sqlite3.connect(DB_PATH)
db = db_conn.cursor()
abe2d7e5 David Sorber
try:
db.execute("INSERT INTO temp_data VALUES (%s, %s, %s, %s, %s, %s)" %
(calendar.timegm(obj.time.timetuple()), obj.temp1,
obj.temp2, obj.temp3, obj.temp4,
int(obj.relay_status and '1' or '0')))
db_conn.commit()
except:
print 'FAILED'
db_conn.close()
continue
856d156b dsorber
db_conn.close()
print 'SUCCESS'

conn.close()


if __name__ == '__main__':
abe2d7e5 David Sorber
sys.exit(main())