ログイン

04
8月

USB温度・湿度計【その2】

Written by チキチキ. USB温度・湿度計【その2】 はコメントを受け付けていません Posted in: Linux
Tagged with
Posted Date : 2010-08-04

ハードの動作は確認できたので、早速自宅サーバーに接続してみます。
$dmesg
[ 892.572636] usb 1-3.1: new low speed USB device using
ehci_hcd and address 9
[ 892.686423] usb 1-3.1: configuration #1
chosen from 1 choice
[ 892.690561] generic-usb 0003:1774:1001.0006: hiddev96,hidraw1:
USB HID v1.00 Device [Strawberry Linux Co.,Ltd.
Hygrometer/Thermometer] on usb-0000:00:12.2-3.1/input0

USB HIDデバイスとして認識されてます。
次に、USBRH driver for Linuxを素直にインストールして、
USBRHを抜き差しても、usbrhドライバがロードされず、
USB HIDのドライバがロードされます。

トラブルシューティングの
「USBRH ドライバではなく USB HID ドライバがロードされてしまっている」
に該当している様です。
指示通りにドライバのUSB HIDのアンロードを行っても解決しません。
早速ググってみると 「USBRH driver for Linux を CentOS 5 で使う」
と言うページに問題点と解決策が詳しく載っていました。
ご指示の通り実行すると無事に解決しました。
$cat /proc/usbrh/0/status
t:31.67 h:48.86

おお!採れた!ここまで来ればもう大丈夫。

ここから先は、WEBページに表示する為の作業ですので、ご参考までに….
5分毎に温度・湿度を計測してWEBページに表示させるスクリプトを書きます。

#!/bin/bash
WEBPAGE=/var/www/html/Temperature.html
echo “<body style=\”text-align: center;color:#C1DDA6;background-color
:#394233;font-size:small;font-style:normal\”>” > $WEBPAGE
if [ -f /proc/usbrh/0/status ]; then
  PRINTWORK=cat /proc/usbrh/0/status | awk -F" |:" '{print "N:"$2":"$4}'
  TEMP=echo $PRINTWORK | cut -d ":" -f 2
  HUMI=echo $PRINTWORK | cut -d ":" -f 3
  echo “
<span style=\”color: #ff9900;\”>" >> $WEBPAGE
  echo 気温 : $TEMP℃ >> $WEBPAGE
  echo "<br>" >> $WEBPAGE
  echo 湿度 : $HUMI% >> $WEBPAGE
  echo "</span>" >> $WEBPAGE
else
  echo 気温 : --- >> $WEBPAGE
  echo "<br>" >> $WEBPAGE
  echo 湿度 : --- >> $WEBPAGE
fi
echo "</body>" >> $WEBPAGE

これで出力されたHTMLファイルを、ウエジットのテキストに
インラインフレームとして取り込みます。
<META http-equiv="refresh" content="30">
<a href="https://rabbitrider.net/grasshopper/cam/cam1.html">
<img src="cam/webcam.jpg" border="0" alt=""
width="160" height="120"></a>
<iframe src="http://gothmog.ddo.jp/Temperature.html" scrolling="no"
frameborder=0 width=160 height=60></iframe>
<BR>
60秒間隔で自動更新
<BR>
画像クリックで詳細画面


これで、右上のWEBカメラの下に温度と湿度が表示されました。
しかし....
温度・湿度は測位点ではなく測位変動を見る事が肝要かな?
と思ってグラフ化してみました。
「乾燥の気になる季節、部屋に湿度計を導入」と言うページに
同じ事を行っている方がいらっしゃいましたので参考にさせて頂きました。
まずは、RRDToolのインストールとRRDファイルの作成をします。
設定は、
300秒間隔でデータ取得。
600秒データが取得できないとエラー。
300秒間隔の平均値を1200個。
1時間(300秒×12)毎の最小値・最大値・平均値を30000個。

#yum install rrdtool
#rrdtool create /var/www/html/usbrh.rrd \
--step 300 \
DS:temperature:GAUGE:600:-10:90 \
DS:humidity:GAUGE:600:0:100 \
RRA:AVERAGE:0.5:1:1200 \
RRA:MIN:0.5:12:30000 \
RRA:MAX:0.5:12:30000 \
RRA:AVERAGE:0.5:12:30000

次に、先ほどのスクリプトにRRDファイルの更新とグラフ出力を追加します。

#!/bin/bash
WEBPAGE=/var/www/html/Temperature.html
LANG=C
DIR=/home/grasshopper/public_html/cam

echo "<body style=\"text-align: center;color:#C1DDA6;background-color
:#394233;font-size:small;font-style:normal\">" > $WEBPAGE

if [ -f /proc/usbrh/0/status ]; then
  PRINTWORK=cat /proc/usbrh/0/status | awk -F" |:" '{print "N:"$2":"$4}'
  TEMP=echo $PRINTWORK | cut -d ":" -f 2
  HUMI=echo $PRINTWORK | cut -d ":" -f 3
  echo "
<span style=\”color: #ff9900;\”>
" >> $WEBPAGE
  echo 気温 : $TEMP℃ >> $WEBPAGE
  echo "<br>" >> $WEBPAGE
  echo 湿度 : $HUMI% >> $WEBPAGE
  echo "</span>" >> $WEBPAGE
else
  echo 気温 : --- >> $WEBPAGE
  echo "<br>" >> $WEBPAGE
  echo 湿度 : --- >> $WEBPAGE
fi
echo "" >> $WEBPAGE

rrdtool update $DIR/usbrh.rrd $PRINTWORK
rrdtool graph $DIR/usbrh.png \
--width 540 \
--height 120 \
--imgformat PNG \
--vertical-label "C / %RH" \
DEF:temperature=$DIR/usbrh.rrd:temperature:AVERAGE \
LINE2:temperature#FF3000:"temperature[C]" \
GPRINT:temperature:LAST:%.2lf \
DEF:humidity=$DIR/usbrh.rrd:humidity:AVERAGE \
LINE2:humidity#307FFF:"humidity[%RH]" \
GPRINT:humidity:LAST:%.2lf \
> /dev/null

これで以下の様なグラフが表示されました。



参考にさせて頂いた、先人の方々に感謝!感謝!です。

Similar Posts:

Protected Image