Search this site :


April 2008 : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

« 桜咲く2008 |メイン| 紅茶とフレーバーティーの硝酸イオン濃度 »

ネットワーク放射温度計で計測実験開始
準備のできたネットワーク放射温度計を使って、簡単なデータ取得の実験をしてみます。 実験の目標はWEBサーバのタスクで、定期的にネットワークを経由して温度を取得して、WEBサーバに蓄積することです。
1.WEBサーバのLINUX環境を使う
2.定期的にTELNET経由でデータを取得し、ファイルに保存。
3.WEBから読み出してグラフや表を出力する
というポイントを押さえて実験していきましょう。

まず、今回使用しているシリアル・ネットワークコンバータはPort10001でTELNETサーバが動いています。
このPortにアクセスすれば、RS-232Cで接続された計測器と通信することになります。TELNETなどはLINUXではデフォルトで入っていますので、これを利用します。
WEBサーバから手動でTELNETを使って、他のサーバなどにアクセスするのは簡単ですが、自動処理となるとちょっと工夫が必要です。
さて、IPアドレスが 192.168.13.171 でPort 10001にアクセスするには、Unixのシェルで


telnet 192.168.13.171 10001

と実行すればOKです。これだけで、計測器にアクセスできますので、あとはそれぞれ計測コマンドを打てばOKです。
WindowsでもTLENETは入っていますので、同じように使えます。



さて、このようにtelnetでアクセスした際には、ユーザ名やパスワード、そしてコマンド等を入力する必要があります。定期的に処理をするには、このような処理を自動化しないといけません。
そこで、そういったTELNETなどキャラクタベースのコマンドモードでの自動処理を簡単に実現できるソフトウエアにEXPECTというものがあります。

expectのホームページ http://expect.nist.gov/

昔、モデムを使ったパソコン通信で「オートパイロット」を使って、NIFTYや日経MIXなど複数のパソコン通信サイトにアクセスし、掲示板を一括ダウンロード!、などの経験の
ある方もいらっしゃるかもしれません。このEXPECTというものは、その「オートパイロット」をUnixの標準入力などに対して設定できる便利なソフトウエアです。
サーバからプロンプトとして出される username: や password: などを受け取るとそれに応じて、ユーザ名やパスワードを出力してくれるのです。
今回は計測器に接続して放射温度計に対して温度を取得するコマンドである「:」を出力し、そのデータをファイルに保存します。

まず、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を実行。'が出力されたら温度を取得する:を出力。
現状の設定では:がエコーバックされるので、それをまって、標準出力をONにして、温度を出力。
24.5 C などと出力されますので、Cを待って終了。

という処理です。このスクリプトをit_temp.exp として保存しておき、実行フラグを設定しておきます。

さて、これに計測時間も付け加えて、ファイルに保存するために以下のPHPのスクリプトを使いました。
もちろん、上記のEXPECTのスクリプトに手を加えても可能ですが、ここでは手馴れたPHPで処理をしてみました。
(といっても4行ですが...。)



$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 に毎分計測した温度データが蓄積されます。




IPさえ繋がってさえいれば、どんな遠隔地のデータでも取得できます。きっと、月の上や火星の計測器にもきっとIPが振られているのでしょう。
やがて、そんなIPが公開されて、火星の気温や映像がだれでもリアルタイム(火星との通信時間はかかりますが)で取得できる時代がくるのでしょうね。


Category 放射温度計 | April 07, 2008 | 投稿者 admin : 02:39 PM | コメント (0)


コメント
この記事に関するコメントはこちらから




保存しますか?

(書式を変更するような一部のHTMLタグを使うことができます)

Recent Entries

categories
Comments

Links


copyright gaiasensor.org. all rights reserved.