Exemple #1
0
    def averages_calculations(self):
        accelerations = list()
        #decelerations = list()
        throttles = list()
        rpms = list()
        speeds = list()
        lats = list()
        longs = list()
        mpgs = list()
        coolants = list()

        accel_average = 0
        #decel_average = 0
        throttle_average = 0
        rpm_average = 0
        speed_average = 0
        mpg_average = 0
        coolant_average = 0
    
        record_accel = 0
        #record_decel = 0
        record_rpm = 0
        record_throttle = 0
        record_speed = 0
        total_distance = 0
        record_mpg = 0

        for value in VBoxData.select():
            if(value.acc_x > IMU_ZEROED_ACCEL_X): #exclude resting values
                accelerations.append(value.acc_x) 
            #else:
                #decelerations.append(value.acc_x)
            if not value.obd_throttle_pos == None and not value.obd_throttle_pos == 0:
                throttles.append(value.obd_throttle_pos) # need to change from obd_throttle_pos to obd_throttle_pos
            if not value.obd_rpm == None and not value.obd_rpm == 0:
                rpms.append(value.obd_rpm)
            if not value.obd_speed == None and not value.obd_speed == 0:
                speeds.append(value.obd_speed)
            if not value.gps_lat == None:
                lats.append(value.gps_lat)
            if not value.gps_lon == None:
                longs.append(value.gps_lat)
            if not value.obd_maf == None and value.obd_maf != 0 and not value.obd_speed == None and value.obd_speed != 0:
                #print '***MPG: ', 710.7 * (value.obd_speed / value.obd_maf)
                mpgs.append(710.7 * (value.obd_speed / value.obd_maf))
            if not value.obd_coolant_temp == None and value.obd_coolant_temp:
                coolants.append(value.obd_coolant_temp)
                    
                
        count = 0
        for distance in lats:
            if count+1 <= len(lats):
                total_distance = total_distance #+ distance_on_unit_sphere(lats[count+1], longs[count], lats[count+1], longs[count]) 
                count = count + 1   
                
        for value in ProfileData.select().where(ProfileData.flag == 1):
            record_accel = value.avg_accel
            #record_decel = value.avg_decel
            record_rpm = value.avg_rpm
            record_throttle = value.avg_throttle
            record_speed = value.avg_speed
            record_mpg = value.mpg
            
        try:
            accel_average = float(sum(accelerations)/len(accelerations))
            #decel_average = float(sum(decelerations)/len(decelerations))
            rpm_average = float(sum(rpms)/len(rpms))
            throttle_average = float(sum(throttles)/len(throttles))
            speed_average = float(sum(speeds)/len(speeds))
            mpg_average = float(sum(mpgs)/len(mpgs))
            coolant_average = float(sum(coolants)/len(coolants))  
        except ZeroDivisionError:
            #print "divide by zero\n"
            pass

        averages = [accel_average, throttle_average, rpm_average, speed_average, mpg_average, coolant_average, total_distance]

        return averages