2012-05-03 68 views
2

我有一個應用程序,用於從Smart House中收集大約12個傳感器的數據。它存儲其在MySQL數據庫中的數據與下表格式:用於採集傳感器數據分析的軟件

CREATE TABLE IF NOT EXISTS `datapoints` (
    `PointID` int(11) NOT NULL, 
    `System` varchar(50) NOT NULL, 
    `Sensor` varchar(50) NOT NULL, 
    `Value` varchar(50) NOT NULL, 
    `Timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
    PRIMARY KEY (`PointID`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8; 

System字段被用於分組傳感器,例如,「空中」系統具有「溫度」和「溼度」傳感器,和「太陽能電池板「系統具有」發電量(kW)「和」今日產量(kWh)「。這些字段全部爲varchar,因爲有幾個數據類型從傳感器傳入,原始數據庫設計人員輕鬆解決。 (我知道這個數據結構效率不高,但要改變它太遲了。)

傳感器包括空氣溫度,溼度,太陽能電池板輸出,太陽能熱水器溫度等。

我們現在有這個數據庫,每天收集數以萬計的數據點。到目前爲止,我們已經使用了一個查詢數據庫的應用程序來構建傳感器數據的圖形。但是,我們現在有許多千兆字節的數據,並且最終將耗盡日誌記錄硬件上的存儲空間。

我正在尋找一種方法從數據中收集統計數據,然後將其刪除。我正在考慮類似[Google Analytics | | Piwik | Awstats]的數據。問題是我不知道從哪裏開始。我希望能夠看到更詳細的數據,從更近的時候,例如:

  • 1天的價值的所有數據
  • 1周值得每小時數據的
  • 1個月的價值每日數據
  • 我想我想保持每週和每月的統計數據。

但是,我不想平滑數據太多。最終,我將不得不平滑數據,但我希望儘可能長時間保持詳細。例如,如果我的發電量猛增,如果它平滑(小)到小時數據中,然後再次(低)在日常數據中,然後在每週數據中再次(低),那麼本週的數據將不會反映出峯值,因爲平均值與所有點的平均值不同。

是否有任何軟件已經這樣做?如果不是,那麼開始的好方法是什麼?我可以用任何語言來完成,但首選項是.NET,PHP或C(對於Windows)(依次),因爲這些是其他項目成員已知的語言,並且日誌記錄硬件已經設置好了。

回答

1

您的數據問題非常大並且可能是開放式的,我不認爲有任何單一工具可以解決您的問題。您可能需要爲您的特定問題創建自己的工具。

我想你應該看看科學和工程界使用的基於Python的工具。這包括用於交互式數據分析和可視化的IPythonMatplotlib。使用NumpyScipy來處理和處理大數據數組。最後,請考慮SciKit Learn當你需要做一些嚴重的數字處理。

祝你好運。