温度系统每10分钟绘制一次(PHP和javascript)。如果温度超出范围,图表会发送电子邮件。但是我注意到了我的数据图,它运行了一个周期。因此,大约每12个小时,它会发送一封电子邮件,因为它有一个峰值。有谁知道如何编写更好的算法来发送电子邮件?
答案 0 :(得分:1)
首先,如果你认为它不应该超过某个温度,而且它经常会这样做,那么你是否应该将系统修复为不再超过那个温度?
尽管如此,一个标准解决方案是保持指数衰减平均值。每10分钟你就会说next_average = (1-p)*old_average + p*current_value
。将p
设置为0.1
,您将获得的内容大致是过去1.5小时的平均值。将p
缩小,您的平均时间会更长。将它做得更大,你将有效地平均最后几个数据点。
这正是用于计算使用uptime
看到的Unix加载平均值的算法。 (这些基本上是1分钟,5分钟和15分钟的移动平均线。)