def computeTrends(self, trends):
time = datetime.datetime.now()
t1 = time - datetime.timedelta(minutes=3)
t2 = time - datetime.timedelta(minutes=10)
for value in self.values:
key = "{0}.{1}".format(self.deviceId, value.id)
if key in trends and len(trends[key])>2:
previous = filter(lambda x: x.time > t2 and x.time <= t1, trends[key])
current = filter(lambda x: x.time > t1 and x.time <= time, trends[key])
if len(previous) >= 5 and len(current) >= 2:
previous_values = [x.value for x in previous]
previous_avg = sum(previous_values)/len(previous_values)
current_values = [x.value for x in current]
current_avg = sum(current_values)/len(current_values)
if current_avg > previous_avg + 0.02:
value.trend = 1
if current_avg < previous_avg - 0.02:
value.trend = -1
return self
评论列表
文章目录