2008-09-22 14 views
9

owfsをインストールしましたが、iButton temperature loggerからデータを読み取ろうとしています。owfsを使用してiButton温度ロガーを読み取るにはどうすればよいですか?

owfs私はヒューズファイルシステムとしてiButtonをマウントでき、すべてのデータを見ることができます。私はデータにアクセスする最良の方法が何であるかを考え出すのに困っている。私は個々の読みをcatによって得ることができます。 cat onewire/{deviceid}/log/temperature.1ですが、onewire/{deviceid}/log/temperature.ALLファイルが「壊れています」(histogram/temperature.ALLが問題なく大きすぎる可能性があります)。

すべてのファイルを読むためのpythonスクリプトはうまくいくようですが、非常に時間がかかります。それを行うより良い方法はありますか?誰にも例がありますか?

私はUbuntu 8.04を使用していて、Javaの「one wire viewer」アプリケーションを実行できませんでした。

更新は:owpython(owfsでインストール)を使用して、私は現在の温度を取得することができますが、記録されたログへのアクセスを取得する方法を見つけ出すことはできません。

>>> import ow 
>>> ow.init("u") # initialize USB 
>>> ow.Sensor("/").sensorList() 
[Sensor("/81.7FD921000000"), Sensor("/21.C4B912000000")] 
>>> x = ow.Sensor("/21.C4B912000000") 
>>> print x.type, x.temperature 
DS1921   22 

x.logAttributeErrorを与えます。

答えて

2

私は賢い方法はないと思います。 owpythonはAPIのドキュメントからの指示をサポートしていません。私は/procがあなたの最も安全な賭けだと思います。おそらく、owpythonモジュールのソースを見て、それがどのように動作するかを調べることができます。

+0

私はドキュメンテーション文字列以外の任意のドキュメントを見つけることができませんでした。他に何かありますか? – Tom

3

私もowfsに問題がありました。私はそれが単純な問題であることを強調した解決策であることを発見しました。今私は問題なしでDigiTempコードを使用しています。私はそれが柔軟で信頼できるものであることを発見しました。例えば、私は、ログ・ファイル内の室内の温度、私はそれをuntar、ソースファイルをダウンロードして、次のことをやったそのポイントに到達するには

/usr/local/bin/digitemp_DS9097U -c /usr/local/etc/digitemp.conf \ 
    -q -t0 -n0 -d60 -l/var/log/temperature 

を実行して、毎分を格納します。

# Compile the hardware-specific command 
make ds9097u 
# Initialize the configuration file 
./digitemp_DS9097U -s/dev/ttyS0 -i 
# Run command to obtain temperature, and verify your setup 
./digitemp_DS9097U -a 
# Copy the configuration file to an accessible place 
cp .digitemprc /usr/local/etc/digitemp.conf 

設定ファイルを手作業で編集して自分の設定に合わせました。これが終わったのです。

TTY /dev/ttyS0 
READ_TIME 1000 
LOG_TYPE 1 
LOG_FORMAT "%b %d %H:%M:%S Sensor %s C: %.2C F: %.2F" 
CNT_FORMAT "%b %d %H:%M:%S Sensor %s #%n %C" 
HUM_FORMAT "%b %d %H:%M:%S Sensor %s C: %.2C F: %.2F H: %h%%" 
SENSORS 1 
ROM 0 0x10 0xD3 0x5B 0x07 0x00 0x00 0x00 0x05 

私の場合、私は/etc/init.d/digitempファイルも作成し、起動時に実行できるようにしました。

#! /bin/sh 
# 
# System startup script for the temperature monitoring daemon 
# 
### BEGIN INIT INFO 
# Provides: digitemp 
# Required-Start: 
# Should-Start: 
# Required-Stop: 
# Should-Stop: 
# Default-Start: 2 3 5 
# Default-Stop: 0 1 6 
# Description: Start the temperature monitoring daemon 
### END INIT INFO 

DIGITEMP=/usr/local/bin/digitemp_DS9097U 
test -x $DIGITEMP || exit 5 

DIGITEMP_CONFIG=/root/digitemp.conf 
test -f $DIGITEMP_CONFIG || exit 6 

DIGITEMP_LOGFILE=/var/log/temperature 

# Source SuSE config 
. /etc/rc.status 

rc_reset 
case "$1" in 
    start) 
     echo -n "Starting temperature monitoring daemon" 
     startproc $DIGITEMP -c $DIGITEMP_CONFIG -q -t0 -n0 -d60 -l$DIGITEMP_LOGFILE 
     rc_status -v 
     ;; 
    stop) 
     echo -n "Shutting down temperature monitoring daemon" 
     killproc -TERM $DIGITEMP 
     rc_status -v 
     ;; 
    try-restart) 
     $0 status >/dev/null && $0 restart 
     rc_status 
     ;; 
    restart) 
     $0 stop 
     $0 start 
     rc_status 
     ;; 
    force-reload) 
     $0 try-restart 
     rc_status 
     ;; 
    reload) 
     $0 try-restart 
     rc_status 
     ;; 
    status) 
     echo -n "Checking for temperature monitoring service" 
     checkproc $DIGITEMP 
     rc_status -v 
     ;; 
    *) 
     echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload|reload}" 
     exit 1 
     ;; 
esac 
rc_exit 
+0

情報をお寄せいただきありがとうございますが、DS1922Tに保存されているログにアクセスするのに役立つとは思いません。私はowpythonまたはowfsを使って現在の温度を読み取ることができます。これは、私が苦労している格納された測定値にアクセスするだけです。 – Tom

関連する問題