|
準備のできたネットワーク放射温度計を使って、簡単なデータ取得の実験をしてみます。
実験の目標はWEBサーバのタスクで、定期的にネットワークを経由して温度を取得して、WEBサーバに蓄積することです。 1.WEBサーバのLINUX環境を使う 2.定期的にTELNET経由でデータを取得し、ファイルに保存。 3.WEBから読み出してグラフや表を出力する というポイントを押さえて実験していきましょう。 まず、今回使用しているシリアル・ネットワークコンバータはPort10001でTELNETサーバが動いています。 |
telnet 192.168.13.171 10001 |
と実行すればOKです。これだけで、計測器にアクセスできますので、あとはそれぞれ計測コマンドを打てばOKです。 WindowsでもTLENETは入っていますので、同じように使えます。 |
|
expectのホームページ http://expect.nist.gov/ 昔、モデムを使ったパソコン通信で「オートパイロット」を使って、NIFTYや日経MIXなど複数のパソコン通信サイトにアクセスし、掲示板を一括ダウンロード!、などの経験の まず、EXPECTを使って簡単な放射温度計IT-550のデータを取得するスクリプトを書いてみましょう。 |
#! /usr/bin/expect -- set timeout 10 log_user 0 #log_file it.log spawn telnet 192.168.13.171 10001 expect "'." send ":\r" expect ":" log_user 1 expect "C" |
|
簡単に説明しますと、タイムアウトは10秒、LOGの標準出力はOFFにしておいて telnetを実行。'が出力されたら温度を取得する:を出力。 という処理です。このスクリプトをit_temp.exp として保存しておき、実行フラグを設定しておきます。 さて、これに計測時間も付け加えて、ファイルに保存するために以下のPHPのスクリプトを使いました。 |
$day = `date +"%Y%m%d %H:%M:%S"`; $day = chop($day); $temp = `/root/it_temp.exp`; echo "$day $temp"; |
|
さて、定期的なファイルの実行にはUnixの場合CRONを使います。CRONはもっとも細かくて1分間に一度の処理しかできませんが、一般的な環境計測であれば十分な間隔かと思います。 定期的に実行する処理を記述するCRONTABは以下のように書いてみました。 |
* * * * * root /root/get_it_temp.php >> /root/it_temp.log 2>&1 |
|
これでit_temp.log に毎分計測した温度データが蓄積されます。 |
|
|