我有一个带有以太网接口的微控制器,并连接了3个温度传感器。 温度数据被发送到运行脚本的另一台机器,该脚本通过传感器ID将值放入MySQL数据库。
温度值由微控制器每分钟发送45-50次。
我正在尝试使用图形工具获得一分钟明智的平均值,但我在弄清楚如何获得过去24小时的平均pr分钟时遇到了问题。
数据如下所示:
+----------+-----------------+---------------------+
| sensorID | sensorTempValue | sensorTimeStamp |
+----------+-----------------+---------------------+
| 3 | 320 | 2013-12-09 09:38:00 |
| 2 | 156 | 2013-12-09 09:38:01 |
| 1 | 360 | 2013-12-09 09:38:02 |
| 3 | 320 | 2013-12-09 09:38:04 |
| 2 | 156 | 2013-12-09 09:38:05 |
| 1 | 360 | 2013-12-09 09:38:06 |
| 3 | 319 | 2013-12-09 09:38:08 |
| 2 | 156 | 2013-12-09 09:38:09 |
| 1 | 360 | 2013-12-09 09:38:10 |
| 3 | 319 | 2013-12-09 09:38:12 |
| 2 | 156 | 2013-12-09 09:38:13 |
...
sensorID是每个DS18x20数字传感器的ID,而sensorTempValue是它返回的原始数据,因此将该值除以16得到摄氏温度值。
SELECT sensorTimeStamp, sensorTempValue/16
FROM (SELECT *
FROM temperatureData
WHERE sensorTimeStamp > DATE_SUB(now(), INTERVAL 1 DAY)
AND sensorID = 2
GROUP BY MINUTE(sensorTimeStamp))
m order by sensorTimeStamp
这是我最接近的,但这仍然不是整整23个小时。 我猜这可以通过分组等来完成。
答案 0 :(得分:0)
我认为你正在寻找这样的东西:
select
sensorID,
DATE_FORMAT(sensorTimeStamp, '%Y-%m-%d %H:%i'),
(SUM(sensorTempValue)/count(sensorTempValue))/16
from temperatureData
where now()-temperatureData.sensorTimeStamp < INTERVAL 1 DAY
group by sensorID, DATE_FORMAT(sensorTimeStamp, '%Y-%m-%d %H:%i')