スマートハウスの約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
、センサーから入力されるいくつかのデータ型があり、元のデータベース設計者が簡単に抜け出したためです。(このデータ構造はあまり効率的ではないことは知っていますが、変更するには遅すぎます。)
センサーには、気温、湿度、ソーラーパネル出力、ソーラーウォーターヒーター温度などが含まれます。
現在、毎日数万のデータポイントを収集するこのデータベースがあります。これまで、データベースにクエリを実行するアプリケーションを使用して、時間の経過に伴うセンサーデータのグラフを作成してきました。ただし、現在は数ギガバイトのデータがあり、最終的にはロギングハードウェアのストレージスペースが不足します。
データから統計を収集して削除する方法を探しています。私は[GoogleAnalytics| Piwik | データのAwstats]。問題は、どこから始めればいいのかわからないことです。より最近の時代のより詳細なデータを見ることができるようにしたいと思います。たとえば、次のようになります。
- 1日分のすべてのデータ
- 1週間分の1時間ごとのデータ
- 1か月分の日次データ
- 毎週と毎月の統計を永久に保持したいと思います。
ただし、データをあまり滑らかにしたくありません。最終的にはデータを平滑化する必要がありますが、できるだけ詳細に保持したいと思います。たとえば、発電量が大幅に増加した場合、それが時間単位のデータに平滑化(下)され、次に日次データで再び(下)、次に週次データで再び(下)、週のデータに平滑化されます。平均の平均はすべてのポイントの平均と同じではないため、スパイクがあったことを反映しません。
すでにこれを行っているソフトウェアはありますか?そうでない場合、開始するための良い方法は何ですか?私はどの言語でもそれを行うことができますが、.NET、PHP、またはC(Windowsの場合)(この順序で)が優先されます。これらは他のプロジェクトメンバーがすでに知っている言語であり、ロギングハードウェアがすでにセットアップされているためです。