Search this site :


June 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
放射温度計

ネットワーク放射温度計で計測実験(2)
さて、実際に温度の計測とグラフ化を行なってみましょう。前回用意したしくみを使って、放置したお湯の温度の低下を計測してみましょう。 ポットで沸かしたお湯を室内に放置し、その温度の変化を記録します。

10:35から12:53の間で、一分毎に全部で135回計測しました。
PHP+EXPECTを使って、実際には約1kmほど離れたところにあるデータセンタのWEBサーバからVPNを使って、実験室まで接続して計測しました。今回はVPNを使ってLOCALIPで接続していますが、もちろん環境さえ許せば、インターネット上のGLOBALIPを使っても計測可能です。

さて、このデータを早速グラフにしてみましょう。
グラフを書くには色々な方法があり、このGAIASENSORでも既に紹介していますPHPlotというものが便利です。

http://www.gaiasensor.com/archives/2006/04/post_17.html


/*
IT-550のネットワーク化実験1
データのグラフ化
*/
#初期設定
ini_set('error_reporting', 0);
ini_set('display_errors', 'off');
//Include the code
include('./phplot/phplot.php');
#データファイル読み込み
$filename ="it_temp.log";
$data=file("$filename");
#温度データの取り出し
$plot_data = array();
foreach ( $data as $id => $value ) {
$values = split(" ",$value);
$plot_data[]=array("",$values[3]);
}
//Define the object
$graph = new PHPlot(200,200);
$graph->SetPlotType('lines');
$graph->SetTitle("IT-550");
$graph->SetXTitle("min");
$graph->SetYTitle('degrees');
$graph->SetPlotType('lines');
$graph->SetBackgroundColor(array(255,230,230));
$graph->SetVertTickIncrement(5);
$graph->SetXTickIncrement(20);
#グラフ最大値、最小値の指定
$graph->SetPlotAreaWorld(0,20,140,80);
$graph->SetDataValues($plot_data);
$graph->DrawGraph();




とれも綺麗な放物線を描いて、温度が下がってきているのが判ります。身近な物理現象もグラフにしてみると不思議な、そして美しい情報が隠れているものですね。

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

放射温度計

ネットワーク放射温度計で計測実験開始
準備のできたネットワーク放射温度計を使って、簡単なデータ取得の実験をしてみます。 実験の目標は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)

放射温度計

放射温度計をインターネットに繋ごう!!
ホリバの放射温度計IT-550はシリアル(RS232C)経由でPCに接続してデータを保存できることは以前ご紹介した。
参考:放射温度計がやってきた!!
232C接続でのデータ計測は便利だが、ケーブルの長さに限りがあることや、計測用のPCが必要になるなど、遠隔地のデータを取るにはちょっと不便な部分もある。そこで、今回は一歩進んでPCを使わずに、ネットワークに接続したい。これがうまくいけば、インターネット経由で遠隔地のデータを簡単に、収集・管理できる。目的は、九州・宮崎の芋畑の温度管理、そしてさらにうまくいけば、畑のCO2(二酸化炭素)濃度の計測をネットワーク経由で行う予定だ。 ということで、使えそうな機材をいろいろと探したが、一番便利そうだったのが、LANTRONIX社製のXportという部品をつかった LCNV-232RXだ。
このXportはとてもよく出来た部品で、RS232Cなどのデータを、ほとんどそのままネットワーク経由で取得できるようになる。おまけに、ネットワーク上にこの機器を使って接続された計測機器を、LOCALのPCのCOMポートでアクセスできるようなドライバまでついている。
つまり、現在のRS232Cに対応したアプリケーションをそのままで、ネットワーク対応として使うことができるのだから、正直「驚き」である。 現在、ガイアセンサプロジェクトでは遠隔地の計測用のPCに、ネットワーク越しにVNCなどでアクセスし、管理をしているが、ネットワーク自体がエラーの場合や、停電などからの復旧の際に面倒なことが多い。 場合によっては遠隔地まで飛行機に乗って、あるいは船に乗って出かけていく必要がある。ところが、この機器を使うと、PCは不要となり、管理、メンテナンスも楽になる。とくにPCは夏の高温、湿気、あるいは場所によっては虫などの影響を受けやすく、またノートPCなどを使ってもある程度の設置スペースが必要だ。野外計測などの場合、このようなRS232C=>イーサネットというメディア変換機はとても便利だ。 さて、早速この機器を入手して放射温度計(IT-550L)に繋いでみた。
232Cのケーブルはクロスケーブルなので注意。 設定は通信速度の設定が接続する計測器に合わせて必須な程度で、簡単に繋がってしまう。 放射温度計IT-550のアダプターとは2400BPSで通信するので、その設定をLCNV-232RXのWEBから行なう。


TELNET経由でアクセスしてみた。ホリバの放射温度計は「:」を送信することで、温度を返すしくみになっている。さて、実際の画面を示す。




というように簡単にネットワーク化が完了だ。あとは、ネットワーク経由でデータを取得するアプリケーションを作れば、目的はほぼ完了だ。

なお、この機器と同じような機能を持つキットが販売されている。テスト用としても、あるいは簡単な実験用にも十分使える。
製品の半額くらいなので、ちょっと試して見たい方はトライしてみたらいかがだろう。筆者も組み立ててみたが、半田ごてに慣れている人であれば30分もかからない。
【参考】組み立てキットの販売元:若松通商



Category 放射温度計 | April 01, 2008 | 投稿者 admin : 06:49 PM | コメント (0)

放射温度計

PHSと放射温度計(まとめ)
放射温度計(HORIBA IT-550)をPHS W-ZERO3[es] に接続する際に気をつけるべき点と、今回開発する際に使わせていただき、とても役に立った幾つかのソフトウエアの紹介を改めてしておこう。 ●232usb ZERO3のUSB HOST機能を生かして、シリアルデバイスを接続するドライバ。今回、これのおかげでいろいろと計測器を接続することができた。非常に有能なドライバだ。

●24Term
今回、USB経由でRS-232cのシリアル接続を試み、その接続検証などに使わせていただいた。いろいろネットワークが進化しても、最初はまずシリアル通信から。そんなときにとても便利なソフトウエアだ。
図では、COM2で232usbで作成されたシリアルデバイスが認識されいているようすを示した。



232usbと24Termは以下で公開されている。
http://www.softclub.jp/zoro/ce/
ZERO氏に感謝。

●PHSの画面をPCから操作できる PocketVNC
http://www.pocketvnc.com/projects/pocketvnc/index.php
私は仕事の中でもVNCというソフトウエアを良く利用する。リモートデスクトップの一つだが、対応しているOSがWindows、MacそれにLinux、おまけに今回MobileWindowsでもサーバ、クライアントともに動くのでとても便利だ。
私は普段Windowsから遠隔地のMacやLinuxなどにアクセスするのにとても重宝している。また、Windows上でマニュアルなどのドキュメントを書く際に、他のOSの画面を参照しながら、必要であればスナップショットがとれるのはとても便利だ。
VNC、そしてPocketVNCの作者の方々に感謝したい。



なお、PHSとWindowsPCをUSBケーブルで接続して、ActiveSyncを使うが、この際にUSB経由でTCP/IPの接続が作られているようだ。
今回は、この接続とPocketVNCを利用してZERO3の画面を取り込んでいる。




上記 169.254.2.2 が私の環境でWindowsPCに振られたIP。ZERO3は、この状態で169.254.2.1 に割り振られていた。


Category 放射温度計 | August 07, 2007 | 投稿者 admin : 11:10 AM | コメント (0)

放射温度計

W-ZERO3[es]で232Cから取り込んだデータをWEBサーバへ転送

前回までで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で温度データを表示した例を示しておく。
IT-WEB.JPG
このようにウイルコムのSmartPhone ES007SH、W-ZERO3[es]は、USBホスト機能もあり、比較的容易に外部の計測機器と接続することが可能だ。計測データをネットワーク上に転送したいが、PCを設置するスペースが無いといったような場合にZERO3とても有力なツールとなるのではないだろうか。 最後に実際にZERO3でデータを放射温度計から取得しているときの画面のスナップショットを掲載しておく。
IT-ES.JPG


Category 放射温度計 | July 31, 2007 | 投稿者 admin : 11:48 PM | コメント (0)

放射温度計

W-ZERO3[es]での232Cからデータを取り込む方法

今回は実際にW-ZERO3[es]を使って、データをCOMポートから取り込む部分を作成してみたい。W-ZERO3[es]では、COM1は内蔵のモデムになっており、USBドライバを組み込むとCOM2として認識された。
☆USBドライバはこちらのものを使わせていただきました。 http://www.softclub.jp/zoro/ce/

今回作成するプログラムはデータを保存するファイル名を引数として受け取り、RS-232Cポート(COM2)から読み出したデータを保存する関数が基本となっている。計測した結果のデータはローカルファイルに保存すると同時にネットワークを経由してWEBサーバにも保存する。
データを保存後、指定された時間後に再度データを読み込む設定をして、232cポートを閉じる。

以上の処理をするプログラムをTcl/Tkで作成した。データの保存、再度実行する部分はこれから作成する予定だ。

proc disptemp {logfile} {
	#時刻を取得
	set now [clock seconds]
	set now [clock format $now -format {%Y-%m-%d %H:%M:%S}]
	#com2を232cという名前で開く
	set 232c [open {com2:} w+ ]
	#232cのポートの通信条件を設定
	fconfigure $232c -mode 2400,n,8,1 -timeout 100 -handshake none
	#232cに接続された温度計にコマンド「:」をおくり温度データを出力
	puts $232c ":"
	#232cポートをフラッシュして、データを温度計に確実に送信
	flush $232c
	#データを取得した場合には保存する処理を実行
	while {[gets $232c data] >= 0} { 
		#データを保存
		# ローカルファイルに保存
		# ネットワーク上へ保存
	}
	#予定された時間後に再度実施する設定
	#232cポートを閉じる
	close $232c
}

さて、プログラムを作成した際に、苦労した点を纏めておこう。

1.ポートの名前は com2: この「:」が必要なので注意すること。
2.ポートを開いて、出力しても、温度計にデータが渡らない。
flash コマンドでデータを書き出すこと。

この関数は disptemp $fout のような形で呼び出し、使用することになる。
データは、保存すると同時にデータをテキストエリア text に表示する。
またインターネット上へのデータの転送は、WEBサーバのCGIへデータを渡し、サーバ側でデータを保存することにする。このあたりに付いては次回説明したい。


Category 放射温度計 | July 20, 2007 | 投稿者 admin : 08:03 AM | コメント (0)

放射温度計

eTcl/Tkで温度データを取り込もう



2007年は7月に入ってから、九州で大雨が続いている。宮崎に置いてあるウエザーバケットは、太陽電池による発電が出来ない為か、データの取得が出来ていないようだ。
さて、先月からウイルコムのSmartPhone ES007SH、W-ZERO3[es] を計測用の端末するために、簡単なソフトウエアを開発している。前回も書いたように、開発には簡単にGUIが作成できる eTcl/Tk を採用した。 http://www.evolane.com/software/etcl/index.html eTcl/Tk というのは Tclというスクリプト言語の一つで、Perlと同じようにコンパイルを必要とせず、その場でアプリケーションを実行できるのが特徴だ。 さらにTkというGUIを簡単に構築できるライブラリが実装されており、比較的短時間でWindowsアプリケーションを作成できる。 eTcl/Tkは、WindowsPC版、Mac版、WindowsMobile版などがリリースされており、基本的な開発をWindowsPCで行うことができる点が特徴である。 また、今回は外部機器をRS-232C経由で接続することが目的なので、この言語が外部入力、通常Windowsでは com1 などといわれる comport に対応している点が選択したおおきな理由でもある。

それでは、早速eTcl/Tkを使ってアプリケーションの開発にあたって、簡単なスケッチを書いてみよう。

1.RS-232Cからデータを読み込む
2.データをファイルに保存する
3.同時にネットワーク上にデータを転送
4.1.からを定期的に(5分に一度程度)繰り返す

というように、今回のアプリは大きく3つの部分で構成される。

では、各部分をもう少し、具体的に見ていこう。

1.RS-232Cから定期的(5分に一度程度)データを読み込む

COMポートをClose
データを読み出すコマンド「 : +改行コード」を出力
温度計からデータ、たとえば「24.5 C」が出力されるのでこれを読み出し
COMポートをClose

2.データをファイルに保存
Fileを追加書き込みノードでOpenし、データを書き込む
FileをClose

3.ネットワーク上にデータを転送
別途用意したWEBサーバにGET形式でデータを転送
例:www.gaiasensor.com?temp=23.5
上記のようなURLへアクセスする。
なお、インターネット上のURLのアクセスには
httpパッケージが公開されている
eTcl/Tk http パッケージ
なお、このコマンドを使うときには、プログラムの冒頭で、以下の宣言が必要。
package require http

4.1.からを定期的に(5分に一度程度)繰り返す
定期的に繰り返すには、通常RepeatコマンドがTclにはあるのだが、どうもeTclには実装されていない。
そこで、一定時間後に処理を実行する After コマンドを使うことにした。

このスケッチを元にプログラムを作成するわけだが、その前にGUIの設計を簡単にしておこう。

今回は、データを[es]で読み込めるかを確認するのが、主な目的なので、GUIは極めてシンプルにしたい。必要な要素は以下で十分であろう。

1.計測を開始するボタン
2.計測結果を表示するテキストエリア
3.アプリケーションの終了ボタン

場合によっては、起動してすぐ実行を開始するのであれば1.は不要かもしれないが、作業の準備など、アプリは起動しているが、データの取り込みはしたくない場合もあるので、つけることにした。
Tkのコマンドを記載しておこう。今回は最低限度の要素を並べただけだ。

#2007.06.28
#堀場製作所放射温度計のデータをウイルコムのSmartPhone ES007SHで取り込もう!
#

#$fout は出力ファイルハンドル
#スタートボタン定義
button .start -text {TempRead} -command {
disptemp $fout
#disptempがデータ取り込みプロシージャ
}
pack .start

#データを表示するテキストエリア
text .text -width 25 -height 15
pack .text

#終了ボタン
button .b2 -text {END} -command {
close $fout
exit
}
pack .b2


さて、アプリケーションの実際のGUIをWindows上で確かめてみよう。


IT-ES.JPG

次回は、このGUIに上記のプログラムスケッチにしたがって、eTcl/Tkを使って実際の処理を埋め込んでいく予定だ。

Category 放射温度計 | July 07, 2007 | 投稿者 admin : 08:53 AM | コメント (0)

放射温度計

PHSと放射温度計


久々に放射温度計での計測を行いたい。今回はウイルコムのSmartPhone ES007SH、W-ZERO3[es] に堀場製作所の放射温度計IT-550を接続して、温度のモニタリングを計画している。 目標は、[es]と放射温度計を農場に設置して、定期的に地表面、あるは葉の表面の温度を計測することだ。PHSと温度計を接続することで、LAN環境が無い場所でのテレメトリを用意にすることができれば、と思う。
ご承知のようにW-ZERO3[es] にはUSBホスト機能があり、標準的なUSBの機器を接続可能だ。 今回、USBのドライバとしては以下のZORO氏のものを使わせていただいた。

http://www.softclub.jp/zoro/ce/


写真1 接続した機器 
IT-ES.JPG
放射温度計はRS-232Cでの接続が可能である。詳しくは
http://www.gaiasensor.com/archives/2006/04/post_25.html
を参照されたい。
ということで、あとは[es]の準備ができればOKのはず。
まず、温度計などの外部シリアル機器をESにUSBで接続するには、RS-232cのドライバが必要だ。幸いこれはすでに公開されているドライバがあり、これを使わせていただく。

http://www.softclub.jp/zoro/ce/

次にUSB機器を[es]に接続する際に必要となるUSBホストケーブルだが、これは量販店で入手できるTYPE A のUSBのコネクタの変換ケーブルを使った。

シリアル-USBケーブルは、以前にも使ったPCI のURS-03を使用した。一般的なシリアル-USBケーブルでも問題なく使えると思う。

さて、これらのケーブル、デバイスドライバを使って[es]で温度を取り込み、メールあるいはFTPなどネットワーク経由でデータをインターネット上のサーバへ保存することを行ってみようと考えている。

開発環境としては今回 eTcl を考えている。WindowsMobile上で簡単にGUIのアプリケーションが作成できること、また今回のように外部機器を接続して、そのデータを取り込む際には必須の外部入出力に対応していることから eTcl を採用した。
WindowsPC版も出ており、基本的な開発をPCで済ませてしまえることも魅力の一つだ。

さて、どのようなアプリケーションが出来上がるのか、お楽しみに!!

Category 放射温度計 | June 28, 2007 | 投稿者 admin : 11:15 AM | コメント (0)

放射温度計

放射温度計サーバ

以前紹介したネットワーク温度計はIP接続が可能で、インターネットを使えば遠隔地からも簡単に温度の監視が可能だ。また、無線LANを使えば温室内などの設置も容易となる。
そこで、放射温度計が接続されているPCに簡易サーバを構築し、ネットワーク経由でいつでもデータを取得できるようにしてみた。








放射温度計がRS-232Cで接続されているPCは、現在は10分毎にデータを取得、テキストファイルにデータを保存している。そこで、このPCにサーバプログラムを設置し、クライアントからの要求に応じて、温度データを取得、クライアントに送信するプログラムを作成した。
データを取得するプログラム自信は、このサーバプログラムには組み込まず、これまで使っているものを利用している。
Windows 向けのActivePerlで作成している。

☆サーバプログラム

use IO::Socket;
$port = 80; # 最近のWindwowsでは変なポートを使うと動作しないので注意

$listening_socket = IO::Socket::INET->new(LocalPort => $port,
Listen => SOMAXCONN,
Proto => 'tcp',
Reuse => 1,
);

if ( ! $listening_socket ){
die "listen できませんでした。 $!\n";
}
print "ポート $port を見張ります。\n";
while (1){
$new_socket = $listening_socket->accept();

$client_sockaddr = $new_socket->peername();
($client_port,$client_iaddr) = unpack_sockaddr_in($client_sockaddr);
$client_hostname = gethostbyaddr($client_iaddr, AF_INET);
$client_ip = inet_ntoa($client_iaddr);

print "接続: $client_hostname($client_ip) ポート $client_port\n";

select($new_socket); $|=1; select(STDOUT);

while (<$new_socket>){
print "入力コマンド:$_";
if ($_) {
$mes = `perl get_data2.pl`;
print $mes;
print $new_socket "$mes";
}
$new_socket->close();
}
print "接続が切れました。引き続きポート $port を見張ります。\n";
}
#【参考】http://x68000.q-e-d.net/~68user/net/module-1.html

☆クライアントプログラム

use IO::Socket; # IO::Socket モジュールを使う。
# ホスト名とポート番号を設定
$host = "192.168.XX.XX";
$port = 80;

$mes = "get_data";

print "$host:$port に接続します。\n";

$socket = IO::Socket::INET->new(PeerAddr => $host,
PeerPort => $port,
Proto => 'tcp',
);
if ( ! $socket ){
die "接続できませんでした。 $!\n";
}
# 文字列を送信
print "送信メッセージ: $mes\n";
print $socket "$mes\n";
$socket->flush();

# 文字列を受信
while ( <$socket> ) {
print "$_";
}

$socket->close();

#【参考】http://x68000.q-e-d.net/~68user/net/module-1.html


上記サーバプログラムをPCで起動して、クライアントからアクセスがあったときの様子。



上記クライアントを別のPCで起動し、無事放射温度計のデータを取得できた。


Category 放射温度計 | August 11, 2006 | 投稿者 admin : 07:32 AM | コメント (0)

放射温度計

1週間の壁温と気温の記録

2006年5月8日から14日までの一週間の測定記録をまとめてみた。
水色が壁温、緑が気温、黄色は日照量であり、日照量は5月12日13:40の0.42MJ/m^2が最大だった。

今回のグラフの改良点は、X軸に日時が記載できるようになった点と、計測が出来なかった時の抜けは飛ばしてプロットするようにした点だ。これまで、計測の抜けがあると、その分ずれて表示されていたのでその修正をした。この計測抜けは測定しているPCと温度計との通信が出来ない場合に起こるが、ウエザーバケットは本体にメモリがあるので発生しないので、便利である。放射温度計もフィールド計測タイプではメモリ機能があるようだ。
5/12正午頃から気温、壁温は下がる一方だった。昨日(5/13)は気温はずっと下がえりつづけ12℃まで下がったようだ。気温、壁温とも今朝からようやく上昇をはじめたようだ。気温の方が上昇率が早く、逆転しような感じだ。

さて、この壁温と気温のグラフだが、WEBから表示したいデータの範囲などを指定するプログラムを作ろうと思う。もし、表示したいデータやグラフのフォーマットなどアイデアがあれば、ぜひコメントでお知らせいただきたい。可能な限りアイデアを取り入れたいと思うのでよろしく。

Category 放射温度計 | May 14, 2006 | 投稿者 admin : 08:42 AM | コメント (0)

放射温度計

壁面温度の気温の逆転

2006.05.10は暑かった。天気は今ひとつなのだが、気温は最高で23℃近くに、そのときの湿度も76.7%だった。外を歩いていると、汗ばみとても不快だった。
因みに不快指数という言葉があるが、以下の式で算出されるらしい。

不快指数(DI) = 0.81T + 0.01U(0.99T - 14.3) + 46.3
T :気温(℃)
U :相対湿度(%)

上記の数字だと、不快指数は72程度で「快適」らしいのだが....。ちょっと意外な結果である。

さて、今日の壁面温度と気温の変化は面白い関係が見られた。

日照量が一番多い13時50分前から、気温が急に上昇をはじめ、壁面温度を越して上昇をした。一方壁面温度は、気温を追いかけるようにじわじわと上昇をはじめ、日が翳り始めた16時ごろには、すでに下がり始めた気温を越して上昇して、気温よりも高くなるという現象が見られた。この記事を書いている、午後10時でも気温は20度あり、夕食を食べているときは、ちょっと汗ばむ感じだった。


Category 放射温度計 | May 10, 2006 | 投稿者 admin : 10:02 PM | コメント (0)

放射温度計

壁面温度と気温のちがい(その3)

引き続き、壁面温度と気温との関係を調べている。
まず、06年5月3日のその後の温度変化をグラフにしたのがこれだ。

 06年5月3日の気温と壁面温度

5月3日の13時から翌日7時までの気温と壁面温度の変化を示したものである。
水色が壁面温度で、グリーンが気温である。壁面温度より気温の方が数度低い状態で推移している。気温は明け方に一段と冷え込んでいる様子がよくわかる。


06年5月5日の気温と壁面温度、日照量

一方、もう一つのグラフは、5月5日の朝6時から夜10時までの気温、壁面、そして日射量(黄色)をプロットしたものである。日射量のメモリが表示されていないが、最大が午後13:30の0.41MJ/m^2であった。
なお、このグラフはpHPLOTで作成したものをpHOTOSHOPで手を加えたものだ。
pHPPLOTで第二Y軸を設定する方法がみつからない。ちょっとお粗末だが、ご勘弁を。

Category 放射温度計 | May 05, 2006 | 投稿者 admin : 10:09 PM | コメント (0)

放射温度計

壁面温度と気温のちがい(その2)

2006年5月3日は連休の後半の初日だ。天気はよく晴れ上がったが、気温をちょっと低めの一日だった。
さて、今日の壁面温度と気温との関係を観測した結果がこのグラフだ。



2006年5月3日2:30から20:30までの壁面及び気温の変化

ご覧のように測定開始後240分後(6時30分)くらいから気温が上昇しはじめ、壁面温度も上昇をし始める。ウエザーバケットの「バケットメイト」によると、この付近の日の出は4:48なので、日の出のあと2時間くらいから気温上昇がはじまったようだ。
さて、早朝は壁面の温度は気温より2,3度高く、もっとも低いときで13℃くらいだ。これは建物中の温度が影響しているのかもしれない。壁面温度は450分後(10:00)くらいから急に上昇をはじめる。気温に比べ急な上昇だ。これは、この時間から、直射日光があたり始めたためと考えられる。気温も上昇し最高気温は19.3℃(12:40)であった。いったん、気温が下がるが、また一度上昇するというパターンは、この観測地点の隣にあるビルのため、日光が当たらない時間があるためであろう。実際、今日は10:50から13:10までは日が当たっていない。
気温より5℃ほど高い壁面の温度が、この後、夜間にどのように変化するかが気になる。加えて日射と壁面温度と気温の関係も気になる。次回は、日射量のデータもこのグラフに加えて表示してみたいと思う。

さて、今日は本当に過ごしやすい一日であった。散歩していたら、とても気分の良い木陰が観測地点のそばにあったので、そこから見上げた写真をお見せしよう。PCのデスクトップの壁紙としてでもお使いいただきたい。



2006年5月3日正午頃の木陰
壁紙用1600x1200のイメージはこちら

Category 放射温度計 | May 03, 2006 | 投稿者 admin : 08:40 PM | コメント (2)

放射温度計

放射温度計がやってきた!!

ウエザーバケットに続いて、「放射温度計」がアグリセンサの事務局にやってきた。
今回使うことになったのは堀場製作所のIT-550という製品だ。詳細は以下のWEBサイトをご覧頂きたい。
http://www.jp.horiba.com/analy/it-550_series/it-550_series_01.htm
放射温度計ってなんでしょう?簡単に言うと『放射温度計は、「触れずに測れる」不思議な温度計なのです。私たちの身の回りのすべてのものは、その温度に対応した波長の赤外線がでています。この赤外線をとらえ温度に変換してものの表面温度を表示するのが放射温度計です。』ということだそうです。詳しくはHORIBAの「放射温度計プラザ」をごらんください。

さて、この放射温度計を使って、都市の温暖化の原因の一つと言われているビルの壁面温度を測定して、気温の上昇とどのような違いがあるかを観測してみたい。
ということでウエザーバケットと同じようにPCに繋いでデータをWEBで公開する。




放射温度計のスイッチ、表示画面
放射温度計をオプションの拡張キットでRS-232Cに変換する。また、連続的に測定するためACアダプタを接続する。RS-232Cケーブルはクロスのものが必要だ。
放射温度計の底部にはRJ-45のコネクタがあるが、これはRS-232Cの出力ポートで、残念ながらLANポートではない。
カメラ用の三脚が使える。これをつかって、ベランダに設置し、PCと接続して壁面温度のモニタリングを行う予定。

さて、私のPCには232Cポートは1つしかなく、これはすでにウエザーバケットで使われている。そこで、今回はUSB<=>232C変換アダプタを使って、PCに接続した。
マニュアルを読むと放射温度計は2400ボーで接続するらしい。そして「:」を送信すると、測定したデータを送り返してくる使用になっている。そこで、テストとして、普段はLinuxにネットワーク経由でアクセスするときに使っているTERATERMを使って放射温度計にアクセスしてみた。

放射温度計にTERATERMでアクセスし「:」を送信した結果。(図では4回送信している。)
通信速度の設定。久しぶりのシリアルポートの設定だ。私はパソコン通信以来で、なんだか懐かしい。

これで、PCと放射温度計の通信はOK。あとは定期的にデータを取り込むプログラムを作って、WEBサーバへ転送するだけだ。データをテキストファイルでウエザーバケットと同じディレクトリに書き出せば、あとはウエザーバケットのデータといっしょに転送される。
今日の夜から放射温度計でデータを測定し始めたので、明日以降、気温とビルの壁面温度との関係を分析していこうと思う。

Category 放射温度計 | April 25, 2006 | 投稿者 admin : 11:00 PM | コメント (0)

Recent Entries

categories
Comments

Links


copyright gaiasensor.org. all rights reserved.