import xdriplib import db import sensor import calibration from calibration import * db.initDB() print "***********************************************************************************" Y=BGReadings_Data() Y.getlatest() print "latest BG ->" + str(Y.bg) Y.getsecondlatest() print "secondlatest BG ->" + str(Y.bg) Y.getthirdlatest() print "thirdlatest BG ->" + str(Y.bg) print "***********************************************************************************" xdriplib.find_new_curve() xdriplib.find_new_raw_curve()
def serialthread(dummy): global mydata global BG global LASTBG print "start serial com" firstrun=True while 1: try: # sometimes the wixel reboots and comes back as a different # device - this code seemed to catch that happening # more complex code might be needed if the pi has other # ACM type devices. ser = serial.Serial('/dev/ttyMFD2', 9600) serial_line="00000" if (firstrun==False): serial_line = ser.readline() print "Laenge->" + str(len(serial_line)) print "Daten Empfangen->" + ":".join("{:02x}".format(ord(c)) for c in serial_line) if ord(serial_line[0])>len(serial_line): print "Huston wir haben ein Prob" serial_line="00000" else: print "Startup Transmitter ID senden ->" + str(my_TransmitterID) send_TID_wixel(ser,my_TransmitterID) firstrun=False if ((serial_line[1]=="\xf1")): print "Beacon Empfangen!!" send_TID_wixel(ser,my_TransmitterID) # Testdaten #mydata['CaptureDateTime']=str(int(time.time()))+"000" #mydata['RelativeTime']="0" #mydata['RawValue']="155000" #mydata['FilteredValue']="155000" #mydata['BatteryLife']="240" #mydata['TransmitterId']="00000" #mydata['ReceivedSignalStrength']=0 #mydata['TransmissionId']=0 # print "Time adjusted raw" + str(xdriplib.calculateAgeAdjustedRawValue(5,155000)) # 1,080-80,36 if (serial_line[1]=="\x00") and (len(serial_line)==18): print "Dexcom Daten empfangen" # simple space delimited data records # update dictionary - no sanity checking here # 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 # 11:00:00:00:00:00:00:00:00:00:bc:00:de:5e:63:00:01:0a # | | | | | | Protokoll Level # | | | | |-------------Transmitter ID # | | | |----------------Bridge Batterie # | | |-------------------Dexcom batterie # | |----------------------------------Filtered Data # |-------------------------------------------Raw mydata['CaptureDateTime']=str(int(time.time()))+"000" mydata['RelativeTime']="0" mydata['RawValue']=str(int(ord(serial_line[2])+(ord(serial_line[3])*256)+(ord(serial_line[4])*65536)+(ord(serial_line[5])*16777216))) mydata['FilteredValue']=str(int(ord(serial_line[6])+(ord(serial_line[7])*256)+(ord(serial_line[8])*65536)+(ord(serial_line[9])*16777216))) mydata['BatteryLife']=str(ord(serial_line[10])) mydata['TransmitterId']=str(int(ord(serial_line[12])+(ord(serial_line[13])*256)+(ord(serial_line[14])*65536)+(ord(serial_line[15])*16777216))) mydata['ReceivedSignalStrength']=0 mydata['TransmissionId']=0 print "Receive" + json.dumps(mydata) send_ACK_wixel(ser) if wixellib.dexcom_src_to_asc(mydata['TransmitterId'])==my_TransmitterID: print "Neue daten Da !!!!!" BGData=BGReadings_Data() CurSensor=sensor.currentSensor() Calib=calibration_Data() Calib.getlatest() BGData.raw_value=long(ord(serial_line[2])+(ord(serial_line[3])*256)+(ord(serial_line[4])*65536)+(ord(serial_line[5])*16777216)) BGData.filtered_value=int(ord(serial_line[6])+(ord(serial_line[7])*256)+(ord(serial_line[8])*65536)+(ord(serial_line[9])*16777216)) BGData.raw_timestamp=long(str(int(time.time()))+"000") BGData.timestamp = BGData.raw_timestamp BGData.DateTime = datetime.datetime.fromtimestamp((BGData.timestamp/1000)).strftime('%Y-%m-%d %H:%M:%S') print "BGData.Datetime -> " + BGData.DateTime BGData.slope = Calib.slope BGData.intercept = Calib.intercept BGData.sensor_confidence = Calib.sensor_confidence BGData.age_adjusted_raw_value= xdriplib.calculateAgeAdjustedRawValue(xdriplib.getTimeDelta(BGData,CurSensor),BGData.raw_value) BGData.sensor_age_at_time_of_estimation=CurSensor['started_at'] BGData.bg=xdriplib.calcCGMVAL(Calib.slope,Calib.intercept,BGData.age_adjusted_raw_value) #BGData.bg=xdriplib.calcCGMVAL(Calib.slope,Calib.intercept,BGData.filtered_value) print "Calib.slope -> " + str(Calib.slope) print "Calib.intercept -> " + str(Calib.intercept) print "BGData.age_adjusted_raw_value -> " + str(BGData.age_adjusted_raw_value) print "BGData.filtered_value -> " + str(BGData.filtered_value) print "BGData.bg -> " + str(BGData.bg) print "BGData.bg (filtered) -> " + str(xdriplib.calcCGMVAL(Calib.slope,Calib.intercept,BGData.filtered_value)) BGData.write2db() mongo_getBGReadings() #mongo_findTreatCall_Calib() xdriplib.find_new_curve() xdriplib.find_new_raw_curve() print "Neue Daten in die DB eingetragen -> \n"; #sendScreen() else: print "Error Found Wrong ID->"+wixellib.dexcom_src_to_asc(mydata['TransmitterId'])+" MyID-> "+ my_TransmitterID +"\n"; send_TID_wixel(ser,my_TransmitterID) except serial.serialutil.SerialException,e: print "Serial exception ",e time.sleep(1) ser.close() time.sleep(6)
import sys import time import os from thread import * from struct import * import serial import wixellib import xdriplib import db import sensor import calibration from calibration import * db.initDB() print "***********************************************************************************" Y = BGReadings_Data() Y.getlatest() print "latest BG ->" + str(Y.bg) Y.getsecondlatest() print "secondlatest BG ->" + str(Y.bg) Y.getthirdlatest() print "thirdlatest BG ->" + str(Y.bg) print "***********************************************************************************" xdriplib.find_new_curve() xdriplib.find_new_raw_curve()