Sono stati creati due script python:Activity.pyche acquisisce e archivia i dati dell'accelerometro eUpdateDB.pyche contiene le funzioni per accedere al Database.
if (Gx<-1.5 or Gy<-1.5 or Gz<-1.5 or Gx>1.5 or Gy>1.5 or Gz>1.5):
state = 0
elif (Ax>0.1 and Ax<0.9 and Ay>-1.2 and Ay<-0.4 and Az<0.7 and Az>-0.1):
state = 1
elif (Ax>0.6 and Ax<1.4 and Ay>-0.4 and Ay<0.4 and Az<0.0 and Az>-0.8):
state = 2
elif (Ax>0.1 and Ax<0.9 and Ay>0.4 and Ay<1.2 and Az<0.7 and Az>-0.1):
state = 3
elif (Ax<0.4 and Ax>-0.4 and Ay>-0.4 and Ay<0.4 and Az<1.4 and Az>0.6):
state = 4
elif (Ax>-0.9 and Ax<-0.1 and Ay>-1.2 and Ay<-0.4 and Az<0.1 and Az>-0.7):
state = 5
elif (Ax>-1.3 and Ax<-0.5 and Ay>-0.4 and Ay<0.4 and Az<0.8 and Az>0.0):
state = 6
elif (Ax>-0.9 and Ax<-0.1 and Ay>0.4 and Ay<1.2 and Az<0.1 and Az>-0.7):
state = 7
elif (Ax<0.4 and Ax>-0.4 and Ay>-0.4 and Ay<0.4 and Az<-0.6 and Az>-1.4):
state = 8
else:
state = 0
return state
Funzioni per la lettura dei dati della batteria:
def read_voltage():
read = Battery
_bus.read_word_data(Battery
_Address, 2)
swapped = struct.unpack("H", read))[0]
voltage = swapped * 78.125 /1000000
return voltage
def read_capacity():
read = Battery
_bus.read_word_data(Battery
_Address, 4)
swapped = struct.unpack("H", read))[0]
capacity = swapped/256
return capacity
Inizializzazione dell'accelerometro e delle variabili necessarie:
nota: è necessario uno sleep di 15 secondi per evitare errori eseguendo lo script all'avvio del sistema.
MPU_Init()
cur_state = 0
old_state = 0
cur_capacity = 0
old_capacity = 0
sleep(15)
Questo ciclo controlla ogni secondo i parametri forniti dell'accelerometro e dalla batteria e, in caso di variazioni, aggiorna il database. A mezzanotte o in caso di cambiamento della data viene chiamata la funzione che calcola il riepilogo della giornata e lo inserisce nella tabella "daily_activities".
while True:
cur_state = read_state()
cur_datetime = datetime.now()
last_datetime = mdb.check_last_date()
if cur_datetime.day==last_datetime.day and cur_datetime.month==last_datetime.month and cur_datetime.year==last_datetime.year: