2

私は現在、インターネットに接続された温度センサーから定期的に更新されるデータを保存するために使用したいと思っていたMySQLデータベースを持っています。

現在、開いたときに現在の気温と現在のタイムスタンプを取得してデータベースのエントリとして追加するページがありますが、5秒ごとにページを更新せずにそれを行う方法を探していました。

詳細:データはArduinoイーサネットから取得され、IPアドレスに送信されます。現在、cURLを使用してIPからデータを取得し、タイムスタンプを追加してDBに保存しています。明らかに、ページが更新されたときにのみ更新されます(PHPを使用します)。

これがデータのライブフィードです-http://wetdreams.org.uk/ChrisProject/UI/live_graph_two.html

TL; DR-基本的に、IPからデータを取得してMySQLに投稿するには仲介者が必要です

編集:すべてのアドバイスをありがとう。少し混乱するかもしれませんが、私は(理想的には)コンピューターがまったくオンになっていない(データベースを含むサーバーを除く)ソリューションを探しています。長期間(数週間)にわたってデータを保存することを検討しているので、データを設定し、サーバー(またはArduino)で実行中のスクリプトを残して、一時データを取得してデータベースに送信したいと思います。

私の頭の中には、サーバー上に自動的に(ブラウザーを開いたり、タイマー以外のプロンプトを表示したりせずに)PHPスクリプトを呼び出すページが必要です。

それが物事をクリアすることを願っています!

4

5 に答える 5

2

ArduinoEtherenetClientを使用してarduinoからWebサーバーに直接投稿できます(例を取得するにはリンクをクリックしてください)

POST /insertData.php--insertData.phpで使用$_POST["tempCaptured"]して一時値を取得し、それをdbに挿入します。

ArduinoEthernetClientの使用に関する優れた記事http://interactive-matter.eu/how-to/arduino-http-client-library/

于 2012-04-04T10:49:03.920 に答える
1

このURLを一定の間隔でpingするコード(ping.php)を記述します。

次に、このコードを一定の間隔で実行するcronジョブを設定します。

あなたのcronは0 */2 * * * PATH_TO_{ping.php} // will run every 2 hours

ping.phpファイルはライブフィードに接続し、データを取得して結果をデータベースに保存します。

于 2012-04-04T10:50:28.240 に答える
0

この場合、最善の解決策は、Arduinoを使用してPHPスクリプトにリクエストを投稿することでした。このスクリプトは、その処理を実行し、取得した値をデータベースに追加しました。私が今それを実行している方法は(簡単にするために)、EthernetClientを使用してArduinoからのGETリクエストを使用することです。

コード:

char server[] = "www.example.com";

if(client.connect(server, 80)){
  client.println("GET /test.php?input_val=99 HTTP/1.0");
  client.println("HOST: www.example.com");
}

ただし、データが独立したサーバー/ IP *に投稿されたという事実に基づいてすでにWebサイトを構築しているため、cronを使用してタスクをスケジュールすることにしました。この場合、5〜10秒ごとにDBを更新したいと思いました。しかし、私は他の誰かのサーバーに便乗しているので、サーバーの所有者に連絡して、毎分「/mysubdir/cron_update.php」を呼び出すcronジョブを設定するように依頼しました(cronが呼び出すことができる最速)。そこから少し「ScriptCeption」を実行し、PHPスクリプト内で、スクリプトを終了する前に10秒ごとに1分間呼び出しを完了しました。

私を助けてくれたすべての人に感謝します。技術的にはすべての人が正しかったので、これを完全な回答と説明としてここに投稿します。

于 2012-04-05T07:36:14.793 に答える
0

JavaScriptを使用してページを自動更新できます

<script type="text/javascript">
    function timedRefresh(timeoutPeriod) {
        setTimeout("location.reload(true);", timeoutPeriod);
}
</script>

より良い解決策は、ajaxを使用して、バックグラウンドで定期的に日付をデータベースに送信することです。

もう1つの方法は、PHP-CLIスクリプトを使用して、センサーから値を自動的に取得するcronジョブでスクリプトをスケジュールすることです。

于 2012-04-04T10:48:20.660 に答える
0

私が問題を理解していれば。5秒ごとにWebページを更新するための交換が必要ですか?
データを取得していませんか?

私はajax接続をセットアップし、phpを一種の無限ループで実行させます。新しいデータをJavaScriptにエコーバックして、グラフを更新します。PHPループでは、最終的にスクリプトを閉じるためにタイムアウトチェックを行う必要があります。

于 2012-04-04T10:49:51.580 に答える