Example #1
0
    def testSaveTempRecord(self):
        temp_list = accessdb.get_temp_record_list()
        self.assertEqual(len(temp_list), 0)

        # insert value 1
        value = 10
        nowTime = apitimer.get_now_time_without_second()
        ret = accessdb.save_temp_record(nowTime, value, "1m")
        self.assertEqual(ret, True)

        # insert value 2
        value = 20
        ret = accessdb.save_temp_record(nowTime, value, "1m")
        self.assertEqual(ret, True)
        listTemp = accessdb.get_temp_record_list()
        self.assertEqual(len(listTemp), 2)

        # Get between time that have no element
        nowTime = nowTime + timedelta(hours=1)
        endTime = nowTime + timedelta(hours=20)
        list = accessdb.get_temp_record_between_two_point_time(nowTime, endTime, "1m")
        self.assertEqual(len(list), 0)

        # Avg list have two element
        nowTime = nowTime - timedelta(hours=1)
        endTime = nowTime + timedelta(hours=20)
        list = accessdb.get_temp_record_between_two_point_time(nowTime, endTime, "1m")
        self.assertEqual(len(list), 2)

        avg = accessdb.get_temp_average_between_two_time(nowTime, endTime, "1m")
        self.assertEqual(avg, 15.0)

        # Avg empty list
        nowTime = nowTime + timedelta(hours=1)
        endTime = nowTime + timedelta(hours=20)
        list = accessdb.get_temp_record_between_two_point_time(nowTime, endTime, "1m")
        self.assertEqual(len(list), 0)

        avg = accessdb.get_temp_average_between_two_time(nowTime, endTime, "1m")
        self.assertEqual(avg, None)

        accessdb.save_temp_record(nowTime, 11.2, "5m")
        accessdb.save_temp_record(nowTime, 11.5, "5m")
        accessdb.save_temp_record(nowTime, 11.2, "1m")
        list = accessdb.get_temp_record_between_two_point_time(nowTime, endTime, "5m")
        self.assertEqual(len(list), 2)
        avg_temp = accessdb.get_temp_average_between_two_time(nowTime, endTime, "5m")
        self.assertEqual(avg_temp, 11.35)

        list = accessdb.get_temp_record_between_two_point_time(nowTime, endTime, "1m")
        self.assertEqual(len(list), 1)
def getTempAverage(temp_value, now_time):
    global next_time
    global data

    logger.debug(temp_value)
    logger.debug(now_time)
    if now_time < next_time:
        data.append(temp_value)
    else:
        sum = 0
        logger.debug(now_time)

        for record in data:
            sum = (sum + record)

        # Don't have data to calculate average value
        if len(data) == 0:
            return

        average = float(sum / len(data))
        msg = 'temp_average = %s' % average
        logger.debug(msg)
        ret = accessdb.save_temp_record(now_time - timedelta(minutes=1), average, '1m')
        msg = 'result insert record to db: %s' % ret
        logger.debug(msg)
        accessdb.check_alarm_by_temp(temp_value)

        if (now_time.minute % 5) == 0:
            avg_value = accessdb.get_temp_average_between_two_time(now_time - timedelta(minutes=5),
                                                                   now_time - timedelta(minutes=1), '1m')

            accessdb.save_temp_record(now_time, avg_value, '5m')

        if (now_time.minute % 10) == 0:
            avg_value = accessdb.get_temp_average_between_two_time(now_time - timedelta(minutes=5),
                                                                   now_time, '5m')
            accessdb.save_temp_record(now_time, avg_value, '10m')

        if (now_time.minute % 30) == 0:
            # time is X.30
            interval = 10

            # time is X.00
            if now_time.minute == 0:
                interval = 20
            avg_value = accessdb.get_temp_average_between_two_time(now_time - timedelta(minutes=interval),
                                                                   now_time, '10m')
            accessdb.save_temp_record(now_time, avg_value, '30m')

        if now_time.minute == 0:
            avg_value = accessdb.get_temp_average_between_two_time(now_time - timedelta(minutes=30),
                                                                   now_time, '30m')
            accessdb.save_temp_record(now_time, avg_value, '1h')

        if now_time.hour == 0 and now_time.minute == 0:
            avg_value = accessdb.get_temp_average_between_two_time(now_time - timedelta(days=23), now_time, '1h')
            accessdb.save_temp_record(now_time, avg_value, '1d')



        # Reset list temp for next_time
        data = []
        next_time = next_time + timedelta(minutes=1)
        data.append(temp_value)