私がしたいこと:
Arduino と Apache Web サーバー間の接続を監視し、Web ブラウザーで最終オンライン時間と共に「オンライン」または「オフライン」を表示します。
私はそれを行う方法:
私の Arduino は、HTTP POST を使用してheartbeat.phpにハートビートを送信しています。heartbeat.phpの冒頭で、セッション変数を設定し、現在のタイムスタンプを MySQL データベースに保存してから、index.phpにリダイレクトします。
ハートビート.php
<?php
session_start();
$_SESSION['hb'] = 1;
include("connect.php");
$link=connection();
$sql="UPDATE heartbeat SET time=NOW() WHERE 1";
mysql_query($sql,$link);
header("Location: index.php");
?>
index.phpの JavaScript は、自動更新を実行し、 healthcheck.phpを HTML 本文コンテンツにロードします。
<script>
$(document).ready(function() {
var refreshId = setInterval(function() {
$("#content").load("healthcheck.php");
}, 1000);
$.ajaxSetup({ cache: false });
});
</script>
healthcheck.phpでは、スクリプトはセッション変数をチェックして、システムがオンラインかどうかを判断します。システムがオフラインの場合、最後のオンライン時間を照会し、ブラウザーに表示します。
healthcheck.php
<?php
session_start();
include("connect.php");
if(isset($_SESSION['hb']))
{
echo '<h1>System Online!!!</h1>';
unset($_SESSION['hb']);
}
else
{
echo '<h1>System Offline!!!</h1>';
$link=connection();
$result=mysql_query("SELECT * FROM heartbeat", $link);
while($row=mysql_fetch_array($result))
{
printf("Last Online: %s", $row["time"]);
}
}
?>
問題:
PCのブラウザでlocalhost/heartbeat.phpをブラウズすると、最終オンライン時間表示で「オフライン」になる前に「オンライン」と表示されます。これがArduinoを使用して達成したいことです。
ただし、Arduino でスクリプトをテストすると、常に「オフライン」と表示され、更新間隔に従って最後のオンライン時間が更新されます。
これは、セッション変数がarduino自体に設定されているためだと思います。私のPCのブラウザはそれを取得できず、常に「オフライン」と表示されます。間違っている場合は修正してください。
このオンライン監視機能を効果的な方法で実現するためのアドバイスや提案を探しています。どんな提案でも大歓迎です。