def main(): db_op = db_operator() db_op.db_connect() task_mag = task_manager() task_finished = t_update_task() task_finished.node_id = 1 task_finished.sensor_id = 3 task_finished.operation_code = 4 task_finished.operation_data = 3001 task_mag.update_tb_sensor_state(db_op, task_finished)
def upword(self, task_finished): print "############ NOW WE ARE IN UPWORD THREAD ################" db_op = db_operator() #try: if 1: #while True: if 1: db_op.db_connect() #print "TASK_DICT: ", str(task_mag.task_dict) #transaction_number = raw_input("Please input the transaction_number:") task_mag.finish_task(db_op, task_finished) task_mag.update_tb_sensor_state(db_op, task_finished) db_op.db_close()
def downword(self, f_send = None): print "############ NOW WE ARE IN DOWNWORD THREAD ################" db_op = db_operator() try: while True: db_op.db_connect() task_mag.build_task_list(db_op) task_mag.commit_task(db_op, f_send) db_op.db_close() sleep(0.5) #except Exception, e: #print e finally: print "DOWNWORD THREAD FINISHED"
def downword(self, f_send=None): print "############ NOW WE ARE IN DOWNWORD THREAD ################" db_op = db_operator() try: while True: db_op.db_connect() task_mag.build_task_list(db_op) task_mag.commit_task(db_op, f_send) db_op.db_close() sleep(0.5) #except Exception, e: #print e finally: print "DOWNWORD THREAD FINISHED"
def receive(self, src, msg): if msg.get_amType() == sensor_msg.AM_TYPE: insert_data = t_insert_data() insert_data.node_id = int(msg.get_node_id()) insert_data.sensor_id = int(msg.get_sensor_type()) insert_data.data = int(msg.get_sensor_value()) if insert_data.sensor_id == d_sensor_set["THERMISTOR"]: insert_data.data = float("%.2f" % Celsius(insert_data.data)) #print msg #if insert_data.sensor_id == 4: #print "###### GET ONE SENSE MESSAGE #######" #print "# node_id = %d" % insert_data.node_id #print "# sensor_id = %d [%s]" % (insert_data.sensor_id, d_sensor_num_to_name[str(insert_data.sensor_id)]) #print "# data = %f [ADC = %d] " % (insert_data.data, msg.get_sensor_value()) #print "####################################" #print "###### GET ONE SENSE MESSAGE #######" #print "# node_id = %d" % insert_data.node_id #print "# sensor_id = %d [%s]" % (insert_data.sensor_id, d_sensor_num_to_name[str(insert_data.sensor_id)]) #print "# data = %d" % insert_data.data #print "####################################" #try: if 1: db_op = db_operator() db_op.db_connect() db_op.db_insert_data(insert_data) db_op.db_close() #print "DB <<<<<<<<< ONE DATA INSERTED" #except sqlite3.OperationalError, e: #print e elif msg.get_amType() == reply_msg.AM_TYPE: #print msg task_finished = t_update_task() task_finished.transaction_number = int(msg.get_transaction_number()) task_finished.status = int(msg.get_status()) task_finished.node_id = int(msg.get_node_id()) task_finished.sensor_id = int(msg.get_request_device()) task_finished.operation_code = int(msg.get_request_code()) operation_data = int(msg.get_request_data()) if task_finished.sensor_id == d_sensor_set["THERMISTOR"] and \ task_finished.operation_code == d_request_code["SET_READING_THRESHOLD_REQUEST"]: operation_data = Celsius(operation_data) task_finished.operation_data = operation_data print "****** GET ON REPLY MESSAGE ********" print "* transaction_number = %d" % task_finished.transaction_number print "* node_id = %d" % task_finished.node_id print "* sensor_id " , task_finished.sensor_id print "* sensor_id = %d [%s]" % (task_finished.sensor_id, d_sensor_num_to_name[str(task_finished.sensor_id)]) print "* request_code ", task_finished.operation_code print "* request_code = %d [%s]" % (task_finished.operation_code, d_request_code_to_name[str(task_finished.operation_code)]) print "* request_data = %d [ADC = %d]" % (task_finished.operation_data, msg.get_request_data()) print "* status = %d" % task_finished.status print "************************************" self.thread_mag.upword(task_finished) sys.stdout.flush()
def check_store_data(main_frame): pack_num = int(binascii.b2a_hex(main_frame[2]), 16) if binascii.b2a_hex(main_frame[4]) == d_frame["DATA_TYPE_DATA"]: p, q = 0, 0; data_part_solved_len = 0 data_part = main_frame[5:] ########################################### # 迭代N组数据中的每一组 ########################################### print "pack_num - 1 - 2 = %d " % (pack_num - 1 - 2) while q < pack_num - 1 - 2: ########################################################### data_part = data_part[p:] print "in check_store_data, P = %d " % p node_id = int(binascii.b2a_hex(data_part[0]), 16) sensor_set = binascii.b2a_hex(data_part[1]) data_num = int(binascii.b2a_hex(data_part[2]), 16) print 'node_id = %d | sensor_type = %s | data_num = %d' %(node_id, sensor_set, data_num) k = 0 data_circle = data_part[3:] ################################ # 迭代检查每组数据中的每一笔记录 ################################ if sensor_set == d_sense_type["SENSE_TYPE_LIGHT"]: print '==================LIGHT=========================' ########################## # 对光照数据解析部分 ########################## while k < data_num: temp_time = data_circle[10 * k : 10 * k + 6] ## generating the datetime type data sense_time = datetime(2000 + int(binascii.b2a_hex(temp_time[0]), 16),\ int(binascii.b2a_hex(temp_time[1]), 16), int(binascii.b2a_hex(temp_time[2]), 16), \ int(binascii.b2a_hex(temp_time[3]), 16), int(binascii.b2a_hex(temp_time[4]), 16), \ int(binascii.b2a_hex(temp_time[5]), 16)) sense_time = sense_time.strftime('%Y%m%d%H%M%S') sense_time = datetime.now().strftime("%Y%m%d%H%M%S") sense_data = data_circle[10 * k + 6 : 10 * k + 10] sense_data = sense_data[::-1] #取倒序数据 sense_data_light = int(binascii.b2a_hex(sense_data), 16) print "here sense_data_light = %d" %sense_data_light if sense_data_light >= 0 and sense_data_light <= 200000: insert_data = t_insert_data() insert_data.node_id = node_id insert_data.sensor_id = d_sensor_id["LIGHT"] insert_data.data = sense_data_light insert_data.insert_time = sense_time db_op = db_operator() db_op.db_connect() ret = db_op.store_data(insert_data) db_op.db_close() if ret == d_return_mark["DB_STORE_OK"]: print "store one data succeed!!!" else : print "ONE WRONG DATA BEEN PASSED!!!" k += 1 print "in light data, k = %d" %k p = data_num * (d_length["LEN_LIGHT"] + d_length["LEN_TIME"]) + d_length["LEN_INNER_HEAD"] elif sensor_set == d_sense_type["SENSE_TYPE_MULTY"]: while k < data_num: temp_time = data_circle[10 * k : 10 * k + 6] ## generating the datetime type data sense_time = datetime(2000 + int(binascii.b2a_hex(temp_time[0]), 16),\ int(binascii.b2a_hex(temp_time[1]), 16), int(binascii.b2a_hex(temp_time[2]), 16), \ int(binascii.b2a_hex(temp_time[3]), 16), int(binascii.b2a_hex(temp_time[4]), 16), \ int(binascii.b2a_hex(temp_time[5]), 16)) sense_time = sense_time.strftime('%Y%m%d%H%M%S') sense_time = datetime.now().strftime("%Y%m%d%H%M%S") ########################## # 流速传感器节点数据解析部分 ########################## sense_data = data_circle[12 * k + 6 : 12 * k + 12] print "================TURMIDITY=====================" turmidity_sense_data = sense_data[0:2] sense_data_turmidity = int(binascii.b2a_hex(turmidity_sense_data[::-1]), 16) if sense_data_turmidity >= 0 and sense_data_turmidity <= 20000 and turmidity_sense_data != 'ffff': ######################## # ######################## sense_data_turmidity = float("%.3f" %(sense_data_turmidity / 100.0)) insert_data = t_insert_data() insert_data.node_id = node_id insert_data.sensor_id = d_sensor_id["HUMIDITY"] insert_data.data = sense_data_turmidity insert_data.insert_time = sense_time db_op = db_operator() db_op.db_connect() ret = db_op.store_data(insert_data) db_op.db_close() if ret != d_return_mark["DB_STORE_OK"]: print "HERE2" else : print "WRONG RANGE OF TURMIDITY!!!" print '=================FLOWSPEED======================' flowspeed_sense_data = sense_data[2:4] sense_data_flowspeed = int(binascii.b2a_hex(flowspeed_sense_data[::-1]), 16) if sense_data_flowspeed >= 0 and sense_data_flowspeed <= 10000 and flowspeed_sense_data != 'ffff': ######################## # ######################## sense_data_flowspeed = float("%.3f" %(sense_data_flowspeed / 1000.0)) insert_data = t_insert_data() insert_data.node_id = node_id insert_data.sensor_id = d_sensor_id["FLOWSPEED"] insert_data.data = sense_data_flowspeed insert_data.insert_time = sense_time db_op = db_operator() db_op.db_connect() ret = db_op.store_data(insert_data) db_op.db_close() if ret != d_return_mark["DB_STORE_OK"]: print "ONE WRONG DATA BEEN PASSED!!!" else : print "WRONG RANGE OF TURMIDITY!!!" print "================TEMERATURE=====================" temp_sense_data = sense_data[4:6] print "TEMPERATURE: %s" %(binascii.b2a_hex(temp_sense_data)) temp_sense_data = temp_sense_data[::-1] high_16 = binascii.b2a_hex(temp_sense_data[0]) ############################## # 温度解析部分,判断温度的正负 ############################## if int(high_16[0], 16) == 0 and int(high_16[1], 16) <= 7: print "================TEMPERATURE PASS ONE================= POSITIVE" sense_data_temperature = int(binascii.b2a_hex(temp_sense_data), 16) #### solution for positive numbers sense_data_temperature *= 0.0625 if sense_data_temperature >= -55 and sense_data_temperature <= 125: insert_data = t_insert_data() insert_data.node_id = node_id insert_data.sensor_id = d_sensor_id["TEMPERATURE"] insert_data.data = sense_data_temperature insert_data.insert_time = sense_time db_op = db_operator() db_op.db_connect() ret = db_op.store_data(insert_data) db_op.db_close() if ret != d_return_mark["DB_STORE_OK"]: print "here temperature" else: print "[WARNING] TEMPERATURE OVER RANGE!!!!!" elif int(high_16[0], 16) == 15 and int(high_16[1], 16) >= 8: #### temperature is positive print "================TEMPERATURE PASS ONE================= NEGATIVE" sense_data_temperature = int(binascii.b2a_hex(temp_sense_data), 16) #### solution for negative numbers sense_data_temperature = -((sense_data_temperature ^ 65535 + 1) * 0.0625) if sense_data_temperature >= -55 and sense_data_temperature <= 125: insert_data = t_insert_data() insert_data.node_id = node_id insert_data.sensor_id = d_sensor_id["TEMPERATURE"] insert_data.data = sense_data_temperature insert_data.insert_time = sense_time db_op = db_operator() db_op.db_connect() ret = db_op.store_data(insert_data) db_op.db_close() if ret != d_return_mark["DB_STORE_OK"]: print "sotre data error" else: print "[WARNING]TEMPERATURE OVER RANGE!!!!!" else: print "[ERROR]INLEGAL TEMPERATURE!!!!" k += 1 print "in multy data, k = %d" %k p = data_num * (d_length["LEN_MULTY"] + d_length["LEN_TIME"]) + d_length["LEN_INNER_HEAD"] q += p print "The remain data_part : %s " % binascii.b2a_hex(data_part) else: return -1 return 0