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)