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 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 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()
Example #8
0
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