
このメモを書いている過程ですでに、記事が登場しました: オンライン温度制御を備えたWinteringサボテン 。 当初、彼は彼らが先を行くことを恐れていましたが、解決される問題はどちらの場合も近いですが、実装は根本的に異なります。
結果のシステムのアーキテクチャを図に示します:

ご覧のとおり、クライアント部分はマイクロコントローラーに完全に実装されています。 システムは、あらゆるニーズに合わせて簡単に拡張およびカスタマイズできます。
装置
長い間アイドル状態だったKeil MCB2300は、顧客のベースとして採用されました。 このボードはLPC2368マイクロコントローラーをベースにしており、かなり古いですが(現時点では代わりにLPC1768を使用する方が合理的です)、必要なものがすべて詰め込まれています。 ボードにはイーサネットインターフェイスがあり、この場合は世界への窓口です。 I 2 Cインターフェースを介して接続されたBMP085は、昔からよく知られていましたが、データソースとして使用されました。

サーバーをテストし、HTTP要求の動作をチェックするソフトウェアは、Win32アプリケーションの一部として作成されました。

その後、同じロジックがマイクロコントローラーに渡されました。 現在、要求は特定のIPアドレスに宛てられていますが、DNSクライアントを使用することをお勧めします。 理論的には、ホスティングオペレーターはそのアドレス空間内でサイトを転送できます。 NTPクライアントを追加して、タイムスタンプ付きでデータをサーバーにすぐに送信することもできます。
このプロジェクトは、マイクロコントローラーでTCP / IPプロトコルを使用する最初のテストです。 この例は、EasyWebに基づいています。EasyWebは、Ethernetを最初のボードとする多くのボードに提供されています。 メインプログラムサイクルは曲がっていたことがわかりましたが、私はそれをとかしたくありません。 必要な機能は既に実装されていますが、このアプリケーションの内部構造がより気に入っているため、このアプリケーションをuIPスタックに転送したいと思います。
プログラムのメインサイクル:
- センサーからデータを読み取ります。
- 接続を開きます。
- HTTP GET要求をサーバーに送信します。
- 10秒が経過し、サーバーと通信するためのプロトコルが経過していない場合、タイムアウトにより接続が切断されます。
- 1〜5分待っています。 この待機により、データ保存間隔が設定されます。

サーバー
サーバー部分は共有ホスティングにデプロイされました。 それの主な要件:PHPサポート。 データはCSVファイルとして保存されます。 スクリプトは可能な限りシンプルで、機能は2つのファイルに分かれています。
- add.php-ログファイルにデータを追加するスクリプト。 書き込み用のファイル名と書き込み用のデータを持つデータパラメーターを取得します。 スクリプトの最初の列はタイムスタンプを追加します。 また、ログファイルをクリアできるクリア機能もあります。
- get.php-ログファイルのデータを表示します。 ファイル名を持つ唯一のファイルパラメータを取得します。
すべてのデータは、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ページに結合しました: 温度/圧力 。