3

Python データロガーをまとめようとしていて、アドバイスを探しています。これが私の状況です。ユーザーの介入は望んでいません。差し込んで録音するだけ。これまでのところ、私は PySerial モジュールを使用しており、すべてのシリアル データをテキスト ファイルに記録することができます。1 行を読み取り、変数に格納してから、その変数を追加モードでファイルに書き込みます。

ここで、このデータをグラフ化するために Web に送信したいと思います。ここで頭の痛い問題が発生します。これを SQL サーバーに送信するか、テキスト ファイルに送信する必要がありますか? 3g モジュールを使用していますが、速度/帯域幅が制限されています。データは 0.25 秒ごとに 1 サンプルでロガーにストリーミングされます。次に例を示します。

1 324 23454 2342 0 233 0 0 12223 66453 443 33 33 20 0 0 0 0

したがって、すべてのサンプルを送信する必要はないと思います。おそらく、1 秒あたり 1 行または 1 秒おきに送信するだけです。

ロガーは約 5 日間のみ実行され、その後すべてのデータが記録されます。私の質問は、データを送信する方法/場所に関する推奨事項はありますか? SQLまたはテキストファイル? 次に、このデータをオンラインに持っている場合、ストリーミング中にこのデータをリアルタイムでプロットする簡単な方法はありますか?

さらに、生データがスペースで区切られたり、タブで区切られたり、カンマで区切られたりすることもあります。

任意の入力をいただければ幸いです。

4

1 に答える 1

1

わかりましたので、ここにたくさんの質問/問題があります。私はそれらのそれぞれに対処しようとします:

データベース

データベース内のテーブルに各行を保持します。それはあなたの人生をずっと楽にしてくれます。MySQL や Postgres などの大きな負荷を処理できるものを使用することをお勧めします。次の表のデザインを提案できます。lineはあなたのデータで、uploadedこの行がまだサーバーにアップロードされているかどうかを示すフラグです。line_date読み取りが行われた正確な日時を記録できます。これは、キャプチャするのに役立つ場合があります。データ行が可変で、固定長を設定したくない場合は、varchar(200) をテキストに変更します。このテーブルをクライアント側に保持し、アップロードされたフィールドをフラグとして使用して、この行がサーバーにアップロードされたかどうかを示すことをお勧めします。そうすれば、ネットワーク接続の問題が発生してもデータが失われることはなく、アップロードが保留中の回線を追跡できます。次に、行を挿入するだけの 1 つのスクリプト、アップロードされていない行のリストを読み取り、1 秒ごとにアップロードする別のスクリプトまたはスレッドを作成できます。簡単にするために、サーバー上でほぼ同じテーブル設計を使用することもできます。

CREATE TABLE data_lines (
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    line VARCHAR(200),
    uploaded INT,
    line_date DATETIME
);

構文解析行

生データはスペースで区切られ、タブで区切られたり、カンマで区切られたりすることもあります。この単純なコード行で、これらすべてのケースを処理できます。

>>> line = "1,2 3\t4"
>>> print line.replace(',', ' ').split()
['1', '2', '3', '4']

リアルタイムグラフ

Flotは行く方法です。彼らは本当に素晴らしい Web ベースのリアルタイム グラフを作成します。ここで 1 つの例を見ることができます。

于 2012-12-04T17:02:16.950 に答える