def EVALUATE(timeout): global runthegame global pmdata global trigger_value global trigger_floor while True: loopstart = timer() websocket_updater = timer() while runthegame: checkup = pmdata most = timer() data3 = 0 data4 = 0 for i in range(0, 4): if len(pmdata[i][1][1]) > 2: #if (most-checkup[i][1][1][-1])>0.1: #log('checkup' + str(most-checkup[i][1][1][-1])) iteration_count = len(checkup[i][1][0]) measurement_standard_deviation = np.std(checkup[i][1][0]) posteri_estimate = np.average(checkup[i][1][0]) #print(posteri_estimate) #print(measurement_standard_deviation) #print(posteri_estimate) # The smaller this number, the fewer fluctuations, but can also venture off # course... #process_variance = 1e-3 process_variance = 1 estimated_measurement_variance = measurement_standard_deviation**2 # 0.05 ** 2 kalman_filter = KalmanFilter( process_variance, estimated_measurement_variance, posteri_estimate) posteri_estimate_graph = [] for iteration in range(0, iteration_count): kalman_filter.input_latest_noisy_measurement( checkup[i][1][0][iteration]) #posteri_estimate_graph.append(kalman_filter.get_latest_estimated_measurement()) pmdata[i][1][5].append( kalman_filter.get_latest_estimated_measurement()) pmdata[i][1][6].append(timer()) if (most - checkup[i][1][6][0] > 0.3): pmdata[i][1][5].pop(0) pmdata[i][1][6].pop(0) #print(pmdata[i][1][5][-1]) #print(len(pmdata[i][1][5])) #print(checkup[i][1][0][k] ) if len(checkup[i][1][6]) > 4: trigger_estimate = np.average(pmdata[i][1][5]) if (trigger_estimate < trigger_value) and (len( checkup[i][1][6]) > 0): min_rssi = checkup[i][1][5][-1] for cic in range(1, len(checkup[i][1][5])): if checkup[i][1][5][-cic] < min_rssi: min_rssi = checkup[i][1][5][-cic] if min_rssi == checkup[i][1][5][-1]: log("Failed: uccsó a kicsike") if min_rssi == checkup[i][1][5][-2]: log("Failed: uccsóelőtti a kicsike") if checkup[i][1][5].index(min_rssi) == 0: log("Failed: első a kicsike") if min_rssi > trigger_floor: log("Failed: nem érte el a floort") if min_rssi != checkup[i][1][5][ -1] and min_rssi != checkup[i][1][5][ -2] and checkup[i][1][5].index( min_rssi ) != 0 and min_rssi < trigger_floor: #print(len(checkup[i][1][1])) min_timestamp = checkup[i][1][6][ checkup[i][1][5].index(min_rssi)] #print(min_timestamp) lowest_key = checkup[i][1][5].index(min_rssi) #print(lowest_key) result = parab( pmdata[i][1][6][(lowest_key - 2)], pmdata[i][1][6][(lowest_key)], pmdata[i][1][6][(lowest_key + 2)], pmdata[i][1][5][lowest_key - 2], pmdata[i][1][5][lowest_key], pmdata[i][1][5][lowest_key + 2]) if checkup[i][1][2] != 0: #print(pmdata[i][1][5]) #print(pmdata[i][1][1]) print("TRIGGERED: [" + str(i) + "]" + str(result - pmdata[i][1][2])) if i == 0: data3 = result - pmdata[i][1][2] if i == 1: data4 = result - pmdata[i][1][2] pmdata[i][1][2] = result data1 = pmdata[i][1][5][-1] data2 = pmdata[i][1][0][-1] message = {} message['data1'] = round(data1) message['data2'] = data2 message['data3'] = data3 message['data4'] = data4 message = json.dumps(message) sendMsgToControl.append(message) pmdata[i][1][0] = [] pmdata[i][1][1] = [] pmdata[i][1][5] = [] pmdata[i][1][6] = [] if checkup[i][1][2] == 0: oresult = 0 pmdata[i][1][2] = most print("TRIGGERED ZERO: " + str(oresult)) pmdata[i][1][0] = [] pmdata[i][1][1] = [] pmdata[i][1][5] = [] pmdata[i][1][6] = [] data3 = 'Start' if most - websocket_updater > 0.2: try: data1 = pmdata[i][1][5][-1] data2 = pmdata[i][1][0][-1] message = {} message['data1'] = round(data1) message['data2'] = data2 message['data3'] = data3 message['data4'] = data4 message = json.dumps(message) sendMsgToControl.append(message) websocket_updater = timer() except: pass for i in range(0, 4): if len(checkup[i][1][1]) > 0: if (most - pmdata[i][1][1][0] > 2): pmdata[i][1][0].pop(0) pmdata[i][1][1].pop(0) pmdata[i][1][4] = len(checkup[i][1][0]) time.sleep(0.01) time.sleep(0.1)