前回まででW-ZERO3[es]で、放射温度計のデータを232C経由で取得することが確認できたので、次はこのデータをインターネット経由で、WEBサーバへ転送する。
まず、[es]で動作するeTcl/Tkでは以下のようなURLを読み込む関数を利用する
#関数httpを使うには package http を宣言する必要がある
package require http
#データをWEBに保存する関数 getURL
proc getURL {url} {
set token [::http::geturl $url]
}
|
これを前回のプログラムのデータを保存する部分に記述する
while {[gets $232c data] >= 0} {
puts -nonewline $logfile "$now $data"
.text insert 0.0 "$now $data\n"
set url "http://www.gaiasensor.com/log.php?text=$now_$data"
#ここで上記の関数を読み出し、WEB上へデータを保存
getURL {$url}
}
|
上記で、放射温度計で計測したデータを[es]で取り込みWEBへ転送することができるようになった。
さて、WEBサーバでもデータを受け取る為に、つぎのようなプログラムをlog.php として用意しておく必要がある。
このプログラムは次のような形式のURLでlog.php?text=xxxxxxとして渡された文字列をファイルに保存するプログラムである。
引数でcmdを渡された場合には、保存してあるデータをファイルから読み出し100件表示する。
/*
2007.07.01 T.NAGATOMO
log.php ITの温度データの保存・表示用
dataの保存 log.php?text=xxxxx
dataの表示 log.php?cmd=1
*/
#HTMLの調整
header ("Content-Type: text/html; charset='SJIS'");
error_reporting(E_ALL);
#使用変数の取り込み
import_request_variables("gP", "rv_");
$cmd = $rv_cmd;
#日付の取得
$now = date('Y-m-d H');
$year = date('y');
$mon = date('m');
$day = date('d');
#データを保存するファイル名 it_0707.log 形式
$filename ="/var/tmp/it_$year$mon.log";
$text = $rv_text;
if ($text) {
`echo $text >> /var/tmp/it_$year$mon.log`;
#データをブラウザ出力する。実際には不要かも
echo mb_convert_encoding($text,"SJIS","EUC-JP");
}
if ($cmd) {
#cmdを指定されたら、データから最新100件を表示
$data = array_slice(file($filename), -100, 100);
$data = join("",$data);
echo $data;
}
|
|
※上記のプログラムはWEBでデータ保存することを説明する為の基本的なプログラムです。実際にお使いになるときにはセキュリティーなどを十分考慮して、適切な対策を組み込んだ上でご使用ください。
|
|
実際にデータをサーバに転送した後に、WEBで温度データを表示した例を示しておく。
|
|
|
このようにウイルコムのSmartPhone ES007SH、W-ZERO3[es]は、USBホスト機能もあり、比較的容易に外部の計測機器と接続することが可能だ。計測データをネットワーク上に転送したいが、PCを設置するスペースが無いといったような場合にZERO3とても有力なツールとなるのではないだろうか。
最後に実際にZERO3でデータを放射温度計から取得しているときの画面のスナップショットを掲載しておく。
|
|