オンラインログをゼロから作成する方法

以下は週末のデザインです。 アイデアから実装まで、数晩を費やしました。 この説明は、情報収集システムを実装するために必要な最小限を提供し、オンラインモードで後者にアクセスします。
画像

このメモを書いている過程ですでに、記事が登場しました: オンライン温度制御を備えたWinteringサボテン 。 当初、彼は彼らが先を行くことを恐れていましたが、解決される問題はどちらの場合も近いですが、実装は根本的に異なります。
結果のシステムのアーキテクチャを図に示します:
画像
ご覧のとおり、クライアント部分はマイクロコントローラーに完全に実装されています。 システムは、あらゆるニーズに合わせて簡単に拡張およびカスタマイズできます。

装置


長い間アイドル状態だったKeil MCB2300は、顧客のベースとして採用されました。 このボードはLPC2368マイクロコントローラーをベースにしており、かなり古いですが(現時点では代わりにLPC1768を使用する方が合理的です)、必要なものがすべて詰め込まれています。 ボードにはイーサネットインターフェイスがあり、この場合は世界への窓口です。 I 2 Cインターフェースを介して接続されたBMP085は、昔からよく知られていましたが、データソースとして使用されました。
画像
サーバーをテストし、HTTP要求の動作をチェックするソフトウェアは、Win32アプリケーションの一部として作成されました。
画像
その後、同じロジックがマイクロコントローラーに渡されました。 現在、要求は特定のIPアドレスに宛てられていますが、DNSクライアントを使用することをお勧めします。 理論的には、ホスティングオペレーターはそのアドレス空間内でサイトを転送できます。 NTPクライアントを追加して、タイムスタンプ付きでデータをサーバーにすぐに送信することもできます。
このプロジェクトは、マイクロコントローラーでTCP / IPプロトコルを使用する最初のテストです。 この例は、EasyWebに基づいています。EasyWebは、Ethernetを最初のボードとする多くのボードに提供されています。 メインプログラムサイクルは曲がっていたことがわかりましたが、私はそれをとかしたくありません。 必要な機能は既に実装されていますが、このアプリケーションの内部構造がより気に入っているため、このアプリケーションをuIPスタックに転送したいと思います。
プログラムのメインサイクル:
  1. センサーからデータを読み取ります。
  2. 接続を開きます。
  3. HTTP GET要求をサーバーに送信します。
  4. 10秒が経過し、サーバーと通信するためのプロトコルが経過していない場合、タイムアウトにより接続が切断されます。
  5. 1〜5分待っています。 この待機により、データ保存間隔が設定されます。
そして、これがデバイス全体の外観です。


サーバー


サーバー部分は共有ホスティングにデプロイされました。 それの主な要件:PHPサポート。 データはCSVファイルとして保存されます。 スクリプトは可能な限りシンプルで、機能は2つのファイルに分かれています。

すべてのデータは、GET要求の一部としてサーバーに送信されます。
  GET http://server/add.php?ファイル= temp&data = 23.4; 99809 HTTP / 1.0 \ r \ n \ r \ n 

次に、CSVファイルの内容を示します。
  1418069433; 23.4; 99809
 1418069443; 23.4; 99811
 1418069453; 23.4; 99818
 1418069464; 23.4; 99801 

各行には、タイムスタンプ、温度、および圧力がパスカルで表示されます。

グラフィカル出力


すべてを美しく見せるために、サーバー上で他の形式のデータ表示を整理できます。 Highchartsをチャート/グラフのライブラリとして使用しようとしました。 それを使用すると、この設計を行うことができます。
画像
これはライブグラフではなく、外観のスクリーンショットです。 ライブビューでは、グラフがリンク( 温度圧力)で表示できます。
UPD:両方のグラフを1ページに結合しました: 温度/圧力

ファイル


参照資料

Source: https://habr.com/ru/post/J245411/


All Articles