2008-09-22 7 views
9

मैंने owfs स्थापित किया है और iButton temperature logger से डेटा को पढ़ने का प्रयास कर रहा हूं।iButton तापमान लॉगर पढ़ने के लिए मैं owfs का उपयोग कैसे करूं?

owfs मुझे iButton को फ़्यूज़ फ़ाइल सिस्टम के रूप में माउंट करने देता है और मैं सभी डेटा देख सकता हूं। मुझे यह पता लगाने में परेशानी हो रही है कि डेटा तक पहुंचने का सबसे अच्छा तरीका क्या है। मैं cat फ़ाइलों को टिंग करके व्यक्तिगत रीडिंग प्राप्त कर सकता हूं, उदा। cat onewire/{deviceid}/log/temperature.1, लेकिन onewire/{deviceid}/log/temperature.ALL फ़ाइल "टूटा हुआ" है (संभवतः बहुत बड़ा है, histogram/temperature.ALL ठीक काम करता है)।

सभी फ़ाइलों को पढ़ने के लिए एक अजगर स्क्रिप्ट काम करने लगती है लेकिन बहुत लंबा समय लगता है। इसे करने का कोई बेहतर तरीका है? क्या किसी के पास कोई उदाहरण है?

मैं उबंटू 8.04 का उपयोग कर रहा हूं और जावा "एक तार दर्शक" ऐप चलाने के लिए नहीं मिला।

अद्यतन: 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.log एक AttributeError देता है।

उत्तर

2

मुझे नहीं लगता कि एक चालाक तरीका है। ओपीपीथन एपीआई दस्तावेज से कहने का समर्थन नहीं करता है। मुझे लगता है कि /proc आपकी सबसे सुरक्षित शर्त है। शायद owpython मॉड्यूल के स्रोत पर एक नज़र डालें और जांचें कि क्या आप यह पता लगा सकते हैं कि यह कैसे काम करता है।

+0

मैं docstrings अलावा अन्य किसी भी दस्तावेज़ प्राप्त करने के सक्षम नहीं था। क्या कुछ और है? – Tom

3

मुझे ओउएफएस के साथ भी समस्याएं आई हैं। मैंने इसे एक साधारण समस्या के बारे में एक अतिरंजित समाधान पाया। अब मैं बिना किसी समस्या के DigiTemp कोड का उपयोग कर रहा हूं। मैंने इसे लचीला और भरोसेमंद पाया। उदाहरण के लिए, मैं

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

चल उस बिंदु मैं स्रोत फ़ाइल, untarred इसे डाउनलोड किया और फिर निम्न तक पहुंच बनाने के द्वारा एक लॉग फ़ाइल हर मिनट में कमरे के तापमान की दुकान।

# 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

2

ठीक है मैंने अभी ibuttons को देखना शुरू कर दिया है और अजगर का उपयोग करना चाहते हैं।

यह अधिक आशाजनक दिखता है:

http://www.ohloh.net/p/pyonewire

संबंधित मुद्दे

 संबंधित मुद्दे